Compare commits
12 Commits
8a62c5280c
...
main
Author | SHA1 | Date | |
---|---|---|---|
4d04b14349 | |||
f93d2a6558 | |||
cd7428e975 | |||
914a103b10 | |||
0b8154037e | |||
cf31104779 | |||
e21550bc6f | |||
9ceb9dbd33 | |||
0e6199ab8b | |||
6c35aed2c6 | |||
50bd201ece | |||
e088ea533f |
8
.gitignore
vendored
8
.gitignore
vendored
@ -10,4 +10,12 @@ home/default/.config/mpd/mpd.state
|
|||||||
home/default/.config/gtk-3.0/bookmarks
|
home/default/.config/gtk-3.0/bookmarks
|
||||||
home/default/.config/zsh/.zcompdump
|
home/default/.config/zsh/.zcompdump
|
||||||
home/default/.local/bin/start-tasks
|
home/default/.local/bin/start-tasks
|
||||||
|
home/default/.local/sec
|
||||||
home/default/.config/newsboat/urls
|
home/default/.config/newsboat/urls
|
||||||
|
home/default/.config/doom/bookmarks
|
||||||
|
home/default/.config/doom/custom.el
|
||||||
|
home/default/.config/doom/config/+priv-config.el
|
||||||
|
home/default/.config/sway/priv
|
||||||
|
home/default/.config/river/init-priv
|
||||||
|
home/default/.doom.d/bookmarks
|
||||||
|
home/default/.doom.d/custom.el
|
||||||
|
1252
docs/instructions.html
Normal file
1252
docs/instructions.html
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,343 +0,0 @@
|
|||||||
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
|
||||||
|
|
||||||
;; Place your private configuration here! Remember, you do not need to run 'doom
|
|
||||||
;; sync' after modifying this file!
|
|
||||||
|
|
||||||
|
|
||||||
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
|
||||||
;; clients, file templates and snippets. It is optional.
|
|
||||||
(setq user-full-name "John Doe"
|
|
||||||
user-mail-address "john@doe.com")
|
|
||||||
|
|
||||||
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
|
||||||
;;
|
|
||||||
;; - `doom-font' -- the primary font to use
|
|
||||||
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
|
||||||
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
|
||||||
;; presentations or streaming.
|
|
||||||
;; - `doom-unicode-font' -- for unicode glyphs
|
|
||||||
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
|
||||||
;;
|
|
||||||
;; See 'C-h v doom-font' for documentation and more examples of what they
|
|
||||||
;; accept. For example:
|
|
||||||
;;
|
|
||||||
(setq doom-variable-pitch-font (font-spec :family "Libertinus Serif" :size 13))
|
|
||||||
;;(setq doom-variable-pitch-font (font-spec :family "DejaVu Serif" :size 13))
|
|
||||||
;;
|
|
||||||
|
|
||||||
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
|
||||||
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
|
||||||
;; refresh your font settings. If Emacs still can't find your font, it likely
|
|
||||||
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
|
||||||
|
|
||||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
|
||||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
|
||||||
;; `load-theme' function. This is the default:
|
|
||||||
;(setq doom-theme 'doom-tomorrow-night)
|
|
||||||
;(setq doom-theme 'doom-one)
|
|
||||||
;(setq doom-theme 'doom-wilmersdorf)
|
|
||||||
;(setq doom-theme 'doom-plain-dark)
|
|
||||||
;(setq doom-theme 'doom-feather-dark)
|
|
||||||
;(setq doom-theme 'doom-monokai-ristretto)
|
|
||||||
|
|
||||||
;(setq doom-theme 'doom-plain)
|
|
||||||
(setq doom-theme 'doom-flatwhite)
|
|
||||||
|
|
||||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
|
||||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
|
||||||
(setq display-line-numbers-type t)
|
|
||||||
|
|
||||||
;; If you use `org' and don't want your org files in the default location below,
|
|
||||||
;; change `org-directory'. It must be set before org loads!
|
|
||||||
(setq org-directory "~/notebook/")
|
|
||||||
|
|
||||||
|
|
||||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
|
||||||
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
|
||||||
;;
|
|
||||||
;; (after! PACKAGE
|
|
||||||
;; (setq x y))
|
|
||||||
;;
|
|
||||||
;; The exceptions to this rule:
|
|
||||||
;;
|
|
||||||
;; - Setting file/directory variables (like `org-directory')
|
|
||||||
;; - Setting variables which explicitly tell you to set them before their
|
|
||||||
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
|
||||||
;; - Setting doom variables (which start with 'doom-' or '+').
|
|
||||||
;;
|
|
||||||
;; Here are some additional functions/macros that will help you configure Doom.
|
|
||||||
;;
|
|
||||||
;; - `load!' for loading external *.el files relative to this one
|
|
||||||
;; - `use-package!' for configuring packages
|
|
||||||
;; - `after!' for running code after a package has loaded
|
|
||||||
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
|
||||||
;; this file. Emacs searches the `load-path' when you load packages with
|
|
||||||
;; `require' or `use-package'.
|
|
||||||
;; - `map!' for binding new keys
|
|
||||||
;;
|
|
||||||
;; To get information about any of these functions/macros, move the cursor over
|
|
||||||
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
|
||||||
;; This will open documentation for it, including demos of how they are used.
|
|
||||||
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
|
||||||
;; etc).
|
|
||||||
;;
|
|
||||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
|
||||||
;; they are implemented.
|
|
||||||
|
|
||||||
(after! org
|
|
||||||
|
|
||||||
;;; agenda files
|
|
||||||
(setq org-agenda-files '("~/housekeeping/calendar.org"
|
|
||||||
"~/notebook/ag/"
|
|
||||||
"~/notebook/refile.org"
|
|
||||||
"~/notebook/notes/events/birthdays.org"))
|
|
||||||
|
|
||||||
|
|
||||||
(setq org-log-done 'time)
|
|
||||||
|
|
||||||
(use-package! org-journal
|
|
||||||
:init
|
|
||||||
(setq org-journal-dir "~/diary"
|
|
||||||
org-journal-date-prefix "#+TITLE: "
|
|
||||||
org-journal-time-prefix "+ "
|
|
||||||
org-journal-date-format "%a, %Y-%m-%d"
|
|
||||||
org-journal-file-format "%Y-%m-%d.org"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(use-package! org-books
|
|
||||||
:init
|
|
||||||
(setq org-books-file "~/notebook/readinglist.org")
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
;; NOTIFICATIONS CONFIGURATION REFERENCE
|
|
||||||
;;; note : it's probably better to add this after
|
|
||||||
;;; setting org-agenda-files.
|
|
||||||
;;; use this under (!after org ...
|
|
||||||
;;; else it would't work
|
|
||||||
;
|
|
||||||
;(use-package! org-wild-notifier
|
|
||||||
; :defer t
|
|
||||||
; :init
|
|
||||||
; (add-hook 'doom-post-init-hook (org-wild-notifier-mode))
|
|
||||||
; :config
|
|
||||||
; (setq alert-default-style 'libnotify)
|
|
||||||
;;; set to libnotify or notifications or osx-notifier
|
|
||||||
; (setq org-wild-notifier-alert-time '(60 30))
|
|
||||||
;;; alert time defaults to '(10) if not set
|
|
||||||
; (setq org-wild-notifier-keyword-whitelist nil))
|
|
||||||
; (setq org-wild-notifier-keyword-blacklist '("DONE"))
|
|
||||||
|
|
||||||
|
|
||||||
(use-package! org-wild-notifier
|
|
||||||
:defer t
|
|
||||||
:init
|
|
||||||
(add-hook 'doom-post-init-hook (org-wild-notifier-mode))
|
|
||||||
:config
|
|
||||||
(setq alert-default-style 'libnotify)
|
|
||||||
(setq org-wild-notifier-alert-time '(10 0))
|
|
||||||
(setq org-wild-notifier-keyword-whitelist nil))
|
|
||||||
(setq org-wild-notifier-keyword-blacklist '("DONE"))
|
|
||||||
|
|
||||||
;; org-roam configurations
|
|
||||||
(use-package! org-roam
|
|
||||||
:ensure t
|
|
||||||
:custom
|
|
||||||
(setq org-roam-directory "~/notebook/roam/")
|
|
||||||
:config
|
|
||||||
(org-roam-setup))
|
|
||||||
|
|
||||||
(setq org-roam-capture-templates
|
|
||||||
'(("d" "default" plain "%?"
|
|
||||||
:target (file+head "%<%Y%m%d%H%M%S>-${slug}.org"
|
|
||||||
"#+title: ${title}\n")
|
|
||||||
:unnarrowed t)
|
|
||||||
|
|
||||||
;; main things
|
|
||||||
("l" "literature" plain "%?"
|
|
||||||
:if-new
|
|
||||||
(file+head "literature/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
|
||||||
:immediate-finish t
|
|
||||||
:unnarrowed t)
|
|
||||||
("p" "permanent" plain "%?"
|
|
||||||
:if-new
|
|
||||||
(file+head "permanent/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
|
||||||
:immediate-finish t
|
|
||||||
:unnarrowed t)
|
|
||||||
("f" "fleeting" plain "%?"
|
|
||||||
:if-new
|
|
||||||
(file+head "fleeting/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
|
||||||
:immediate-finish t
|
|
||||||
:unnarrowed t)
|
|
||||||
|
|
||||||
;; other categories
|
|
||||||
("r" "reference" plain "%?"
|
|
||||||
:if-new
|
|
||||||
(file+head "reference/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
|
||||||
:immediate-finish t
|
|
||||||
:unnarrowed t)
|
|
||||||
("a" "article" plain "%?"
|
|
||||||
:if-new
|
|
||||||
(file+head "articles/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n#+filetags: :article:\n")
|
|
||||||
:immediate-finish t
|
|
||||||
:unnarrowed t)))
|
|
||||||
|
|
||||||
;(cl-defmethod org-roam-node-type ((node org-roam-node))
|
|
||||||
; "Return the TYPE of NODE."
|
|
||||||
; (condition-case nil
|
|
||||||
; (file-name-nondirectory
|
|
||||||
; (directory-file-name
|
|
||||||
; (file-name-directory
|
|
||||||
; (file-relative-name (org-roam-node-file node) org-roam-directory))))
|
|
||||||
; (error "")))
|
|
||||||
|
|
||||||
;(setq org-roam-node-display-template
|
|
||||||
; (concat "${type:15} ${title:*} " (propertize "${tags:10}" 'face 'org-tag)))
|
|
||||||
|
|
||||||
;;; org-capture stuff
|
|
||||||
;;; examples: file:~/.emacs.d/modules/lang/org/config.el
|
|
||||||
; my location of the todo.org file
|
|
||||||
(setq +org-capture-todo-file "ag/todo.org")
|
|
||||||
|
|
||||||
(defvar +org-capture-refile-file "refile.org")
|
|
||||||
(setq +org-capture-refile-file
|
|
||||||
(expand-file-name +org-capture-refile-file org-directory))
|
|
||||||
; refile.org at the root of org-directory
|
|
||||||
|
|
||||||
;(add-to-list 'org-capture-templates
|
|
||||||
; '(("s" "Slipbox" entry (file "braindump/org/inbox.org")
|
|
||||||
; "* %?\n")
|
|
||||||
; ("t" "Personal todo" entry
|
|
||||||
; (file+headline +org-capture-todo-file "Inbox")
|
|
||||||
; "* [ ] %?\n%i\n%a" :prepend t)
|
|
||||||
; )
|
|
||||||
|
|
||||||
(setq org-capture-templates
|
|
||||||
'(("t" "Personal todo" entry
|
|
||||||
(file+headline +org-capture-todo-file "todo")
|
|
||||||
"* [ ] %?\n%i\n%a" :prepend t)
|
|
||||||
("T" "Personal todo (no link)" entry
|
|
||||||
(file+headline +org-capture-todo-file "todo")
|
|
||||||
"* [ ] %?\n" :prepend t)
|
|
||||||
|
|
||||||
;;; i never use this
|
|
||||||
;("n" "Personal notes" entry
|
|
||||||
;(file+headline +org-capture-notes-file "Inbox")
|
|
||||||
;"* %u %?\n%i\n%a" :prepend t)
|
|
||||||
("r" "Personal refile file" entry
|
|
||||||
(file +org-capture-refile-file)
|
|
||||||
"* %u %?\n%i\n%a" :prepend t)
|
|
||||||
|
|
||||||
;; using org-journal atm, i will likely never use this
|
|
||||||
;("j" "Journal" entry
|
|
||||||
;(file+olp+datetree +org-capture-journal-file)
|
|
||||||
;"* %U %?\n%i\n%a" :prepend t)
|
|
||||||
|
|
||||||
;; Will use {project-root}/{todo,notes,changelog}.org, unless a
|
|
||||||
;; {todo,notes,changelog}.org file is found in a parent directory.
|
|
||||||
;; Uses the basename from `+org-capture-todo-file',
|
|
||||||
;; `+org-capture-changelog-file' and `+org-capture-notes-file'.
|
|
||||||
("p" "Templates for projects")
|
|
||||||
("pt" "Project-local todo" entry ; {project-root}/todo.org
|
|
||||||
(file+headline +org-capture-project-todo-file "Inbox")
|
|
||||||
"* TODO %?\n%i\n%a" :prepend t)
|
|
||||||
("pn" "Project-local notes" entry ; {project-root}/notes.org
|
|
||||||
(file+headline +org-capture-project-notes-file "Inbox")
|
|
||||||
"* %U %?\n%i\n%a" :prepend t)
|
|
||||||
("pc" "Project-local changelog" entry ; {project-root}/changelog.org
|
|
||||||
(file+headline +org-capture-project-changelog-file "Unreleased")
|
|
||||||
"* %U %?\n%i\n%a" :prepend t)
|
|
||||||
|
|
||||||
;; reference for function: [[file:~/.emacs.d/modules/lang/org/autoload/org-capture.el::defun +org--capture-central-file (file project]]
|
|
||||||
;; Will use {org-directory}/{+org-capture-projects-file} and store
|
|
||||||
;; these under {ProjectName}/{Tasks,Notes,Changelog} headings. They
|
|
||||||
;; support `:parents' to specify what headings to put them under, e.g.
|
|
||||||
;; :parents ("Projects")
|
|
||||||
("o" "Centralized templates for projects")
|
|
||||||
("ot" "Project todo" entry
|
|
||||||
(function +org-capture-central-project-todo-file)
|
|
||||||
"* TODO %?\n %i\n %a"
|
|
||||||
:heading "Tasks"
|
|
||||||
:prepend nil)
|
|
||||||
("on" "Project notes" entry
|
|
||||||
(function +org-capture-central-project-notes-file)
|
|
||||||
"* %U %?\n %i\n %a"
|
|
||||||
:heading "Notes"
|
|
||||||
:prepend t)
|
|
||||||
("oc" "Project changelog" entry
|
|
||||||
(function +org-capture-central-project-changelog-file)
|
|
||||||
"* %U %?\n %i\n %a"
|
|
||||||
:heading "Changelog"
|
|
||||||
:prepend t)
|
|
||||||
|
|
||||||
;; org books / general logging
|
|
||||||
("b" "Book log / General log (org)" item (function org-books-visit-book-log)
|
|
||||||
"- %U %?" :prepend t)
|
|
||||||
|
|
||||||
;; zettelkasten
|
|
||||||
("s" "Slipbox" entry (file "roam/inbox.org")
|
|
||||||
"* %U %?\n")
|
|
||||||
("S" "Slipbox link" entry (file "roam/inbox.org")
|
|
||||||
"* %U %?\n %i\n %a")))
|
|
||||||
|
|
||||||
(setq org-attach-directory "~/notebook/images/attach/")
|
|
||||||
)
|
|
||||||
;;; end of (!after org ...
|
|
||||||
|
|
||||||
;;; for testing
|
|
||||||
(defun org-wild-notifier-debug ()
|
|
||||||
"Collect debug information for org-wild-notifier"
|
|
||||||
(interactive)
|
|
||||||
(save-window-excursion
|
|
||||||
(let ((org-agenda-use-time-grid nil)
|
|
||||||
(org-agenda-compact-blocks t)
|
|
||||||
(org-agenda-window-setup 'current-window)
|
|
||||||
(org-agenda-buffer-name nil)
|
|
||||||
(org-agenda-buffer-tmp-name org-wild-notifier--agenda-buffer-name))
|
|
||||||
|
|
||||||
(org-agenda-list 2)
|
|
||||||
(message "registered events: %s \n blacklist: %s \n whitelist: %s \n"
|
|
||||||
(org-wild-notifier--retrieve-events)
|
|
||||||
org-wild-notifier-keyword-blacklist
|
|
||||||
org-wild-notifier-keyword-whitelist)
|
|
||||||
|
|
||||||
(message "filtered events: %s"
|
|
||||||
(->> (org-wild-notifier--retrieve-events)
|
|
||||||
(-map 'org-wild-notifier--check-event)))
|
|
||||||
|
|
||||||
|
|
||||||
(kill-buffer))))
|
|
||||||
|
|
||||||
(defun org-wild-notifier-alert-test ()
|
|
||||||
(interactive)
|
|
||||||
(alert "test")
|
|
||||||
)
|
|
||||||
;;; end
|
|
||||||
|
|
||||||
(defun agenda/hide-daily-schedule-1 (&optional arg)
|
|
||||||
(interactive "P")
|
|
||||||
(let ((org-agenda-tag-filter-preset '("-habits")))
|
|
||||||
(org-agenda arg "a")))
|
|
||||||
(bind-key "<f5>" 'agenda/hide-daily-schedule-1)
|
|
||||||
|
|
||||||
;;; termux specific
|
|
||||||
;(setq browse-url-browser-function 'browse-url-generic
|
|
||||||
; browse-url-generic-program "termux-open")
|
|
||||||
|
|
||||||
(defun jethro/org-archive-done-tasks ()
|
|
||||||
"Archive all done tasks."
|
|
||||||
(interactive)
|
|
||||||
(org-map-entries 'org-archive-subtree "/DONE" 'file))
|
|
||||||
|
|
||||||
(require 'org-download)
|
|
||||||
(setq-default
|
|
||||||
org-download-method 'directory
|
|
||||||
;; org-download-screenshot-method "grimshot save window %s"
|
|
||||||
;; org-download-screenshot-method "wl-paste -t image/png > '%s'"
|
|
||||||
;; below script is available on dotfiles: ../.local/bin
|
|
||||||
org-download-screenshot-method "convert-paste-png.sh '%s'"
|
|
||||||
org-download-image-dir "~/notebook/images/org-download"
|
|
||||||
org-download-heading-lvl nil
|
|
||||||
org-download-timestamp "%Y%m%d-%H%M%S_")
|
|
||||||
(add-hook 'dired-mode-hook 'org-download-enable)
|
|
@ -4,6 +4,7 @@
|
|||||||
<alias>
|
<alias>
|
||||||
<family>monospace</family>
|
<family>monospace</family>
|
||||||
<prefer>
|
<prefer>
|
||||||
|
<family>DejaVu Sans Mono</family>
|
||||||
<family>Noto Sans Mono</family>
|
<family>Noto Sans Mono</family>
|
||||||
<family>Unifont-JP</family>
|
<family>Unifont-JP</family>
|
||||||
<family>Unifont Upper</family>
|
<family>Unifont Upper</family>
|
||||||
@ -12,6 +13,13 @@
|
|||||||
<family>Liberation Mono</family>
|
<family>Liberation Mono</family>
|
||||||
<family>FontAwesome</family>
|
<family>FontAwesome</family>
|
||||||
<family>Braille</family>
|
<family>Braille</family>
|
||||||
|
<family>Symbols Nerd Font Mono</family>
|
||||||
|
</prefer>
|
||||||
|
</alias>
|
||||||
|
<alias>
|
||||||
|
<family>sans-serif</family>
|
||||||
|
<prefer>
|
||||||
|
<family>Symbols Nerd Font</family>
|
||||||
</prefer>
|
</prefer>
|
||||||
</alias>
|
</alias>
|
||||||
</fontconfig>
|
</fontconfig>
|
||||||
|
@ -3,30 +3,123 @@
|
|||||||
font=monospace:size=10
|
font=monospace:size=10
|
||||||
dpi-aware=no
|
dpi-aware=no
|
||||||
pad= 8x8
|
pad= 8x8
|
||||||
|
pad= 16x16
|
||||||
[url]
|
[url]
|
||||||
launch=xdg-open ${url}
|
launch=xdg-open ${url}
|
||||||
|
|
||||||
# Catpuccin (with grey background)
|
# Tomorrow Light
|
||||||
|
##[cursor]
|
||||||
|
##color=373b41
|
||||||
|
|
||||||
|
|
||||||
|
#[colors]
|
||||||
|
#foreground=373b41
|
||||||
|
#background=ffffff
|
||||||
|
#regular0=1d1f21
|
||||||
|
#regular1=cc6666
|
||||||
|
#regular2=b5bd68
|
||||||
|
#regular3=f0c674
|
||||||
|
#regular4=81a2be
|
||||||
|
#regular5=b294bb
|
||||||
|
#regular6=8abeb7
|
||||||
|
#regular7=c5c8c6
|
||||||
|
#bright0=969896
|
||||||
|
#bright1=cc6666
|
||||||
|
#bright2=b5bd68
|
||||||
|
#bright3=f0c674
|
||||||
|
#bright4=81a2be
|
||||||
|
#bright5=b294bb
|
||||||
|
#bright6=8abeb7
|
||||||
|
#bright7=ffffff
|
||||||
|
#
|
||||||
|
#color16=#de935f
|
||||||
|
#color17=#a3685a
|
||||||
|
#color18=#282a2e
|
||||||
|
#color19=#373b41
|
||||||
|
#color20=#b4b7b4
|
||||||
|
#color21=#e0e0e0
|
||||||
|
|
||||||
|
# Tomorrow Night (grey background)
|
||||||
|
|
||||||
[cursor]
|
[cursor]
|
||||||
color=1A1826 D9E0EE
|
#color=c5c8c6
|
||||||
|
|
||||||
[colors]
|
[colors]
|
||||||
alpha=0.85
|
#alpha=0.80
|
||||||
foreground=ffffff
|
# tomorrow night default
|
||||||
background=222222
|
background=1d1f21
|
||||||
regular0=6E6C7E # black
|
#background=000000
|
||||||
regular1=F28FAD # red
|
# grey
|
||||||
regular2=ABE9B3 # green
|
#background=161616
|
||||||
regular3=FAE3B0 # yellow
|
foreground=c5c8c6
|
||||||
regular4=96CDFB # blue
|
|
||||||
regular5=F5C2E7 # magenta
|
regular0=1d1f21
|
||||||
regular6=89DCEB # cyan
|
regular1=cc6666
|
||||||
regular7=D9E0EE # white
|
regular2=b5bd68
|
||||||
bright0=988BA2 # bright black
|
regular3=f0c674
|
||||||
bright1=F28FAD # bright red
|
regular4=81a2be
|
||||||
bright2=ABE9B3 # bright green
|
regular5=b294bb
|
||||||
bright3=FAE3B0 # bright yellow
|
regular6=8abeb7
|
||||||
bright4=96CDFB # bright blue
|
regular7=c5c8c6
|
||||||
bright5=F5C2E7 # bright magenta
|
bright0=969896
|
||||||
bright6=89DCEB # bright cyan
|
bright1=cc6666
|
||||||
bright7=D9E0EE # bright white
|
bright2=b5bd68
|
||||||
|
bright3=f0c674
|
||||||
|
bright4=81a2be
|
||||||
|
bright5=b294bb
|
||||||
|
bright6=8abeb7
|
||||||
|
bright7=ffffff
|
||||||
|
|
||||||
|
|
||||||
|
# Catpuccin (with grey background)
|
||||||
|
#[cursor]
|
||||||
|
#color=1A1826 D9E0EE
|
||||||
|
#
|
||||||
|
#[colors]
|
||||||
|
##alpha=0.85
|
||||||
|
#foreground=ffffff
|
||||||
|
##background=000000
|
||||||
|
#background=222222
|
||||||
|
#regular0=6E6C7E # black
|
||||||
|
#regular1=F28FAD # red
|
||||||
|
#regular2=ABE9B3 # green
|
||||||
|
#regular3=FAE3B0 # yellow
|
||||||
|
#regular4=96CDFB # blue
|
||||||
|
#regular5=F5C2E7 # magenta
|
||||||
|
#regular6=89DCEB # cyan
|
||||||
|
#regular7=D9E0EE # white
|
||||||
|
#bright0=988BA2 # bright black
|
||||||
|
#bright1=F28FAD # bright red
|
||||||
|
#bright2=ABE9B3 # bright green
|
||||||
|
#bright3=FAE3B0 # bright yellow
|
||||||
|
#bright4=96CDFB # bright blue
|
||||||
|
#bright5=F5C2E7 # bright magenta
|
||||||
|
#bright6=89DCEB # bright cyan
|
||||||
|
#bright7=D9E0EE # bright white
|
||||||
|
|
||||||
|
# PaperColorDark
|
||||||
|
# Palette based on https://github.com/NLKNguyen/papercolor-theme
|
||||||
|
|
||||||
|
#[cursor]
|
||||||
|
# color=1c1c1c eeeeee
|
||||||
|
#
|
||||||
|
#[colors]
|
||||||
|
##alpha=0.80
|
||||||
|
# background=1c1c1c
|
||||||
|
# foreground=eeeeee
|
||||||
|
# regular0=1c1c1c # black
|
||||||
|
# regular1=af005f # red
|
||||||
|
# regular2=5faf00 # green
|
||||||
|
# regular3=d7af5f # yellow
|
||||||
|
# regular4=5fafd7 # blue
|
||||||
|
# regular5=808080 # magenta
|
||||||
|
# regular6=d7875f # cyan
|
||||||
|
# regular7=d0d0d0 # white
|
||||||
|
# bright0=bcbcbc # bright black
|
||||||
|
# bright1=5faf5f # bright red
|
||||||
|
# bright2=afd700 # bright green
|
||||||
|
# bright3=af87d7 # bright yellow
|
||||||
|
# bright4=ffaf00 # bright blue
|
||||||
|
# bright5=ff5faf # bright magenta
|
||||||
|
# bright6=00afaf # bright cyan
|
||||||
|
# bright7=5f8787 # bright white
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
# DO NOT EDIT! This file will be overwritten by LXAppearance.
|
|
||||||
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
|
|
||||||
|
|
||||||
include "/home/default/.gtkrc-2.0.mine"
|
|
||||||
gtk-theme-name="Materia-dark"
|
|
||||||
gtk-icon-theme-name="Papirus-Dark"
|
|
||||||
gtk-font-name="Sans 10"
|
|
||||||
gtk-cursor-theme-name="Adwaita"
|
|
||||||
gtk-cursor-theme-size=0
|
|
||||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH
|
|
||||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
|
||||||
gtk-button-images=1
|
|
||||||
gtk-menu-images=1
|
|
||||||
gtk-enable-event-sounds=1
|
|
||||||
gtk-enable-input-feedback-sounds=1
|
|
||||||
gtk-xft-antialias=1
|
|
||||||
gtk-xft-hinting=1
|
|
||||||
gtk-xft-hintstyle="hintfull"
|
|
22
home/default/.config/gtk-3.0/gtk.css
Normal file
22
home/default/.config/gtk-3.0/gtk.css
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* No (default) titlebar on wayland */
|
||||||
|
/*headerbar.titlebar.default-decoration {
|
||||||
|
background: transparent;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0 0 -17px 0;
|
||||||
|
border: 0;
|
||||||
|
min-height: 0;
|
||||||
|
font-size: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/* rm -rf window shadows */
|
||||||
|
/*window.csd, /* gtk4? */
|
||||||
|
/*window.csd decoration { /* gtk3 */
|
||||||
|
/* box-shadow: none;
|
||||||
|
}*/
|
||||||
|
.titlebar, .css, headerbar {
|
||||||
|
background-image:none;
|
||||||
|
background-color:transparent;
|
||||||
|
margin-top:-100px;
|
||||||
|
margin-bottom:50px;
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
[Settings]
|
|
||||||
gtk-theme-name=Materia-dark
|
|
||||||
gtk-icon-theme-name=Papirus-Dark
|
|
||||||
gtk-font-name=Sans 10
|
|
||||||
gtk-cursor-theme-name=Adwaita
|
|
||||||
gtk-cursor-theme-size=0
|
|
||||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH
|
|
||||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
|
||||||
gtk-button-images=1
|
|
||||||
gtk-menu-images=1
|
|
||||||
gtk-enable-event-sounds=1
|
|
||||||
gtk-enable-input-feedback-sounds=1
|
|
||||||
gtk-xft-antialias=1
|
|
||||||
gtk-xft-hinting=1
|
|
||||||
gtk-xft-hintstyle=hintfull
|
|
||||||
gtk-application-prefer-dark-theme=1
|
|
@ -1,7 +1,7 @@
|
|||||||
profile {
|
profile {
|
||||||
output HDMI-A-1 scale 1 mode 1366x768 position 1280,0
|
output HDMI-A-1 enable scale 1 mode 1920x1080 position 0,0
|
||||||
output DVI-D-1 scale 1 mode 1280x1024 position 0,0
|
output DVI-D-1 enable scale 1 mode 1280x1024 position 1920,0
|
||||||
}
|
}
|
||||||
profile {
|
profile {
|
||||||
output HDMI-A-1 scale 1 mode 1366x768
|
output HDMI-A-1 enable scale 1 mode 1920x1080
|
||||||
}
|
}
|
||||||
|
7
home/default/.config/kanshi/config-single
Normal file
7
home/default/.config/kanshi/config-single
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
profile {
|
||||||
|
output HDMI-A-1 enable scale 1 mode 1920x1080 position 0,0
|
||||||
|
output DVI-D-1 disable
|
||||||
|
}
|
||||||
|
profile {
|
||||||
|
output HDMI-A-1 enable scale 1 mode 1920x1080
|
||||||
|
}
|
@ -17,7 +17,7 @@ cmd open ${{
|
|||||||
*.kra|*.krz|*.ora) setsid -f krita $f >/dev/null 2>&1 && exit 0 ;;
|
*.kra|*.krz|*.ora) setsid -f krita $f >/dev/null 2>&1 && exit 0 ;;
|
||||||
*.xlsx) setsid -f libreoffice $f >/dev/null 2>&1 && exit 0 ;;
|
*.xlsx) setsid -f libreoffice $f >/dev/null 2>&1 && exit 0 ;;
|
||||||
*.sc) sc-im $f && exit 0;;
|
*.sc) sc-im $f && exit 0;;
|
||||||
*.org) setsid -f em $f >/dev/null 2>&1 && exit 0 ;;
|
#*.org) setsid -f $EDITOR $f >/dev/null 2>&1 && exit 0 ;;
|
||||||
esac
|
esac
|
||||||
case $(file --mime-type "$(readlink -f $f)" -b) in
|
case $(file --mime-type "$(readlink -f $f)" -b) in
|
||||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;;
|
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;;
|
||||||
@ -129,6 +129,3 @@ map W $setsid -f $TERMINAL >/dev/null 2>&1
|
|||||||
map Y $wl-copy < "$fx"
|
map Y $wl-copy < "$fx"
|
||||||
|
|
||||||
map <c-f> $setsid -f thunar . ; kill @#
|
map <c-f> $setsid -f thunar . ; kill @#
|
||||||
|
|
||||||
# Source Bookmarks
|
|
||||||
source "~/.config/lf/shortcutrc"
|
|
||||||
|
@ -53,7 +53,8 @@ case "$(file --dereference --brief --mime-type -- "$1")" in
|
|||||||
mediainfo "$1";;
|
mediainfo "$1";;
|
||||||
text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
|
text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
|
||||||
text/troff) man ./ "$1" | col -b ;;
|
text/troff) man ./ "$1" | col -b ;;
|
||||||
text/* | */xml | application/json) bat -p --terminal-width "$(($4-2))" -f "$1" ;;
|
text/* | */xml | application/json) highlight --out-format=ansi --width "$(($4-2))" "$1" ;;
|
||||||
|
#text/* | */xml | application/json) bat -p --terminal-width "$(($4-2))" -f "$1" ;;
|
||||||
audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
|
audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
|
||||||
video/* )
|
video/* )
|
||||||
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
map Ccac cd "/home/default/.cache"
|
|
||||||
map Ccf cd "/home/default/.config"
|
|
||||||
map CD cd "/home/default/Downloads"
|
|
||||||
map Cd cd "/home/default/Documents"
|
|
||||||
map Cdt cd "/home/default/.local/share"
|
|
||||||
map Crr cd "/home/default/.local/src"
|
|
||||||
map Ch cd "/home/default"
|
|
||||||
map Cm cd "/home/default/Music"
|
|
||||||
map Cmn cd "/mnt"
|
|
||||||
map Cpp cd "/home/default/Pictures"
|
|
||||||
map Csc cd "/home/default/.local/bin"
|
|
||||||
map Csrc cd "/home/default/.local/src"
|
|
||||||
map Cvv cd "/home/default/Videos"
|
|
||||||
map Ebf $$EDITOR "/home/default/.config/shell/bm-files"
|
|
||||||
map Ebd $$EDITOR "/home/default/.config/shell/bm-dirs"
|
|
||||||
map Ecfx $$EDITOR "/home/default/.config/x11/xresources"
|
|
||||||
map Ecfs $$EDITOR "/home/default/.config/sway/config"
|
|
||||||
map Ecfb $$EDITOR "/home/default/.config/waybar/config"
|
|
||||||
map EcfB $$EDITOR "/home/default/.config/waybar/style.css"
|
|
||||||
map Ecfv $$EDITOR "/home/default/.config/nvim/init.vim"
|
|
||||||
map Ecfz $$EDITOR "/home/default/.config/zsh/.zshrc"
|
|
||||||
map Ecfa $$EDITOR "/home/default/.config/shell/aliasrc"
|
|
||||||
map Ecfp $$EDITOR "/home/default/.config/shell/profile"
|
|
||||||
map Ecfm $$EDITOR "/home/default/.config/mutt/muttrc"
|
|
||||||
map Ecfn $$EDITOR "/home/default/.config/newsboat/config"
|
|
||||||
map Ecfu $$EDITOR "/home/default/.config/newsboat/urls"
|
|
||||||
map Ecfmb $$EDITOR "/home/default/.config/ncmpcpp/bindings"
|
|
||||||
map Ecfmc $$EDITOR "/home/default/.config/ncmpcpp/config"
|
|
||||||
map Ecfl $$EDITOR "/home/default/.config/lf/lfrc"
|
|
||||||
map EcfL $$EDITOR "/home/default/.config/lf/scope"
|
|
||||||
map EcfX $$EDITOR "/home/default/.config/nsxiv/exec/key-handler"
|
|
@ -1,21 +1,26 @@
|
|||||||
|
|
||||||
[Default Applications]
|
[Default Applications]
|
||||||
|
|
||||||
# xdg-open will use these settings to determine how to open filetypes.
|
# xdg-open will use these settings to determine how to open filetypes.
|
||||||
# These .desktop entries can also be seen and changed in ~/.local/share/applications/
|
# These .desktop entries can also be seen and changed in ~/.local/share/applications/
|
||||||
|
|
||||||
text/x-shellscript=text.desktop;
|
image/jpeg=img.desktop
|
||||||
x-scheme-handler/magnet=torrent.desktop;
|
image/png=img.desktop
|
||||||
application/x-bittorrent=torrent.desktop;
|
image/x-png=img.desktop
|
||||||
x-scheme-handler/mailto=mail.desktop;
|
image/gif=img.desktop
|
||||||
text/plain=text.desktop;
|
text/x-shellscript=text.desktop
|
||||||
application/postscript=pdf.desktop;
|
x-scheme-handler/magnet=torrent.desktop
|
||||||
application/pdf=pdf.desktop;
|
application/x-bittorrent=torrent.desktop
|
||||||
application/vnd.comicbook+zip=pdf.desktop;
|
x-scheme-handler/mailto=mail.desktop
|
||||||
application/vnd.comicbook-rar=pdf.desktop;
|
text/plain=text.desktop
|
||||||
image/png=img.desktop;
|
application/postscript=pdf.desktop
|
||||||
image/jpeg=img.desktop;
|
application/pdf=pdf.desktop
|
||||||
image/gif=img.desktop;
|
application/vnd.comicbook+zip=pdf.desktop
|
||||||
|
application/vnd.comicbook-rar=pdf.desktop
|
||||||
|
image/png=img.desktop
|
||||||
|
image/x-png=img.desktop
|
||||||
|
image/jpg=img.desktop
|
||||||
|
image/jpeg=img.desktop
|
||||||
|
image/gif=img.desktop
|
||||||
application/rss+xml=rss.desktop
|
application/rss+xml=rss.desktop
|
||||||
video/x-matroska=video.desktop
|
video/x-matroska=video.desktop
|
||||||
video/mp4=video.desktop
|
video/mp4=video.desktop
|
||||||
@ -23,5 +28,5 @@ x-scheme-handler/lbry=lbry.desktop
|
|||||||
inode/directory=file.desktop
|
inode/directory=file.desktop
|
||||||
|
|
||||||
# other
|
# other
|
||||||
x-scheme-handler/https=librewolf.desktop;
|
x-scheme-handler/https=io.gitlab.librewolf-community.desktop
|
||||||
x-scheme-handler/http=librewolf.desktop;
|
x-scheme-handler/http=io.gitlab.librewolf-community.desktop
|
||||||
|
@ -7,6 +7,7 @@ message_delay_time = "1"
|
|||||||
visualizer_type = "spectrum"
|
visualizer_type = "spectrum"
|
||||||
song_list_format = {$4%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
|
song_list_format = {$4%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
|
||||||
song_status_format = $b{{$8"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$8%f}
|
song_status_format = $b{{$8"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$8%f}
|
||||||
|
#song_status_format = $b{{$8"%t"}} $8by {$8%a{ $8in $8%b{ (%y)}} $8}|{$8%f}
|
||||||
song_library_format = {%n - }{%t}|{%f}
|
song_library_format = {%n - }{%t}|{%f}
|
||||||
alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
|
alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
|
||||||
alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
|
alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
|
||||||
@ -31,3 +32,6 @@ progressbar_elapsed_color = blue:b
|
|||||||
statusbar_color = red
|
statusbar_color = red
|
||||||
statusbar_time_color = cyan:b
|
statusbar_time_color = cyan:b
|
||||||
allow_for_physical_item_deletion = "yes"
|
allow_for_physical_item_deletion = "yes"
|
||||||
|
|
||||||
|
#main_window_color = black
|
||||||
|
#song_status_format = $b{{$1"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$1%f}
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
#show-read-feeds no
|
#show-read-feeds no
|
||||||
auto-reload yes
|
auto-reload yes
|
||||||
|
|
||||||
external-url-viewer "urlscan -dc -r 'linkhandler {}'"
|
#external-url-viewer "urlscan -dc -r 'linkhandler {}'"
|
||||||
|
|
||||||
|
## vim bindings
|
||||||
bind-key j down
|
bind-key j down
|
||||||
bind-key k up
|
bind-key k up
|
||||||
bind-key j next articlelist
|
bind-key j next articlelist
|
||||||
@ -18,31 +19,79 @@ bind-key h quit
|
|||||||
bind-key a toggle-article-read
|
bind-key a toggle-article-read
|
||||||
bind-key n next-unread
|
bind-key n next-unread
|
||||||
bind-key N prev-unread
|
bind-key N prev-unread
|
||||||
bind-key D pb-download
|
|
||||||
bind-key U show-urls
|
bind-key U show-urls
|
||||||
bind-key x pb-delete
|
|
||||||
|
#bind-key D pb-download
|
||||||
|
#bind-key x pb-delete
|
||||||
|
|
||||||
|
browser linkhandler
|
||||||
|
macro , open-in-browser
|
||||||
|
#macro t set browser "qndl" ; open-in-browser ; set browser linkhandler
|
||||||
|
#macro a set browser "tsp yt-dlp --embed-metadata --embed-thumbnail -xc -f bestaudio/best --restrict-filenames" ; open-in-browser ; set browser linkhandler
|
||||||
|
#macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler
|
||||||
|
#macro w set browser "lynx" ; open-in-browser ; set browser linkhandler
|
||||||
|
#macro d set browser "dmenuhandler" ; open-in-browser ; set browser linkhandler
|
||||||
|
#macro c set browser "echo %u | xclip -r -sel c" ; open-in-browser ; set browser linkhandler
|
||||||
|
#macro C set browser "setsid -f $TERMINAL -e pipe-viewer --comments=%u" ; open-in-browser ; set browser linkhandler
|
||||||
|
#macro p set browser "peertubetorrent %u 480" ; open-in-browser ; set browser linkhandler
|
||||||
|
#macro P set browser "peertubetorrent %u 1080" ; open-in-browser ; set browser linkhandler
|
||||||
|
#macro y set browser "setsid -f flatpak run io.freetubeapp.FreeTube %u >/dev/null 2>&1" ; open-in-browser ; set browser linkhandler
|
||||||
|
|
||||||
|
# random
|
||||||
|
#color background white black
|
||||||
|
#color listnormal color244 black
|
||||||
|
#color listfocus default red
|
||||||
|
#color listnormal_unread white default
|
||||||
|
#color listfocus_unread default red
|
||||||
|
#color info black yellow
|
||||||
|
#color article white black
|
||||||
|
|
||||||
|
# gruvbox
|
||||||
|
#color listnormal cyan default
|
||||||
|
#color listfocus black yellow standout bold
|
||||||
|
#color listnormal_unread blue default
|
||||||
|
#color listfocus_unread yellow default bold
|
||||||
|
#color info red black bold
|
||||||
|
#color article white default bold
|
||||||
|
|
||||||
|
color info white default bold
|
||||||
|
|
||||||
|
#color listfocus white color8
|
||||||
|
#color listfocus_unread white color8 bold
|
||||||
|
|
||||||
color listnormal cyan default
|
color listnormal cyan default
|
||||||
color listfocus black yellow standout bold
|
color listfocus black yellow standout bold
|
||||||
color listnormal_unread blue default
|
color listnormal_unread blue default
|
||||||
color listfocus_unread yellow default bold
|
color listfocus_unread yellow default bold
|
||||||
#color info red black bold
|
#color info red black bold
|
||||||
color info red default
|
|
||||||
color article white default bold
|
color article white default bold
|
||||||
|
|
||||||
browser linkhandler
|
#color info white color8
|
||||||
macro , open-in-browser
|
#color listnormal white black
|
||||||
macro t set browser "qndl" ; open-in-browser ; set browser linkhandler
|
#color listnormal_unread white black bold
|
||||||
macro a set browser "tsp yt-dlp --embed-metadata --embed-thumbnail -xc -f bestaudio/best --restrict-filenames" ; open-in-browser ; set browser linkhandler
|
#color article white black
|
||||||
macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler
|
|
||||||
macro w set browser "lynx" ; open-in-browser ; set browser linkhandler
|
|
||||||
macro d set browser "dmenuhandler" ; open-in-browser ; set browser linkhandler
|
|
||||||
macro c set browser "echo %u | xclip -r -sel c" ; open-in-browser ; set browser linkhandler
|
|
||||||
macro C set browser "setsid -f $TERMINAL -e pipe-viewer --comments=%u" ; open-in-browser ; set browser linkhandler
|
|
||||||
macro p set browser "peertubetorrent %u 480" ; open-in-browser ; set browser linkhandler
|
|
||||||
macro P set browser "peertubetorrent %u 1080" ; open-in-browser ; set browser linkhandler
|
|
||||||
macro y set browser "setsid -f flatpak run io.freetubeapp.FreeTube %u >/dev/null 2>&1" ; open-in-browser ; set browser linkhandler
|
|
||||||
|
|
||||||
|
#color listfocus white color8
|
||||||
|
#color listfocus_unread color8 black bold
|
||||||
|
|
||||||
|
#color listfocus cyan color8 bold
|
||||||
|
#color listfocus_unread cyan color8 bold
|
||||||
|
|
||||||
|
#color listnormal cyan default
|
||||||
|
#color listfocus black yellow standout bold
|
||||||
|
#color listnormal_unread blue default
|
||||||
|
#color listfocus_unread yellow default bold
|
||||||
|
#color info red black bold
|
||||||
|
##color info white color8
|
||||||
|
#color article white default
|
||||||
|
|
||||||
|
#color listnormal cyan default
|
||||||
|
#color listnormal_unread blue default
|
||||||
|
|
||||||
|
#color listnormal white default bold
|
||||||
|
#color listnormal_unread color8 default
|
||||||
|
|
||||||
|
highlight all "--.*--" white
|
||||||
highlight all "---.*---" yellow
|
highlight all "---.*---" yellow
|
||||||
highlight feedlist ".*(0/0))" black
|
highlight feedlist ".*(0/0))" black
|
||||||
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" cyan default bold
|
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" cyan default bold
|
||||||
@ -55,3 +104,4 @@ highlight article "\\[embedded flash: [0-9][0-9]*\\]" green default bold
|
|||||||
highlight article ":.*\\(link\\)$" cyan default
|
highlight article ":.*\\(link\\)$" cyan default
|
||||||
highlight article ":.*\\(image\\)$" blue default
|
highlight article ":.*\\(image\\)$" blue default
|
||||||
highlight article ":.*\\(embedded flash\\)$" magenta default
|
highlight article ":.*\\(embedded flash\\)$" magenta default
|
||||||
|
|
||||||
|
3
home/default/.config/npm/npmrc
Normal file
3
home/default/.config/npm/npmrc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
prefix=${XDG_DATA_HOME}/npm
|
||||||
|
cache=${XDG_CACHE_HOME}/npm
|
||||||
|
init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
|
@ -1,33 +1,12 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# todo: import to wayland
|
|
||||||
while read -r file
|
while read -r file
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"w") change-background "$file" & ;;
|
"b") change-background "$file" & ;;
|
||||||
"c")
|
|
||||||
[ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | rofi -dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
|
|
||||||
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
|
|
||||||
cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
|
|
||||||
;;
|
|
||||||
"m")
|
|
||||||
[ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | rofi -dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
|
|
||||||
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
|
|
||||||
mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
|
|
||||||
;;
|
|
||||||
"r")
|
|
||||||
convert -rotate 90 "$file" "$file" ;;
|
|
||||||
"R")
|
|
||||||
convert -rotate -90 "$file" "$file" ;;
|
|
||||||
"f")
|
|
||||||
convert -flop "$file" "$file" ;;
|
|
||||||
"y") wl-copy < $file ;;
|
"y") wl-copy < $file ;;
|
||||||
#printf "%s" "$file" | tr -d '\n' | xclip -selection clipboard &&
|
|
||||||
#notify-send "$file copied to clipboard" & ;;
|
|
||||||
"Y")
|
|
||||||
readlink -f "$file" | tr -d '\n' | xclip -selection clipboard &&
|
|
||||||
notify-send "$(readlink -f "$file") copied to clipboard" & ;;
|
|
||||||
"d")
|
"d")
|
||||||
[ "$(printf "No\\nYes" | rofi -dmenu -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
|
#[ "$(printf "No\\nYes" | rofi -dmenu -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
|
||||||
|
[ "$(printf "No\\nYes" | wofi --insensitive --show dmenu --prompt="Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
|
||||||
"g") setsid -f gimp "$file" ;;
|
"g") setsid -f gimp "$file" ;;
|
||||||
"i") notify-send "File information" "$(mediainfo "$file" | sed "s/[ ]\+:/:/g;s/: /: <b>/;s/$/<\/b>/" | grep "<b>")" ;;
|
"i") notify-send "File information" "$(mediainfo "$file" | sed "s/[ ]\+:/:/g;s/: /: <b>/;s/$/<\/b>/" | grep "<b>")" ;;
|
||||||
esac
|
esac
|
||||||
|
108
home/default/.config/nvim/init.lua
Normal file
108
home/default/.config/nvim/init.lua
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
vim.opt.clipboard="unnamed,unnamedplus"
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
|
vim.fn.system({
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"--filter=blob:none",
|
||||||
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
|
"--branch=stable", -- latest stable release
|
||||||
|
lazypath,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
require("lazy").setup({
|
||||||
|
"nyoom-engineering/oxocarbon.nvim",
|
||||||
|
{"nvim-treesitter/nvim-treesitter", build = ":TSUpdate"},
|
||||||
|
{
|
||||||
|
'nvim-orgmode/orgmode',
|
||||||
|
dependencies = {
|
||||||
|
{ 'nvim-treesitter/nvim-treesitter', lazy = true },
|
||||||
|
},
|
||||||
|
event = 'VeryLazy',
|
||||||
|
config = function()
|
||||||
|
-- Load treesitter grammar for org
|
||||||
|
require('orgmode').setup_ts_grammar()
|
||||||
|
|
||||||
|
-- Setup treesitter
|
||||||
|
require('nvim-treesitter.configs').setup({
|
||||||
|
highlight = {
|
||||||
|
enable = false,
|
||||||
|
additional_vim_regex_highlighting = { 'org' },
|
||||||
|
},
|
||||||
|
ensure_installed = { 'org' },
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Setup orgmode -- NOTE (to self) THAT I ONLY USE THIS FOR CAPTURING CODE
|
||||||
|
-- AND CHANGING Todo STATES in todo.org FOR CODING
|
||||||
|
-- for simplicity's sake
|
||||||
|
require('orgmode').setup({
|
||||||
|
--org_agenda_files = '~/orgfiles/**/*',
|
||||||
|
org_agenda_files = '~/notebook/ag/*',
|
||||||
|
org_default_notes_file = '~/notebook/ag/todo.org',
|
||||||
|
org_log_done = 'time',
|
||||||
|
org_log_into_drawer = 'LOGBOOK',
|
||||||
|
--org_todo_keywords = {'TODO(t)', 'NEXT(n)', '|', 'DONE(d)'},
|
||||||
|
org_todo_keywords = {"TODO(t)", "PROJ(p)", "LOOP(r)", "STRT(s)", "WAIT(w)", "HOLD(h)", "IDEA(i)", "|", "DONE(d)", "KILL(k)"},
|
||||||
|
org_capture_templates = {
|
||||||
|
t = {
|
||||||
|
description = 'todo with link',
|
||||||
|
template = '* TODO %?\n%i\n%a',
|
||||||
|
target = '~/notebook/ag/todo.org',
|
||||||
|
headline = 'todo',
|
||||||
|
},
|
||||||
|
T = {
|
||||||
|
description = 'todo no link',
|
||||||
|
template = '* TODO %?\n%i\n%a',
|
||||||
|
target = '~/notebook/ag/todo.org',
|
||||||
|
headline = 'todo',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mappings = { -- make as close to doom
|
||||||
|
--disable_all = true,
|
||||||
|
global = {
|
||||||
|
org_agenda = {'<Leader>oa'},
|
||||||
|
org_capture = '<Leader>x',
|
||||||
|
},
|
||||||
|
agenda = {
|
||||||
|
org_agenda_todo = '<Leader>mt',
|
||||||
|
org_agenda_schedule = '<Leader>mds',
|
||||||
|
org_agenda_deadline = '<Leader>mdd',
|
||||||
|
org_agenda_ = '<Leader>mds',
|
||||||
|
|
||||||
|
},
|
||||||
|
org = {
|
||||||
|
org_todo = '<Leader>mt',
|
||||||
|
org_priority = '<Leader>mpp',
|
||||||
|
--org_move_subtree_up = '<ALT-k>',
|
||||||
|
--org_move_subtree_down = '<ALT-j>',
|
||||||
|
org_schedule = '<Leader>mds',
|
||||||
|
org_deadline = '<Leader>mdd',
|
||||||
|
org_time_stamp = '<Leader>mdt',
|
||||||
|
org_time_stamp_inactive = '<Leader>mdT',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'nvim-telescope/telescope.nvim', tag = '0.1.5',
|
||||||
|
-- or , branch = '0.1.x',
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' }
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
--vim.opt.background = "dark" -- set this to dark or light
|
||||||
|
--vim.cmd("colorscheme oxocarbon")
|
||||||
|
|
||||||
|
--keybinds
|
||||||
|
vim.keymap.set("n", "<leader>.", vim.cmd.Ex)
|
||||||
|
vim.keymap.set("n", "<leader>ff", vim.cmd.Ex)
|
||||||
|
local builtin = require('telescope.builtin')
|
||||||
|
vim.keymap.set('n', '<leader><leader>', builtin.find_files, {})
|
||||||
|
--vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
||||||
|
--vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||||
|
--vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
|
@ -1,2 +0,0 @@
|
|||||||
let mapleader =","
|
|
||||||
set clipboard+=unnamedplus
|
|
275
home/default/.config/river/init
Executable file
275
home/default/.config/river/init
Executable file
@ -0,0 +1,275 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# TODO
|
||||||
|
|
||||||
|
# This is the example configuration file for river.
|
||||||
|
#
|
||||||
|
# If you wish to edit this, you will probably want to copy it to
|
||||||
|
# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
|
||||||
|
#
|
||||||
|
# See the river(1), riverctl(1), and rivertile(1) man pages for complete
|
||||||
|
# documentation.
|
||||||
|
|
||||||
|
# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
|
||||||
|
|
||||||
|
# Super+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
|
||||||
|
riverctl map normal Super Return spawn $TERMINAL
|
||||||
|
riverctl map normal Super E spawn "emacsclient -c -a ''"
|
||||||
|
riverctl map normal Super D spawn "wofi --show drun"
|
||||||
|
riverctl map normal Super+Shift D spawn "wofi --show run"
|
||||||
|
riverctl map normal Super W spawn $BROWSER
|
||||||
|
riverctl map normal Super M spawn "$TERMINAL -e ncmpcpp"
|
||||||
|
riverctl map normal Super R spawn "$TERMINAL -e lf"
|
||||||
|
riverctl map normal Super+Shift N spawn "$TERMINAL -e newsboat"
|
||||||
|
riverctl map normal Super T spawn "swaync-client -t"
|
||||||
|
riverctl map normal Super+Control P spawn "$TERMINAL -e pulsemixer"
|
||||||
|
riverctl map normal Super B spawn "emacsclient -c -a '' ~/notebook/bookmarks.org"
|
||||||
|
riverctl map normal Super+Shift B spawn "bookmark"
|
||||||
|
# riverctl map normal Super Insert spawn 'wtype "$(grep -v '^#' ~/notebook/bookmarks.org | dmenu -l 50 | cut -d' ' -f1)"' # TODO broken?
|
||||||
|
riverctl map normal Print spawn 'screenshot.sh output'
|
||||||
|
riverctl map normal Super Print spawn 'screenshot.sh active'
|
||||||
|
riverctl map normal Super+Shift Print spawn 'screenshot.sh window'
|
||||||
|
riverctl map normal Super+Control u spawn 'screenshot.sh output'
|
||||||
|
riverctl map normal Super u spawn 'screenshot.sh active'
|
||||||
|
riverctl map normal Super+Shift u spawn 'screenshot.sh window'
|
||||||
|
riverctl map normal Super Equal spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+'
|
||||||
|
riverctl map normal Super Minus spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-'
|
||||||
|
riverctl map normal Super+Shift Equal spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 15%+'
|
||||||
|
riverctl map normal Super+Shift Minus spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 15%-'
|
||||||
|
riverctl map normal Super+Shift m spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'
|
||||||
|
riverctl map normal Super P spawn 'mpc toggle'
|
||||||
|
riverctl map normal Super O spawn 'mpc next'
|
||||||
|
riverctl map normal Super I spawn 'mpc prev'
|
||||||
|
|
||||||
|
# Super+Q to close the focused view
|
||||||
|
riverctl map normal Super Q close
|
||||||
|
|
||||||
|
# Super+Shift+Backspace to exit river
|
||||||
|
riverctl map normal Super+Shift Backspace exit
|
||||||
|
# riverctl map normal Super+Shift Backspace 'prompt "Do you really wont to exit river? This will end your Wayland session" "riverctl exit"'
|
||||||
|
riverctl map normal Super+Shift R spawn "$HOME/.config/river/init"
|
||||||
|
riverctl map normal Super Backspace spawn sysact
|
||||||
|
|
||||||
|
# Super+X to toggle waybar
|
||||||
|
riverctl map normal Super X spawn 'killall -SIGUSR1 waybar'
|
||||||
|
|
||||||
|
# Super+J and Super+K to focus the next/previous view in the layout stack
|
||||||
|
riverctl map normal Super J focus-view next
|
||||||
|
riverctl map normal Super K focus-view previous
|
||||||
|
|
||||||
|
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
|
||||||
|
# view in the layout stack
|
||||||
|
riverctl map normal Super+Shift J swap next
|
||||||
|
riverctl map normal Super+Shift K swap previous
|
||||||
|
|
||||||
|
# Super+Period and Super+Comma to focus the next/previous output
|
||||||
|
riverctl map normal Super Period focus-output next
|
||||||
|
riverctl map normal Super Comma focus-output previous
|
||||||
|
riverctl map normal Super Right focus-output next
|
||||||
|
riverctl map normal Super Left focus-output previous
|
||||||
|
|
||||||
|
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
|
||||||
|
#riverctl map normal Super+Shift Period send-to-output -current-tags next
|
||||||
|
#riverctl map normal Super+Shift Comma send-to-output -current-tags previous
|
||||||
|
riverctl map normal Super+Shift Period spawn "riverctl send-to-output -current-tags previous && riverctl focus-output previous"
|
||||||
|
riverctl map normal Super+Shift Comma spawn "riverctl send-to-output -current-tags next && riverctl focus-output next"
|
||||||
|
riverctl map normal Super+Shift Right spawn "riverctl send-to-output -current-tags previous && riverctl focus-output previous"
|
||||||
|
riverctl map normal Super+Shift Left spawn "riverctl send-to-output -current-tags next && riverctl focus-output next"
|
||||||
|
|
||||||
|
# Same but with alt
|
||||||
|
#riverctl map normal Super+Alt Period send-to-output -current-tags next
|
||||||
|
#riverctl map normal Super+Alt Comma send-to-output -current-tags previous
|
||||||
|
riverctl map normal Super+Alt Period spawn "riverctl send-to-output -current-tags previous && riverctl focus-output previous"
|
||||||
|
riverctl map normal Super+Alt Comma spawn "riverctl send-to-output -current-tags next && riverctl focus-output next"
|
||||||
|
riverctl map normal Super+Alt Right send-to-output next
|
||||||
|
riverctl map normal Super+Alt Left send-to-output previous
|
||||||
|
|
||||||
|
# Super+Return to bump the focused view to the top of the layout stack
|
||||||
|
riverctl map normal Super+Shift Return zoom
|
||||||
|
riverctl map normal Super Space zoom
|
||||||
|
|
||||||
|
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
|
||||||
|
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
|
||||||
|
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
|
||||||
|
|
||||||
|
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
|
||||||
|
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
|
||||||
|
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
|
||||||
|
|
||||||
|
# Super+Alt+{H,J,K,L} to move views
|
||||||
|
riverctl map normal Super+Alt H move left 100
|
||||||
|
riverctl map normal Super+Alt J move down 100
|
||||||
|
riverctl map normal Super+Alt K move up 100
|
||||||
|
riverctl map normal Super+Alt L move right 100
|
||||||
|
|
||||||
|
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
|
||||||
|
riverctl map normal Super+Alt+Control H snap left
|
||||||
|
riverctl map normal Super+Alt+Control J snap down
|
||||||
|
riverctl map normal Super+Alt+Control K snap up
|
||||||
|
riverctl map normal Super+Alt+Control L snap right
|
||||||
|
|
||||||
|
# Super+Alt+Shift+{H,J,K,L} to resize views (default by 100)
|
||||||
|
riverctl map normal Super+Alt+Shift H resize horizontal -50
|
||||||
|
riverctl map normal Super+Alt+Shift J resize vertical 50
|
||||||
|
riverctl map normal Super+Alt+Shift K resize vertical -50
|
||||||
|
riverctl map normal Super+Alt+Shift L resize horizontal 50
|
||||||
|
|
||||||
|
# Super + Left Mouse Button to move views
|
||||||
|
riverctl map-pointer normal Super BTN_LEFT move-view
|
||||||
|
|
||||||
|
# Super + Right Mouse Button to resize views
|
||||||
|
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
||||||
|
|
||||||
|
for i in $(seq 1 9)
|
||||||
|
do
|
||||||
|
tags=$((1 << ($i - 1)))
|
||||||
|
|
||||||
|
# Super+[1-9] to focus tag [0-8]
|
||||||
|
riverctl map normal Super $i set-focused-tags $tags
|
||||||
|
|
||||||
|
# Super+Shift+[1-9] to tag focused view with tag [0-8]
|
||||||
|
riverctl map normal Super+Shift $i set-view-tags $tags
|
||||||
|
|
||||||
|
# Super+Ctrl+[1-9] to toggle focus of tag [0-8]
|
||||||
|
riverctl map normal Super+Control $i toggle-focused-tags $tags
|
||||||
|
|
||||||
|
# Super+Shift+Ctrl+[1-9] to toggle tag [0-8] of focused view
|
||||||
|
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
|
||||||
|
done
|
||||||
|
|
||||||
|
# Super+0 to focus all tags
|
||||||
|
# Super+Shift+0 to tag focused view with all tags
|
||||||
|
all_tags=$(((1 << 32) - 1))
|
||||||
|
riverctl map normal Super 0 set-focused-tags $all_tags
|
||||||
|
riverctl map normal Super+Shift 0 set-view-tags $all_tags
|
||||||
|
|
||||||
|
# Super+Shift+Space to toggle float
|
||||||
|
riverctl map normal Super+Shift Space toggle-float
|
||||||
|
|
||||||
|
# Super+F to toggle fullscreen
|
||||||
|
riverctl map normal Super F toggle-fullscreen
|
||||||
|
|
||||||
|
# Super+{Up,Right,Down,Left} to change layout orientation
|
||||||
|
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
|
||||||
|
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
|
||||||
|
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
|
||||||
|
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
|
||||||
|
|
||||||
|
# Declare a passthrough mode. This mode has only a single mapping to return to
|
||||||
|
# normal mode. This makes it useful for testing a nested wayland compositor
|
||||||
|
riverctl declare-mode passthrough
|
||||||
|
|
||||||
|
# Super+F11 to enter passthrough mode
|
||||||
|
riverctl map normal Super F11 enter-mode passthrough
|
||||||
|
|
||||||
|
# Super+F11 to return to normal mode
|
||||||
|
riverctl map passthrough Super F11 enter-mode normal
|
||||||
|
|
||||||
|
# Various media key mapping examples for both normal and locked mode which do
|
||||||
|
# not have a modifier
|
||||||
|
for mode in normal locked
|
||||||
|
do
|
||||||
|
# Eject the optical drive (well if you still have one that is)
|
||||||
|
riverctl map $mode None XF86Eject spawn 'eject -T'
|
||||||
|
|
||||||
|
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
|
||||||
|
riverctl map $mode None XF86AudioRaiseVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+'
|
||||||
|
riverctl map $mode None XF86AudioLowerVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-'
|
||||||
|
riverctl map $mode None XF86AudioMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'
|
||||||
|
riverctl map $mode None XF86AudioMicMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle'
|
||||||
|
|
||||||
|
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
|
||||||
|
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
|
||||||
|
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
|
||||||
|
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
|
||||||
|
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
|
||||||
|
|
||||||
|
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
|
||||||
|
riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl set 10%+'
|
||||||
|
riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl set 10%-'
|
||||||
|
done
|
||||||
|
|
||||||
|
# Set background and border color
|
||||||
|
riverctl background-color 0x002b36
|
||||||
|
riverctl border-color-focused 0x93a1a1
|
||||||
|
riverctl border-color-unfocused 0x586e75
|
||||||
|
|
||||||
|
|
||||||
|
## Autostart
|
||||||
|
riverctl spawn swaync
|
||||||
|
riverctl spawn 'killall waybar'
|
||||||
|
riverctl spawn 'sleep 2 && waybar -c ~/.config/waybar/config-river'
|
||||||
|
riverctl spawn change-background
|
||||||
|
riverctl spawn 'sleep 5 && xrdb -load $HOME/.config/x11/xresources'
|
||||||
|
#riverctl spawn mpd
|
||||||
|
#riverctl spawn fcitx5
|
||||||
|
#riverctl spawn deluged
|
||||||
|
riverctl spawn "setsid -f syncthing --no-browser"
|
||||||
|
riverctl spawn "sleep 10 && kanshi"
|
||||||
|
riverctl spawn 'killall swayidle ; sleep 3 && idle'
|
||||||
|
#riverctl spawn 'gammastep -P -l <lat>:<long> -t 6500:5000'
|
||||||
|
riverctl spawn '~/.config/river/init-priv'
|
||||||
|
|
||||||
|
riverctl spawn "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river"
|
||||||
|
riverctl spawn "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river"
|
||||||
|
|
||||||
|
# Set keyboard repeat rate
|
||||||
|
riverctl set-repeat 30 300
|
||||||
|
|
||||||
|
# Make certain views start floating
|
||||||
|
riverctl float-filter-add app-id float
|
||||||
|
riverctl float-filter-add title "popup title with spaces"
|
||||||
|
|
||||||
|
|
||||||
|
#riverctl rule-add -app-id "*" ssd
|
||||||
|
riverctl rule-add -app-id "emacs" ssd
|
||||||
|
riverctl rule-add -app-id "LibreWolf" ssd
|
||||||
|
riverctl rule-add -app-id "deluge" ssd
|
||||||
|
riverctl rule-add -app-id "steam" ssd
|
||||||
|
riverctl rule-add -app-id "im.dino.Dino" ssd
|
||||||
|
|
||||||
|
# Make all views with an app-id that starts with "float" and title "foo" start floating.
|
||||||
|
riverctl rule-add -app-id 'float*' -title 'foo' float
|
||||||
|
|
||||||
|
# Make all views with app-id "bar" and any title use client-side decorations
|
||||||
|
riverctl rule-add -app-id "bar" csd
|
||||||
|
|
||||||
|
# Set app-ids and titles of views which should use client side decorations
|
||||||
|
riverctl csd-filter-add app-id "gedit"
|
||||||
|
|
||||||
|
# Set the default layout generator to be rivertile and start it.
|
||||||
|
# River will send the process group of the init executable SIGTERM on exit.
|
||||||
|
riverctl default-layout rivertile
|
||||||
|
rivertile -view-padding 15 -outer-padding 15
|
||||||
|
# default 6
|
||||||
|
|
||||||
|
|
||||||
|
#: Performance tuning {{{
|
||||||
|
|
||||||
|
#repaint_delay 0
|
||||||
|
|
||||||
|
#: Delay (in milliseconds) between screen updates. Decreasing it,
|
||||||
|
#: increases frames-per-second (FPS) at the cost of more CPU usage.
|
||||||
|
#: The default value yields ~100 FPS which is more than sufficient for
|
||||||
|
#: most uses. Note that to actually achieve 100 FPS you have to either
|
||||||
|
#: set sync_to_monitor to no or use a monitor with a high refresh
|
||||||
|
#: rate. Also, to minimize latency when there is pending input to be
|
||||||
|
#: processed, repaint_delay is ignored.
|
||||||
|
|
||||||
|
#input_delay 0
|
||||||
|
|
||||||
|
#: Delay (in milliseconds) before input from the program running in
|
||||||
|
#: the terminal is processed. Note that decreasing it will increase
|
||||||
|
#: responsiveness, but also increase CPU usage and might cause flicker
|
||||||
|
#: in full screen programs that redraw the entire screen on each loop,
|
||||||
|
#: because kitty is so fast that partial screen updates will be drawn.
|
||||||
|
|
||||||
|
sync_to_monitor no
|
||||||
|
|
||||||
|
#: Sync screen updates to the refresh rate of the monitor. This
|
||||||
|
#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing)
|
||||||
|
#: when scrolling. However, it limits the rendering speed to the
|
||||||
|
#: refresh rate of your monitor. With a very high speed mouse/high
|
||||||
|
#: keyboard repeat rate, you may notice some slight input latency. If
|
||||||
|
#: so, set this to no.
|
||||||
|
|
||||||
|
#: }}}
|
163
home/default/.config/river/init.def
Executable file
163
home/default/.config/river/init.def
Executable file
@ -0,0 +1,163 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This is the example configuration file for river.
|
||||||
|
#
|
||||||
|
# If you wish to edit this, you will probably want to copy it to
|
||||||
|
# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
|
||||||
|
#
|
||||||
|
# See the river(1), riverctl(1), and rivertile(1) man pages for complete
|
||||||
|
# documentation.
|
||||||
|
|
||||||
|
# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
|
||||||
|
|
||||||
|
# Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
|
||||||
|
riverctl map normal Super+Shift Return spawn foot
|
||||||
|
|
||||||
|
# Super+Q to close the focused view
|
||||||
|
riverctl map normal Super Q close
|
||||||
|
|
||||||
|
# Super+Shift+E to exit river
|
||||||
|
riverctl map normal Super+Shift E exit
|
||||||
|
|
||||||
|
# Super+J and Super+K to focus the next/previous view in the layout stack
|
||||||
|
riverctl map normal Super J focus-view next
|
||||||
|
riverctl map normal Super K focus-view previous
|
||||||
|
|
||||||
|
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
|
||||||
|
# view in the layout stack
|
||||||
|
riverctl map normal Super+Shift J swap next
|
||||||
|
riverctl map normal Super+Shift K swap previous
|
||||||
|
|
||||||
|
# Super+Period and Super+Comma to focus the next/previous output
|
||||||
|
riverctl map normal Super Period focus-output next
|
||||||
|
riverctl map normal Super Comma focus-output previous
|
||||||
|
|
||||||
|
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
|
||||||
|
riverctl map normal Super+Shift Period send-to-output -current-tags next
|
||||||
|
riverctl map normal Super+Shift Comma send-to-output -current-tagsjprevious
|
||||||
|
|
||||||
|
# Super+Return to bump the focused view to the top of the layout stack
|
||||||
|
riverctl map normal Super Return zoom
|
||||||
|
|
||||||
|
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
|
||||||
|
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
|
||||||
|
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
|
||||||
|
|
||||||
|
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
|
||||||
|
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
|
||||||
|
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
|
||||||
|
|
||||||
|
# Super+Alt+{H,J,K,L} to move views
|
||||||
|
riverctl map normal Super+Alt H move left 100
|
||||||
|
riverctl map normal Super+Alt J move down 100
|
||||||
|
riverctl map normal Super+Alt K move up 100
|
||||||
|
riverctl map normal Super+Alt L move right 100
|
||||||
|
|
||||||
|
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
|
||||||
|
riverctl map normal Super+Alt+Control H snap left
|
||||||
|
riverctl map normal Super+Alt+Control J snap down
|
||||||
|
riverctl map normal Super+Alt+Control K snap up
|
||||||
|
riverctl map normal Super+Alt+Control L snap right
|
||||||
|
|
||||||
|
# Super+Alt+Shift+{H,J,K,L} to resize views
|
||||||
|
riverctl map normal Super+Alt+Shift H resize horizontal -100
|
||||||
|
riverctl map normal Super+Alt+Shift J resize vertical 100
|
||||||
|
riverctl map normal Super+Alt+Shift K resize vertical -100
|
||||||
|
riverctl map normal Super+Alt+Shift L resize horizontal 100
|
||||||
|
|
||||||
|
# Super + Left Mouse Button to move views
|
||||||
|
riverctl map-pointer normal Super BTN_LEFT move-view
|
||||||
|
|
||||||
|
# Super + Right Mouse Button to resize views
|
||||||
|
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
||||||
|
|
||||||
|
# Super + Middle Mouse Button to toggle float
|
||||||
|
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
|
||||||
|
|
||||||
|
for i in $(seq 1 9)
|
||||||
|
do
|
||||||
|
tags=$((1 << ($i - 1)))
|
||||||
|
|
||||||
|
# Super+[1-9] to focus tag [0-8]
|
||||||
|
riverctl map normal Super $i set-focused-tags $tags
|
||||||
|
|
||||||
|
# Super+Shift+[1-9] to tag focused view with tag [0-8]
|
||||||
|
riverctl map normal Super+Shift $i set-view-tags $tags
|
||||||
|
|
||||||
|
# Super+Control+[1-9] to toggle focus of tag [0-8]
|
||||||
|
riverctl map normal Super+Control $i toggle-focused-tags $tags
|
||||||
|
|
||||||
|
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
|
||||||
|
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
|
||||||
|
done
|
||||||
|
|
||||||
|
# Super+0 to focus all tags
|
||||||
|
# Super+Shift+0 to tag focused view with all tags
|
||||||
|
all_tags=$(((1 << 32) - 1))
|
||||||
|
riverctl map normal Super 0 set-focused-tags $all_tags
|
||||||
|
riverctl map normal Super+Shift 0 set-view-tags $all_tags
|
||||||
|
|
||||||
|
# Super+Space to toggle float
|
||||||
|
riverctl map normal Super Space toggle-float
|
||||||
|
|
||||||
|
# Super+F to toggle fullscreen
|
||||||
|
riverctl map normal Super F toggle-fullscreen
|
||||||
|
|
||||||
|
# Super+{Up,Right,Down,Left} to change layout orientation
|
||||||
|
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
|
||||||
|
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
|
||||||
|
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
|
||||||
|
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
|
||||||
|
|
||||||
|
# Declare a passthrough mode. This mode has only a single mapping to return to
|
||||||
|
# normal mode. This makes it useful for testing a nested wayland compositor
|
||||||
|
riverctl declare-mode passthrough
|
||||||
|
|
||||||
|
# Super+F11 to enter passthrough mode
|
||||||
|
riverctl map normal Super F11 enter-mode passthrough
|
||||||
|
|
||||||
|
# Super+F11 to return to normal mode
|
||||||
|
riverctl map passthrough Super F11 enter-mode normal
|
||||||
|
|
||||||
|
# Various media key mapping examples for both normal and locked mode which do
|
||||||
|
# not have a modifier
|
||||||
|
for mode in normal locked
|
||||||
|
do
|
||||||
|
# Eject the optical drive (well if you still have one that is)
|
||||||
|
riverctl map $mode None XF86Eject spawn 'eject -T'
|
||||||
|
|
||||||
|
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
|
||||||
|
riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
|
||||||
|
riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
|
||||||
|
riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
|
||||||
|
|
||||||
|
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
|
||||||
|
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
|
||||||
|
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
|
||||||
|
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
|
||||||
|
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
|
||||||
|
|
||||||
|
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
|
||||||
|
riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
|
||||||
|
riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
|
||||||
|
done
|
||||||
|
|
||||||
|
# Set background and border color
|
||||||
|
riverctl background-color 0x002b36
|
||||||
|
riverctl border-color-focused 0x93a1a1
|
||||||
|
riverctl border-color-unfocused 0x586e75
|
||||||
|
|
||||||
|
# Set keyboard repeat rate
|
||||||
|
riverctl set-repeat 50 300
|
||||||
|
|
||||||
|
# Make all views with an app-id that starts with "float" and title "foo" start floating.
|
||||||
|
riverctl rule-add -app-id 'float*' -title 'foo' float
|
||||||
|
|
||||||
|
# Make all views with app-id "bar" and any title use client-side decorations
|
||||||
|
riverctl rule-add -app-id "bar" csd
|
||||||
|
|
||||||
|
# Set the default layout generator to be rivertile and start it.
|
||||||
|
# River will send the process group of the init executable SIGTERM on exit.
|
||||||
|
riverctl default-layout rivertile
|
||||||
|
rivertile -view-padding 6 -outer-padding 6 &
|
||||||
|
|
1
home/default/.config/sc-im/scimrc
Normal file
1
home/default/.config/sc-im/scimrc
Normal file
@ -0,0 +1 @@
|
|||||||
|
set copy_to_clipboard_delimited_tab=1
|
@ -1,67 +1,51 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Use neovim for vim if present.
|
|
||||||
[ -x "$(command -v nvim)" ] && alias vim="nvim" vimdiff="nvim -d"
|
|
||||||
|
|
||||||
# Use $XINITRC variable if file exists.
|
# Use $XINITRC variable if file exists.
|
||||||
[ -f "$XINITRC" ] && alias startx="startx $XINITRC"
|
[ -f "$XINITRC" ] && alias startx="startx $XINITRC"
|
||||||
|
|
||||||
|
[ -f "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC"
|
||||||
|
|
||||||
# sudo not required for some system commands
|
# sudo not required for some system commands
|
||||||
for command in mount umount sv pacman updatedb su shutdown poweroff reboot ; do
|
for command in mount umount updatedb su shutdown poweroff reboot ; do
|
||||||
alias $command="sudo $command"
|
alias $command="sudo $command"
|
||||||
done; unset command
|
done; unset command
|
||||||
|
|
||||||
se() { cd ~/.local/bin; $EDITOR $(fzf) ;}
|
|
||||||
|
|
||||||
# Verbosity and settings that you pretty much just always are going to want.
|
|
||||||
alias \
|
alias \
|
||||||
|
e="emacsclient -tty -a ''" \
|
||||||
|
emc="setsid -f emacsclient -c -a '' >/dev/null 2>&1" \
|
||||||
|
emo="emacsclient" \
|
||||||
|
kem="emacsclient -e '(kill-emacs)'" \
|
||||||
|
vimdiff="nvim -d" \
|
||||||
cp="cp -iv" \
|
cp="cp -iv" \
|
||||||
mv="mv -iv" \
|
mv="mv -iv" \
|
||||||
rm="rm -vI" \
|
rm="rm -vI" \
|
||||||
bc="bc -ql" \
|
bc="bc -ql" \
|
||||||
pg="ps -aux | grep --color=auto" \
|
|
||||||
mkd="mkdir -pv" \
|
mkd="mkdir -pv" \
|
||||||
ffmpeg="ffmpeg -hide_banner"
|
ffmpeg="ffmpeg -hide_banner" \
|
||||||
wedit(){
|
|
||||||
which $@ >/dev/null 2>&1 && [ -n "$1" ] && vim $(which $@) && exit 0
|
|
||||||
printf "file doesn't exist.\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Colorize commands when possible.
|
|
||||||
alias \
|
|
||||||
ls="ls -hN --color=auto --group-directories-first" \
|
ls="ls -hN --color=auto --group-directories-first" \
|
||||||
grep="grep --color=auto" \
|
grep="grep --color=auto" \
|
||||||
diff="diff --color=auto" \
|
diff="diff --color=auto" \
|
||||||
ccat="highlight --out-format=ansi" \
|
ccat="highlight --out-format=ansi" \
|
||||||
ip="ip -color=auto"
|
ip="ip -color=auto" \
|
||||||
|
|
||||||
# These common commands are just too long! Abbreviate them.
|
|
||||||
alias \
|
|
||||||
ka="killall" \
|
ka="killall" \
|
||||||
g="git" \
|
g="git" \
|
||||||
sdn="shutdown -h now" \
|
sdn="shutdown -h now" \
|
||||||
e="$EDITOR" \
|
|
||||||
v="nvim" \
|
v="nvim" \
|
||||||
z="zathura" \
|
z="zathura" \
|
||||||
i="nsxiv -a"
|
d="sdcv" \
|
||||||
|
i="nsxiv -a" \
|
||||||
alias \
|
pg="ps -aux | grep --color=auto" \
|
||||||
magit="nvim -c MagitOnly" \
|
weath="curl wttr.in" \
|
||||||
ref="shortcuts >/dev/null; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" \
|
ytmus="yt-dlp --embed-metadata --embed-thumbnail -xc -f 'bestaudio[ext=m4a]'" \
|
||||||
weath="curl wttr.in"
|
|
||||||
|
|
||||||
# misc
|
|
||||||
alias \
|
|
||||||
ytmus="yt-dlp --embed-metadata --embed-thumbnail -xc -f bestaudio/best --restrict-filenames" \
|
|
||||||
ytvid="yt-dlp --embed-metadata --embed-thumbnail --embed-chapters --write-auto-subs -f bestvideo'[height<=1080]''[ext=mp4]'+bestaudio'[ext=m4a]'/best'[ext=mp4]'/best" \
|
ytvid="yt-dlp --embed-metadata --embed-thumbnail --embed-chapters --write-auto-subs -f bestvideo'[height<=1080]''[ext=mp4]'+bestaudio'[ext=m4a]'/best'[ext=mp4]'/best" \
|
||||||
t="todo.sh -t -d $HOME/notebook/todo/todo.cfg" \
|
hgs="hugo server --noHTTPCache --disableFastRender" \
|
||||||
fj="firejail --profile=$HOME/.config/firejail/game.profile" \
|
left='uxnemu ~/.local/uxn/left.rom' \
|
||||||
dj="dijo" \
|
bouc='uxnemu ~/.local/uxn/bouc.rom' \
|
||||||
hgs="hugo server --noHTTPCache --disableFastRender"
|
catclock='uxnemu ~/.local/uxn/catclock.rom' \
|
||||||
|
b='$BROWSER'\
|
||||||
|
sc='sc-im'\
|
||||||
|
l='ledger -f ~/notebook/ac/ac.ledger'
|
||||||
|
|
||||||
# ytfzf
|
wedit(){
|
||||||
alias \
|
which $@ >/dev/null 2>&1 && [ -n "$1" ] && $EDITOR $(which $@) || printf "file doesn't exist.\n"
|
||||||
ytfzf="ytfzf --thumb-viewer=imv" \
|
}
|
||||||
ytfzf-video="ytfzf --detach -t" \
|
|
||||||
ytfzf-audio="ytfzf -m" \
|
|
||||||
ytfzf-history="ytfzf --detach -H"
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
# You can add comments to these files with #
|
|
||||||
cac ${XDG_CACHE_HOME:-$HOME/.cache}
|
|
||||||
cf ${XDG_CONFIG_HOME:-$HOME/.config}
|
|
||||||
D ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}
|
|
||||||
d ${XDG_DOCUMENTS_DIR:-$HOME/Documents}
|
|
||||||
dt ${XDG_DATA_HOME:-$HOME/.local/share}
|
|
||||||
rr $HOME/.local/src
|
|
||||||
h $HOME
|
|
||||||
m ${XDG_MUSIC_DIR:-$HOME/Music}
|
|
||||||
mn /mnt
|
|
||||||
pp ${XDG_PICTURES_DIR:-$HOME/Pictures}
|
|
||||||
sc $HOME/.local/bin
|
|
||||||
src $HOME/.local/src
|
|
||||||
vv ${XDG_VIDEOS_DIR:-$HOME/Videos}
|
|
@ -1,20 +0,0 @@
|
|||||||
# keys filename description
|
|
||||||
bf ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files # This file, a list of bookmarked files
|
|
||||||
bd ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs # A list of bookmarked directories similar to this file
|
|
||||||
cfx ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources # Colors, themes and variables for X11
|
|
||||||
cfs ${XDG_CONFIG_HOME:-$HOME/.config}/sway/config
|
|
||||||
cfb ${XDG_CONFIG_HOME:-$HOME/.config}/waybar/config
|
|
||||||
cfB ${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style.css
|
|
||||||
|
|
||||||
cfv ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/init.vim # vim/neovim config
|
|
||||||
cfz $ZDOTDIR/.zshrc # zsh (shell) config
|
|
||||||
cfa ${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc # aliases used by zsh (and potentially other shells)
|
|
||||||
cfp ${XDG_CONFIG_HOME:-$HOME/.config}/shell/profile # profile file for login settings for zsh
|
|
||||||
cfm ${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc # mutt (email client) config
|
|
||||||
cfn ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/config # newsboat (RSS reader)
|
|
||||||
cfu ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls # RSS urls for newsboat
|
|
||||||
cfmb ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/bindings # ncmpcpp (music player) keybinds file
|
|
||||||
cfmc ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/config # ncmpcpp (music player) config
|
|
||||||
cfl ${XDG_CONFIG_HOME:-$HOME/.config}/lf/lfrc # lf (file browser) config
|
|
||||||
cfL ${XDG_CONFIG_HOME:-$HOME/.config}/lf/scope # lf's scope/preview file
|
|
||||||
cfX ${XDG_CONFIG_HOME:-$HOME/.config}/nsxiv/exec/key-handler # sxiv (image viewer) key/script handler
|
|
@ -1,56 +1,62 @@
|
|||||||
#!/bin/zsh
|
#!/bin/sh
|
||||||
|
# shellcheck disable=SC2155
|
||||||
|
|
||||||
# profile file. Runs on login. Environmental variables are set here.
|
# profile file. Runs on login. Environmental variables are set here.
|
||||||
|
# Paths
|
||||||
# If you don't plan on reverting to bash, you can remove the link in ~/.profile
|
|
||||||
# to clean up.
|
|
||||||
|
|
||||||
# paths
|
|
||||||
export PATH="$PATH:$HOME/.local/bin"
|
export PATH="$PATH:$HOME/.local/bin"
|
||||||
|
export PATH="$PATH:$HOME/.local/uxn"
|
||||||
|
export PATH="$PATH:$HOME/.local/sec"
|
||||||
|
export PATH="$PATH:$HOME/.emacs.d/bin"
|
||||||
export PATH="$PATH:/var/lib/flatpak/exports/bin"
|
export PATH="$PATH:/var/lib/flatpak/exports/bin"
|
||||||
export PATH="$PATH:$HOME/.local/share/go/bin"
|
export PATH="$PATH:$HOME/.local/share/go/bin"
|
||||||
export PATH="$PATH:$HOME/.local/share/cargo/bin"
|
export PATH="$PATH:$HOME/.local/share/cargo/bin"
|
||||||
export PATH="$PATH:$HOME/.emacs.d/bin"
|
|
||||||
unsetopt PROMPT_SP
|
unsetopt PROMPT_SP 2>/dev/null
|
||||||
|
|
||||||
# Default programs:
|
# Default programs:
|
||||||
export EDITOR="nvim"
|
export EDITOR="nvim"
|
||||||
export TERMINAL="foot"
|
export TERMINAL="foot"
|
||||||
export BROWSER="librewolf"
|
export BROWSER="io.gitlab.librewolf-community"
|
||||||
|
|
||||||
# ~/ Clean-up:
|
# ~/ Clean-up:
|
||||||
export XDG_CONFIG_HOME="$HOME/.config"
|
export XDG_CONFIG_HOME="$HOME/.config"
|
||||||
export XDG_DATA_HOME="$HOME/.local/share"
|
export XDG_DATA_HOME="$HOME/.local/share"
|
||||||
export XDG_CACHE_HOME="$HOME/.cache"
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
export XINITRC="${XDG_CONFIG_HOME:-$HOME/.config}/x11/xinitrc"
|
export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
|
||||||
#export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" # This line will break some DMs.
|
#export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" # This line will break some DMs.
|
||||||
export NOTMUCH_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/notmuch-config"
|
export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch-config"
|
||||||
export GTK2_RC_FILES="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-2.0/gtkrc-2.0"
|
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0"
|
||||||
export LESSHISTFILE="-"
|
export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc"
|
||||||
export WGETRC="${XDG_CONFIG_HOME:-$HOME/.config}/wget/wgetrc"
|
export INPUTRC="$XDG_CONFIG_HOME/shell/inputrc"
|
||||||
export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/shell/inputrc"
|
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
|
||||||
export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh"
|
#export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||||
#export ALSA_CONFIG_PATH="$XDG_CONFIG_HOME/alsa/asoundrc"
|
export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default"
|
||||||
#export GNUPGHOME="${XDG_DATA_HOME:-$HOME/.local/share}/gnupg"
|
export KODI_DATA="$XDG_DATA_HOME/kodi"
|
||||||
export WINEPREFIX="${XDG_DATA_HOME:-$HOME/.local/share}/wineprefixes/default"
|
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store"
|
||||||
export KODI_DATA="${XDG_DATA_HOME:-$HOME/.local/share}/kodi"
|
|
||||||
export PASSWORD_STORE_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/password-store"
|
|
||||||
export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
|
export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
|
||||||
export ANDROID_SDK_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/android"
|
export ANDROID_SDK_HOME="$XDG_CONFIG_HOME/android"
|
||||||
export CARGO_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/cargo"
|
#export ANDROID_SDK_HOME="$HOME/android_sdk"
|
||||||
export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
|
#export ANDROID_SDK="$HOME/android_sdk"
|
||||||
export ANSIBLE_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/ansible/ansible.cfg"
|
#export ANDROID_NDK="$HOME/android_sdk/ndk-bundle"
|
||||||
export UNISON="${XDG_DATA_HOME:-$HOME/.local/share}/unison"
|
#export PATH="$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/cmdline_tools/bin"
|
||||||
export HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/history"
|
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||||
export WEECHAT_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/weechat"
|
export GOPATH="$XDG_DATA_HOME/go"
|
||||||
export MBSYNCRC="${XDG_CONFIG_HOME:-$HOME/.config}/mbsync/config"
|
export GOMODCACHE="$XDG_CACHE_HOME/go/mod"
|
||||||
export ELECTRUMDIR="${XDG_DATA_HOME:-$HOME/.local/share}/electrum"
|
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible/ansible.cfg"
|
||||||
|
export UNISON="$XDG_DATA_HOME/unison"
|
||||||
|
export HISTFILE="$XDG_DATA_HOME/history"
|
||||||
|
export MBSYNCRC="$XDG_CONFIG_HOME/mbsync/config"
|
||||||
|
export ELECTRUMDIR="$XDG_DATA_HOME/electrum"
|
||||||
|
export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc"
|
||||||
|
export SQLITE_HISTORY="$XDG_DATA_HOME/sqlite_history"
|
||||||
|
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npm/npmrc"
|
||||||
|
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
|
||||||
|
|
||||||
# Other program settings:
|
# Other program settings:
|
||||||
export DICS="/usr/share/stardict/dic/"
|
export DICS="/usr/share/stardict/dic/"
|
||||||
export SUDO_ASKPASS="$HOME/.local/bin/dmenupass"
|
export SUDO_ASKPASS="$HOME/.local/bin/dmenupass"
|
||||||
export FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
|
export FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
|
||||||
export LESS=-R
|
export LESS="R"
|
||||||
export LESS_TERMCAP_mb="$(printf '%b' '[1;31m')"
|
export LESS_TERMCAP_mb="$(printf '%b' '[1;31m')"
|
||||||
export LESS_TERMCAP_md="$(printf '%b' '[1;36m')"
|
export LESS_TERMCAP_md="$(printf '%b' '[1;36m')"
|
||||||
export LESS_TERMCAP_me="$(printf '%b' '[0m')"
|
export LESS_TERMCAP_me="$(printf '%b' '[0m')"
|
||||||
@ -59,30 +65,32 @@ export LESS_TERMCAP_se="$(printf '%b' '[0m')"
|
|||||||
export LESS_TERMCAP_us="$(printf '%b' '[1;32m')"
|
export LESS_TERMCAP_us="$(printf '%b' '[1;32m')"
|
||||||
export LESS_TERMCAP_ue="$(printf '%b' '[0m')"
|
export LESS_TERMCAP_ue="$(printf '%b' '[0m')"
|
||||||
export LESSOPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
|
export LESSOPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
|
||||||
export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme.
|
export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme.
|
||||||
export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
|
#export MOZ_USE_XINPUT2=1 # Mozilla smooth scrolling/touchpads.
|
||||||
export AWT_TOOLKIT="MToolkit wmname LG3D" #May have to install wmname
|
export AWT_TOOLKIT="MToolkit wmname LG3D" # May have to install wmname
|
||||||
export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
|
export GTK_IM_MODULE="fcitx"
|
||||||
export GTK_IM_MODULE=fcitx
|
export QT_IM_MODULE="fcitx"
|
||||||
export QT_IM_MODULE=fcitx
|
export XMODIFIERS=@im="fcitx"
|
||||||
export XMODIFIERS=@im=fcitx
|
export SDL_IM_MODULE="fcitx"
|
||||||
export SDL_IM_MODULE=fcitx
|
export GLFW_IM_MODULE="ibus"
|
||||||
export GLFW_IM_MODULE=ibus
|
#export QT_STYLE_OVERRIDE=Materia-dark
|
||||||
#export QT_STYLE_OVERRIDE=adwaita-dark
|
export GTK_THEME="Materia-dark"
|
||||||
|
|
||||||
|
|
||||||
#wayland
|
#wayland
|
||||||
#export QT_QPA_PLATFORM=wayland
|
#export QT_QPA_PLATFORM="wayland"
|
||||||
#export XDG_CURRENT_DESKTOP=river
|
#export XDG_CURRENT_DESKTOP="river"
|
||||||
#export XDG_SESSION_DESKTOP=river
|
#export XDG_SESSION_DESKTOP="river"
|
||||||
#export XDG_CURRENT_SESSION_TYPE=wayland
|
#export XDG_CURRENT_SESSION_TYPE="wayland"
|
||||||
#export GDK_BACKEND="wayland,x11"
|
#export GDK_BACKEND="wayland,x11"
|
||||||
export MOZ_ENABLE_WAYLAND=1
|
export GDK_BACKEND="wayland"
|
||||||
#export WLR_RENDERER=vulkan
|
#export MOZ_ENABLE_WAYLAND="1"
|
||||||
|
#export WLR_RENDERER="vulkan"
|
||||||
|
|
||||||
[ ! -f ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ] && setsid shortcuts >/dev/null 2>&1
|
|
||||||
|
|
||||||
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
|
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
|
||||||
|
export WINDOW_MANAGER=sway
|
||||||
exec /usr/bin/sway
|
exec /usr/bin/sway
|
||||||
fi
|
fi
|
||||||
|
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty3" ]; then
|
||||||
|
export WINDOW_MANAGER=river
|
||||||
|
exec /usr/local/bin/river
|
||||||
|
fi
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
### sway settings
|
### sway(fx) settings
|
||||||
|
|
||||||
|
|
||||||
# logo key. Use Mod1 for Alt.
|
# logo key. Use Mod1 for Alt.
|
||||||
@ -13,8 +13,8 @@ set $right l
|
|||||||
set $term $TERMINAL
|
set $term $TERMINAL
|
||||||
set $browser $BROWSER
|
set $browser $BROWSER
|
||||||
set $editor $EDITOR
|
set $editor $EDITOR
|
||||||
#set $menu dmenu_path | dmenu | xargs swaymsg exec --
|
set $menu wofi -i --show drun | xargs swaymsg exec --
|
||||||
set $menu rofi -show combi | xargs swaymsg exec --
|
set $dmenu wofi -i --show run | xargs swaymsg exec --
|
||||||
|
|
||||||
# wallpaper
|
# wallpaper
|
||||||
exec change-background
|
exec change-background
|
||||||
@ -30,7 +30,7 @@ exec swaync
|
|||||||
exec --no-startup-id kanshi
|
exec --no-startup-id kanshi
|
||||||
|
|
||||||
# input method
|
# input method
|
||||||
exec fcitx5
|
#exec fcitx5
|
||||||
|
|
||||||
# night light
|
# night light
|
||||||
#exec sleep 3 && gammastep -l LAT:LON
|
#exec sleep 3 && gammastep -l LAT:LON
|
||||||
@ -39,16 +39,16 @@ exec fcitx5
|
|||||||
exec mpd
|
exec mpd
|
||||||
|
|
||||||
# xresources (nsxiv theme, and other programs)
|
# xresources (nsxiv theme, and other programs)
|
||||||
exec xrdb $HOME/.config/x11/xresources
|
exec sleep 5 && xrdb -load $HOME/.config/x11/xresources
|
||||||
|
|
||||||
# Syncthing (sync daemon)
|
# Syncthing (sync daemon)
|
||||||
exec syncthing --no-browser
|
exec syncthing --no-browser
|
||||||
|
|
||||||
# polkit
|
# polkit
|
||||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
exec --no-startup-id /usr/libexec/polkit-gnome-authentication-agent-1
|
||||||
|
|
||||||
# emacs daemon
|
# sworkstyle
|
||||||
exec /usr/bin/emacs --daemon
|
#exec sworkstyle &> /tmp/sworkstyle.log
|
||||||
|
|
||||||
#assign [app_id="librewolf"] 2
|
#assign [app_id="librewolf"] 2
|
||||||
#assign [app_id="firefox"] 2
|
#assign [app_id="firefox"] 2
|
||||||
@ -56,6 +56,11 @@ exec /usr/bin/emacs --daemon
|
|||||||
#assign [app_id="dino"] 9
|
#assign [app_id="dino"] 9
|
||||||
#assign [app_id="deluge"] 10
|
#assign [app_id="deluge"] 10
|
||||||
|
|
||||||
|
#for_window [app_id=".*"] floating enable
|
||||||
|
for_window [app_id="uxnemu"] floating enable
|
||||||
|
for_window [app_id="uxnemu"] border pixel 0
|
||||||
|
|
||||||
|
|
||||||
#exec_always autotiling
|
#exec_always autotiling
|
||||||
exec systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
exec systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||||||
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||||||
@ -63,7 +68,6 @@ exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DE
|
|||||||
|
|
||||||
# behavior
|
# behavior
|
||||||
focus_follows_mouse no
|
focus_follows_mouse no
|
||||||
hide_edge_borders smart
|
|
||||||
workspace_auto_back_and_forth no
|
workspace_auto_back_and_forth no
|
||||||
show_marks yes
|
show_marks yes
|
||||||
|
|
||||||
@ -71,11 +75,32 @@ show_marks yes
|
|||||||
font pango: monospace 8
|
font pango: monospace 8
|
||||||
gaps inner 25
|
gaps inner 25
|
||||||
default_border pixel 2
|
default_border pixel 2
|
||||||
|
hide_edge_borders smart
|
||||||
bindsym $mod+Control+y border toggle
|
bindsym $mod+Control+y border toggle
|
||||||
|
|
||||||
set $cl_high #333333
|
# swayfx specific
|
||||||
set $cl_indi #333333
|
blur enable
|
||||||
set $cl_back #222222
|
blur_xray enable
|
||||||
|
blur_passes 1
|
||||||
|
# 2
|
||||||
|
blur_radius 1
|
||||||
|
# 3
|
||||||
|
#corner_radius 20
|
||||||
|
shadows disable
|
||||||
|
|
||||||
|
#set $cl_high #333333
|
||||||
|
#set $cl_indi #333333
|
||||||
|
#set $cl_back #222222
|
||||||
|
|
||||||
|
#set $cl_high #000000
|
||||||
|
#set $cl_indi #000000
|
||||||
|
#set $cl_back #999999
|
||||||
|
|
||||||
|
# river colors
|
||||||
|
set $cl_high #93a1a1
|
||||||
|
set $cl_indi #586e75
|
||||||
|
set $cl_back #002b36
|
||||||
|
|
||||||
set $cl_fore #d9d8d8
|
set $cl_fore #d9d8d8
|
||||||
set $cl_urge #FF0000
|
set $cl_urge #FF0000
|
||||||
|
|
||||||
@ -84,12 +109,12 @@ client.focused_inactive $cl_back $cl_back $cl_fore $cl_back $cl_back
|
|||||||
client.unfocused $cl_back $cl_back $cl_fore $cl_back $cl_back
|
client.unfocused $cl_back $cl_back $cl_fore $cl_back $cl_back
|
||||||
client.urgent $cl_urge $cl_urge $cl_fore $cl_urge $cl_urge
|
client.urgent $cl_urge $cl_urge $cl_fore $cl_urge $cl_urge
|
||||||
|
|
||||||
set $gnome-schema org.gnome.desktop.interface
|
#set $gnome-schema org.gnome.desktop.interface
|
||||||
exec_always {
|
# exec_always {
|
||||||
gsettings set $gnome-schema gtk-theme 'Materia-dark'
|
# gsettings set $gnome-schema gtk-theme 'Materia-dark'
|
||||||
gsettings set $gnome-schema icon-theme 'Papirus-Dark'
|
# gsettings set $gnome-schema icon-theme 'Papirus-Dark'
|
||||||
gsettings set $gnome-schema color-scheme 'prefer-dark'
|
# gsettings set $gnome-schema color-scheme 'prefer-dark'
|
||||||
}
|
#}
|
||||||
|
|
||||||
### Idle configuration
|
### Idle configuration
|
||||||
|
|
||||||
@ -108,7 +133,7 @@ bindsym $mod+q kill
|
|||||||
|
|
||||||
# start your launcher
|
# start your launcher
|
||||||
bindsym $mod+d exec $menu
|
bindsym $mod+d exec $menu
|
||||||
bindsym $mod+Shift+d exec dmenu_path | dmenu | xargs swaymsg exec
|
bindsym $mod+Shift+d exec $dmenu
|
||||||
|
|
||||||
|
|
||||||
# drag floating windows by holding down $mod and left mouse button.
|
# drag floating windows by holding down $mod and left mouse button.
|
||||||
@ -151,26 +176,20 @@ bindsym $mod+Control+u exec screenshot.sh output
|
|||||||
bindsym $mod+u exec screenshot.sh active
|
bindsym $mod+u exec screenshot.sh active
|
||||||
bindsym $mod+Shift+u exec screenshot.sh window
|
bindsym $mod+Shift+u exec screenshot.sh window
|
||||||
|
|
||||||
|
# app switcher
|
||||||
|
#bindsym $mod+Tab exec sway-select-window
|
||||||
|
bindsym $mod+Tab exec ss.sh
|
||||||
|
|
||||||
### programs
|
### programs
|
||||||
|
|
||||||
# files
|
|
||||||
bindsym $mod+F1 exec em ~/.config/sway/config
|
|
||||||
bindsym $mod+F2 exec em ~/.dotroot/packages.txt
|
|
||||||
bindsym $mod+F3 exec em ~/.dotroot/instructions.org
|
|
||||||
bindsym $mod+F4 exec em ~/notebook/studies/college.org
|
|
||||||
bindsym $mod+F5 exec em ~/notebook/ag/habits.org
|
|
||||||
bindsym $mod+F6 exec em ~/notebook/ag/todo.org
|
|
||||||
|
|
||||||
# browser
|
# browser
|
||||||
bindsym $mod+w exec $browser
|
bindsym $mod+w exec $browser
|
||||||
|
|
||||||
# agenda
|
# agenda
|
||||||
bindsym $mod+c exec emacsclient --eval '(org-agenda-list)' || emacs --eval '(org-agenda-list)'
|
bindsym $mod+c exec emacsclient -c -a '' --eval '(org-agenda-list)'
|
||||||
|
|
||||||
# notebook
|
# org-capture
|
||||||
bindsym $mod+n exec $term -e $editor ~/notebook/index.org
|
bindsym $mod+Shift+c exec ~/.emacs.d/bin/org-capture
|
||||||
bindsym $mod+v exec em ~/notebook/refile.org
|
|
||||||
|
|
||||||
# newsboat (rss)
|
# newsboat (rss)
|
||||||
bindsym $mod+Shift+n exec $term -e newsboat
|
bindsym $mod+Shift+n exec $term -e newsboat
|
||||||
@ -182,34 +201,33 @@ bindsym $mod+t exec swaync-client -t
|
|||||||
bindsym $mod+r exec $term -e lf
|
bindsym $mod+r exec $term -e lf
|
||||||
|
|
||||||
# emacs
|
# emacs
|
||||||
bindsym $mod+e exec emacsclient -c || emacs
|
bindsym $mod+e exec emacsclient -c -a ''
|
||||||
|
|
||||||
# mail
|
# mail
|
||||||
#bindsym $mod+e exec $term -e neomutt
|
#bindsym $mod+e exec thunderbird-wayland
|
||||||
|
|
||||||
# start tasks in dmenu
|
|
||||||
bindsym $mod+Control+d exec start-tasks
|
|
||||||
bindsym $mod+Shift+x exec start-tasks
|
|
||||||
|
|
||||||
# bookmarks
|
# bookmarks
|
||||||
bindsym $mod+b exec em ~/notebook/bookmarks.org
|
# open
|
||||||
|
bindsym $mod+b exec emacsclient -c -a '' ~/notebook/bookmarks.org
|
||||||
|
# open bookmarks
|
||||||
bindsym $mod+shift+b exec bookmark
|
bindsym $mod+shift+b exec bookmark
|
||||||
|
# insert
|
||||||
bindsym $mod+Insert exec wtype "$(grep -v '^#' ~/notebook/bookmarks.org | dmenu -l 50 | cut -d' ' -f1)"
|
bindsym $mod+Insert exec wtype "$(grep -v '^#' ~/notebook/bookmarks.org | dmenu -l 50 | cut -d' ' -f1)"
|
||||||
|
|
||||||
# kaomiji?
|
# kaomiji?
|
||||||
bindsym $mod+z exec dmenukaomoji
|
# bindsym $mod+z exec dmenukaomoji
|
||||||
|
|
||||||
# keepass dmenu
|
# keepass dmenu
|
||||||
bindsym $mod+shift+Insert exec keepmenu
|
bindsym $mod+shift+Insert exec keepmenu
|
||||||
|
|
||||||
# download script
|
# download script
|
||||||
bindsym $mod+Control+m exec musdl
|
bindsym $mod+Control+m exec musdl
|
||||||
|
|
||||||
# youtube client
|
# open youtube link in ft
|
||||||
bindsym $mod+y exec io.freetubeapp.FreeTube $(wl-paste)
|
bindsym $mod+y exec io.freetubeapp.FreeTube $(wl-paste)
|
||||||
|
|
||||||
# games
|
# games
|
||||||
bindsym $mod+g exec taverner
|
# bindsym $mod+g exec taverner
|
||||||
|
|
||||||
# workspace names
|
# workspace names
|
||||||
set $wp1 1
|
set $wp1 1
|
||||||
@ -225,6 +243,18 @@ set $wp10 10
|
|||||||
|
|
||||||
|
|
||||||
# binding workspace to monitors
|
# binding workspace to monitors
|
||||||
|
# main monitor on right
|
||||||
|
#workspace $wp1 output DVI-D-1
|
||||||
|
#workspace $wp2 output DVI-D-1
|
||||||
|
#workspace $wp3 output DVI-D-1
|
||||||
|
#workspace $wp4 output DVI-D-1
|
||||||
|
#workspace $wp5 output DVI-D-1
|
||||||
|
#workspace $wp6 output HDMI-A-1
|
||||||
|
#workspace $wp7 output HDMI-A-1
|
||||||
|
#workspace $wp8 output HDMI-A-1
|
||||||
|
#workspace $wp9 output HDMI-A-1
|
||||||
|
#workspace $wp10 output HDMI-A-1
|
||||||
|
# main monitor on left
|
||||||
workspace $wp1 output HDMI-A-1
|
workspace $wp1 output HDMI-A-1
|
||||||
workspace $wp2 output HDMI-A-1
|
workspace $wp2 output HDMI-A-1
|
||||||
workspace $wp3 output HDMI-A-1
|
workspace $wp3 output HDMI-A-1
|
||||||
@ -237,28 +267,28 @@ workspace $wp9 output DVI-D-1
|
|||||||
workspace $wp10 output DVI-D-1
|
workspace $wp10 output DVI-D-1
|
||||||
|
|
||||||
# switch to workspace
|
# switch to workspace
|
||||||
bindsym $mod+1 workspace $wp1
|
bindsym $mod+1 workspace number $wp1
|
||||||
bindsym $mod+2 workspace $wp2
|
bindsym $mod+2 workspace number $wp2
|
||||||
bindsym $mod+3 workspace $wp3
|
bindsym $mod+3 workspace number $wp3
|
||||||
bindsym $mod+4 workspace $wp4
|
bindsym $mod+4 workspace number $wp4
|
||||||
bindsym $mod+5 workspace $wp5
|
bindsym $mod+5 workspace number $wp5
|
||||||
bindsym $mod+6 workspace $wp6
|
bindsym $mod+6 workspace number $wp6
|
||||||
bindsym $mod+7 workspace $wp7
|
bindsym $mod+7 workspace number $wp7
|
||||||
bindsym $mod+8 workspace $wp8
|
bindsym $mod+8 workspace number $wp8
|
||||||
bindsym $mod+9 workspace $wp9
|
bindsym $mod+9 workspace number $wp9
|
||||||
bindsym $mod+0 workspace $wp10
|
bindsym $mod+0 workspace number $wp10
|
||||||
|
|
||||||
# move focused container to workspace
|
# move focused container to workspace
|
||||||
bindsym $mod+Shift+1 move container to workspace $wp1
|
bindsym $mod+Shift+1 move container to workspace number $wp1
|
||||||
bindsym $mod+Shift+2 move container to workspace $wp2
|
bindsym $mod+Shift+2 move container to workspace number $wp2
|
||||||
bindsym $mod+Shift+3 move container to workspace $wp3
|
bindsym $mod+Shift+3 move container to workspace number $wp3
|
||||||
bindsym $mod+Shift+4 move container to workspace $wp4
|
bindsym $mod+Shift+4 move container to workspace number $wp4
|
||||||
bindsym $mod+Shift+5 move container to workspace $wp5
|
bindsym $mod+Shift+5 move container to workspace number $wp5
|
||||||
bindsym $mod+Shift+6 move container to workspace $wp6
|
bindsym $mod+Shift+6 move container to workspace number $wp6
|
||||||
bindsym $mod+Shift+7 move container to workspace $wp7
|
bindsym $mod+Shift+7 move container to workspace number $wp7
|
||||||
bindsym $mod+Shift+8 move container to workspace $wp8
|
bindsym $mod+Shift+8 move container to workspace number $wp8
|
||||||
bindsym $mod+Shift+9 move container to workspace $wp9
|
bindsym $mod+Shift+9 move container to workspace number $wp9
|
||||||
bindsym $mod+Shift+0 move container to workspace $wp10
|
bindsym $mod+Shift+0 move container to workspace number $wp10
|
||||||
|
|
||||||
# move focused container to workspace
|
# move focused container to workspace
|
||||||
# with comma/period (</>)
|
# with comma/period (</>)
|
||||||
@ -340,7 +370,7 @@ mode "resize" {
|
|||||||
# status bar
|
# status bar
|
||||||
#include $HOME/.config/sway/bar
|
#include $HOME/.config/sway/bar
|
||||||
exec_always killall waybar
|
exec_always killall waybar
|
||||||
exec_always sleep 2 && waybar
|
exec_always sleep 3 && waybar
|
||||||
|
|
||||||
|
|
||||||
### special keys
|
### special keys
|
||||||
@ -386,4 +416,4 @@ bindsym $mod+m exec $term -e ncmpcpp
|
|||||||
bindsym $mod+Shift+s exec ~/.config/sway/scripts/sway-select-window
|
bindsym $mod+Shift+s exec ~/.config/sway/scripts/sway-select-window
|
||||||
|
|
||||||
include /etc/sway/config.d/*
|
include /etc/sway/config.d/*
|
||||||
include ~/syncthing/default/config.d/sway/*
|
include ~/.config/sway/priv
|
||||||
|
78
home/default/.config/swaync/config.json
Normal file
78
home/default/.config/swaync/config.json
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
{
|
||||||
|
"$schema": "/etc/xdg/swaync/configSchema.json",
|
||||||
|
"positionX": "right",
|
||||||
|
"positionY": "top",
|
||||||
|
"layer": "overlay",
|
||||||
|
"control-center-layer": "overlay",
|
||||||
|
"layer-shell": true,
|
||||||
|
"cssPriority": "application",
|
||||||
|
"control-center-margin-top": 0,
|
||||||
|
"control-center-margin-bottom": 0,
|
||||||
|
"control-center-margin-right": 0,
|
||||||
|
"control-center-margin-left": 0,
|
||||||
|
"notification-2fa-action": true,
|
||||||
|
"notification-inline-replies": false,
|
||||||
|
"notification-icon-size": 64,
|
||||||
|
"notification-body-image-height": 100,
|
||||||
|
"notification-body-image-width": 200,
|
||||||
|
"timeout": 10,
|
||||||
|
"timeout-low": 5,
|
||||||
|
"timeout-critical": 0,
|
||||||
|
"fit-to-screen": true,
|
||||||
|
"control-center-width": 500,
|
||||||
|
"control-center-height": 600,
|
||||||
|
"notification-window-width": 500,
|
||||||
|
"keyboard-shortcuts": true,
|
||||||
|
"image-visibility": "when-available",
|
||||||
|
"transition-time": 200,
|
||||||
|
"hide-on-clear": false,
|
||||||
|
"hide-on-action": true,
|
||||||
|
"script-fail-notify": true,
|
||||||
|
"scripts": {
|
||||||
|
"example-script": {
|
||||||
|
"exec": "echo 'Do something...'",
|
||||||
|
"urgency": "Normal"
|
||||||
|
},
|
||||||
|
"example-action-script": {
|
||||||
|
"exec": "echo 'Do something actionable!'",
|
||||||
|
"urgency": "Normal",
|
||||||
|
"run-on": "action"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-visibility": {
|
||||||
|
"example-name": {
|
||||||
|
"state": "muted",
|
||||||
|
"urgency": "Low",
|
||||||
|
"app-name": "Spotify"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"widgets": [
|
||||||
|
"inhibitors",
|
||||||
|
"title",
|
||||||
|
"dnd",
|
||||||
|
"notifications"
|
||||||
|
],
|
||||||
|
"widget-config": {
|
||||||
|
"inhibitors": {
|
||||||
|
"text": "Inhibitors",
|
||||||
|
"button-text": "Clear All",
|
||||||
|
"clear-all-button": true
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"text": "Notifications",
|
||||||
|
"clear-all-button": true,
|
||||||
|
"button-text": "Clear All"
|
||||||
|
},
|
||||||
|
"dnd": {
|
||||||
|
"text": "Do Not Disturb"
|
||||||
|
},
|
||||||
|
"label": {
|
||||||
|
"max-lines": 5,
|
||||||
|
"text": "Label Text"
|
||||||
|
},
|
||||||
|
"mpris": {
|
||||||
|
"image-size": 96,
|
||||||
|
"image-radius": 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
295
home/default/.config/swaync/style.css
Normal file
295
home/default/.config/swaync/style.css
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
/*#303446*/
|
||||||
|
/*#222222*/
|
||||||
|
@define-color main-bg #222222;
|
||||||
|
/*#414559*/
|
||||||
|
/*#333333*/
|
||||||
|
@define-color box-fg #222222;
|
||||||
|
/*#c6d0f5*/
|
||||||
|
/*#ffffff*/
|
||||||
|
/*#c5c8c6*/
|
||||||
|
@define-color text-color #c5c8c6;
|
||||||
|
/*#a5adce*/
|
||||||
|
/*#ffffff*/
|
||||||
|
/*#8c8c8c*/
|
||||||
|
@define-color text-color-inbox #8c8c8c;
|
||||||
|
/*#e78284*/
|
||||||
|
@define-color close-button-bg #e78284;
|
||||||
|
/*#51576d*/
|
||||||
|
/*#555555*/
|
||||||
|
@define-color border-color #333333;
|
||||||
|
/*#51576d*/
|
||||||
|
/*#222222*/
|
||||||
|
@define-color button-fg #333333;
|
||||||
|
/*#737994*/
|
||||||
|
@define-color button-border #555555;
|
||||||
|
|
||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: "Ubuntu Nerd Font";
|
||||||
|
transition: 200ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background {
|
||||||
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px @box-fg;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
margin: 18px;
|
||||||
|
background-color: @main-bg;
|
||||||
|
color: @text-color;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification {
|
||||||
|
padding: 7px;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification.critical {
|
||||||
|
box-shadow: inset 0 0 7px 0 @close-button-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .summary {
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .time {
|
||||||
|
color: @text-color-inbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .body {
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
|
||||||
|
min-height: 3.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: @text-color;
|
||||||
|
background-color: @box-fg;
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
background-color: @box-fg;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
background-color: #85c1dc;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button {
|
||||||
|
margin: 7px;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 6.3px;
|
||||||
|
color: @main-bg;
|
||||||
|
background-color: @close-button-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button:hover {
|
||||||
|
background-color: #ea999c;
|
||||||
|
color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button:active {
|
||||||
|
background-color: @close-button-bg;
|
||||||
|
color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center {
|
||||||
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px @box-fg;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
margin: 18px;
|
||||||
|
background-color: @main-bg;
|
||||||
|
color: @text-color;
|
||||||
|
padding: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title {
|
||||||
|
color: @text-color;
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: @text-color;
|
||||||
|
background-color: @box-fg;
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
background-color: #626880;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button:active {
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
background-color: #85c1dc;
|
||||||
|
color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: @text-color;
|
||||||
|
background-color: @box-fg;
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
margin-top: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification {
|
||||||
|
padding: 7px;
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification.critical {
|
||||||
|
box-shadow: inset 0 0 7px 0 @close-button-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content {
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .summary {
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .time {
|
||||||
|
color: @text-color-inbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .body {
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * {
|
||||||
|
min-height: 3.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: @text-color;
|
||||||
|
background-color: #232634;
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
background-color: @box-fg;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
background-color: #85c1dc;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button {
|
||||||
|
margin: 7px;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 6.3px;
|
||||||
|
color: @main-bg;
|
||||||
|
background-color: #ea999c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button:hover {
|
||||||
|
background-color: @close-button-bg;
|
||||||
|
color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button:active {
|
||||||
|
background-color: @close-button-bg;
|
||||||
|
color: @main-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
background-color: #838ba7;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background:active {
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
background-color: #85c1dc;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar,
|
||||||
|
progress,
|
||||||
|
trough {
|
||||||
|
border-radius: 12.6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar {
|
||||||
|
box-shadow: inset 0 0 0 1px @border-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification.critical progress {
|
||||||
|
background-color: @close-button-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification.low progress,
|
||||||
|
.notification.normal progress {
|
||||||
|
background-color: #8caaee;
|
||||||
|
}
|
||||||
|
|
||||||
|
trough {
|
||||||
|
background-color: @box-fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center trough {
|
||||||
|
background-color: @button-fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd {
|
||||||
|
margin-top: 5px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: @box-fg;
|
||||||
|
border: 1px solid @border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd:checked {
|
||||||
|
background: @box-fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd slider {
|
||||||
|
background: @button-fg;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd {
|
||||||
|
margin: 0px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch {
|
||||||
|
font-size: initial;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: @box-fg;
|
||||||
|
border: 1px solid @border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch:checked {
|
||||||
|
background: @box-fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch slider {
|
||||||
|
background: @button-fg;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid @button-border;
|
||||||
|
}
|
361
home/default/.config/swaync/style.css.def
Normal file
361
home/default/.config/swaync/style.css.def
Normal file
@ -0,0 +1,361 @@
|
|||||||
|
/*
|
||||||
|
* vim: ft=less
|
||||||
|
*/
|
||||||
|
|
||||||
|
@define-color cc-bg rgba(0, 0, 0, 0.7);
|
||||||
|
|
||||||
|
@define-color noti-border-color rgba(255, 255, 255, 0.15);
|
||||||
|
@define-color noti-bg rgb(48, 48, 48);
|
||||||
|
@define-color noti-bg-darker rgb(38, 38, 38);
|
||||||
|
@define-color noti-bg-hover rgb(56, 56, 56);
|
||||||
|
@define-color noti-bg-focus rgba(68, 68, 68, 0.6);
|
||||||
|
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
|
||||||
|
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
|
||||||
|
|
||||||
|
@define-color text-color rgb(255, 255, 255);
|
||||||
|
@define-color text-color-disabled rgb(150, 150, 150);
|
||||||
|
|
||||||
|
@define-color bg-selected rgb(0, 128, 255);
|
||||||
|
|
||||||
|
.notification-row {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-row:focus,
|
||||||
|
.notification-row:hover {
|
||||||
|
background: @noti-bg-focus;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification {
|
||||||
|
border-radius: 12px;
|
||||||
|
margin: 6px 12px;
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
|
||||||
|
0 2px 6px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Uncomment to enable specific urgency colors
|
||||||
|
.low {
|
||||||
|
background: yellow;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal {
|
||||||
|
background: green;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical {
|
||||||
|
background: red;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
.notification-content {
|
||||||
|
background: transparent;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button {
|
||||||
|
background: @noti-close-bg;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
padding: 0;
|
||||||
|
border-radius: 100%;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-right: 16px;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
min-width: 24px;
|
||||||
|
min-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button:hover {
|
||||||
|
box-shadow: none;
|
||||||
|
background: @noti-close-bg-hover;
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-default-action,
|
||||||
|
.notification-action {
|
||||||
|
padding: 4px;
|
||||||
|
margin: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
color: @text-color;
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-default-action:hover,
|
||||||
|
.notification-action:hover {
|
||||||
|
-gtk-icon-effect: none;
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-default-action {
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* When alternative actions are visible */
|
||||||
|
.notification-default-action:not(:only-child) {
|
||||||
|
border-bottom-left-radius: 0px;
|
||||||
|
border-bottom-right-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-action {
|
||||||
|
border-radius: 0px;
|
||||||
|
border-top: none;
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add bottom border radius to eliminate clipping */
|
||||||
|
.notification-action:first-child {
|
||||||
|
border-bottom-left-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-action:last-child {
|
||||||
|
border-bottom-right-radius: 10px;
|
||||||
|
border-right: 1px solid @noti-border-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-reply {
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
.inline-reply-entry {
|
||||||
|
background: @noti-bg-darker;
|
||||||
|
color: @text-color;
|
||||||
|
caret-color: @text-color;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.inline-reply-button {
|
||||||
|
margin-left: 4px;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
border-radius: 12px;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
.inline-reply-button:disabled {
|
||||||
|
background: initial;
|
||||||
|
color: @text-color-disabled;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.inline-reply-button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image {
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-image {
|
||||||
|
margin-top: 6px;
|
||||||
|
background-color: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: transparent;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: transparent;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
margin-right: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body {
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: normal;
|
||||||
|
background: transparent;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center {
|
||||||
|
background: @cc-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-list {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-list-placeholder {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Window behind control center and on all other monitors */
|
||||||
|
.blank-window {
|
||||||
|
background: alpha(black, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** Widgets ***/
|
||||||
|
|
||||||
|
/* Title widget */
|
||||||
|
.widget-title {
|
||||||
|
margin: 8px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
.widget-title > button {
|
||||||
|
font-size: initial;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.widget-title > button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DND widget */
|
||||||
|
.widget-dnd {
|
||||||
|
margin: 8px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
.widget-dnd > switch {
|
||||||
|
font-size: initial;
|
||||||
|
border-radius: 12px;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.widget-dnd > switch:checked {
|
||||||
|
background: @bg-selected;
|
||||||
|
}
|
||||||
|
.widget-dnd > switch slider {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Label widget */
|
||||||
|
.widget-label {
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
.widget-label > label {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mpris widget */
|
||||||
|
.widget-mpris {
|
||||||
|
/* The parent to all players */
|
||||||
|
}
|
||||||
|
.widget-mpris-player {
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
.widget-mpris-title {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
.widget-mpris-subtitle {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Buttons widget */
|
||||||
|
.widget-buttons-grid {
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 12px;
|
||||||
|
background-color: @noti-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-buttons-grid>flowbox>flowboxchild>button{
|
||||||
|
background: @noti-bg;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Menubar widget */
|
||||||
|
.widget-menubar>box>.menu-button-bar>button {
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .AnyName { Name defined in config after #
|
||||||
|
background-color: @noti-bg;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.AnyName>button {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.AnyName>button:hover {
|
||||||
|
background-color: @noti-bg-hover;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.topbar-buttons>button { /* Name defined in config after # */
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Volume widget */
|
||||||
|
|
||||||
|
.widget-volume {
|
||||||
|
background-color: @noti-bg;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-volume>box>button {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.per-app-volume {
|
||||||
|
background-color: @noti-bg-alt;
|
||||||
|
padding: 4px 8px 8px 8px;
|
||||||
|
margin: 0px 8px 8px 8px;
|
||||||
|
border-radius: 12px
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backlight widget */
|
||||||
|
.widget-backlight {
|
||||||
|
background-color: @noti-bg;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Title widget */
|
||||||
|
.widget-inhibitors {
|
||||||
|
margin: 8px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
.widget-inhibitors > button {
|
||||||
|
font-size: initial;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.widget-inhibitors > button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
370
home/default/.config/swaync/style.current.css
Normal file
370
home/default/.config/swaync/style.current.css
Normal file
@ -0,0 +1,370 @@
|
|||||||
|
/*
|
||||||
|
* vim: ft=less
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*@define-color cc-bg rgba(0, 0, 0, 0.7);*/
|
||||||
|
@define-color cc-bg #161616;
|
||||||
|
|
||||||
|
@define-color noti-border-color rgba(255, 255, 255, 0.15);
|
||||||
|
/*@define-color noti-bg rgb(48, 48, 48);*/
|
||||||
|
@define-color noti-bg rgb(0, 0, 0);
|
||||||
|
@define-color noti-bg-darker rgb(38, 38, 38);
|
||||||
|
@define-color noti-bg-hover rgb(56, 56, 56);
|
||||||
|
/*@define-color noti-bg-focus rgba(68, 68, 68, 0.6);*/
|
||||||
|
@define-color noti-bg-focus rgba(33, 33, 33, 0.6);
|
||||||
|
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
|
||||||
|
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
|
||||||
|
|
||||||
|
@define-color text-color rgb(255, 255, 255);
|
||||||
|
@define-color text-color-disabled rgb(150, 150, 150);
|
||||||
|
|
||||||
|
@define-color bg-selected rgb(0, 128, 255);
|
||||||
|
|
||||||
|
.notification-row {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-row:focus,
|
||||||
|
.notification-row:hover {
|
||||||
|
background: @noti-bg-focus;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification {
|
||||||
|
/*border-radius: 12px;*/
|
||||||
|
border-radius: 0px;
|
||||||
|
/*margin: 6px 12px;*/
|
||||||
|
margin: 6px 12px;
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
|
||||||
|
0 2px 6px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Uncomment to enable specific urgency colors
|
||||||
|
.low {
|
||||||
|
background: yellow;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal {
|
||||||
|
background: green;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical {
|
||||||
|
background: red;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
.notification-content {
|
||||||
|
background: transparent;
|
||||||
|
padding: 6px;
|
||||||
|
/*border-radius:12px;*/
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button {
|
||||||
|
background: @noti-close-bg;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
padding: 0;
|
||||||
|
border-radius: 100%;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-right: 16px;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
min-width: 24px;
|
||||||
|
min-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button:hover {
|
||||||
|
box-shadow: none;
|
||||||
|
background: @noti-close-bg-hover;
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-default-action,
|
||||||
|
.notification-action {
|
||||||
|
padding: 4px;
|
||||||
|
margin: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
color: @text-color;
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-default-action:hover,
|
||||||
|
.notification-action:hover {
|
||||||
|
-gtk-icon-effect: none;
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-default-action {
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* When alternative actions are visible */
|
||||||
|
.notification-default-action:not(:only-child) {
|
||||||
|
border-bottom-left-radius: 0px;
|
||||||
|
border-bottom-right-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-action {
|
||||||
|
border-radius: 0px;
|
||||||
|
border-top: none;
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add bottom border radius to eliminate clipping */
|
||||||
|
.notification-action:first-child {
|
||||||
|
/*border-bottom-left-radius: 10px;*/
|
||||||
|
border-bottom-left-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-action:last-child {
|
||||||
|
/*border-bottom-right-radius: 10px;*/
|
||||||
|
border-bottom-right-radius: 0px;
|
||||||
|
padding-bottom: 1px;
|
||||||
|
border-right: 1px solid @noti-border-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-reply {
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
.inline-reply-entry {
|
||||||
|
background: @noti-bg-darker;
|
||||||
|
color: @text-color;
|
||||||
|
caret-color: @text-color;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
.inline-reply-button {
|
||||||
|
margin-left: 4px;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
border-radius: 0px;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
.inline-reply-button:disabled {
|
||||||
|
background: initial;
|
||||||
|
color: @text-color-disabled;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.inline-reply-button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image {
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-image {
|
||||||
|
margin-top: 6px;
|
||||||
|
background-color: white;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: transparent;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: transparent;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
margin-right: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body {
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: normal;
|
||||||
|
background: transparent;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center {
|
||||||
|
background: @cc-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-list {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-list-placeholder {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Window behind control center and on all other monitors */
|
||||||
|
.blank-window {
|
||||||
|
background: alpha(black, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** Widgets ***/
|
||||||
|
|
||||||
|
/* Title widget */
|
||||||
|
.widget-title {
|
||||||
|
margin: 8px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
.widget-title > button {
|
||||||
|
font-size: initial;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.widget-title > button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DND widget */
|
||||||
|
.widget-dnd {
|
||||||
|
margin: 8px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
.widget-dnd > switch {
|
||||||
|
font-size: initial;
|
||||||
|
border-radius: 12px;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.widget-dnd > switch:checked {
|
||||||
|
background: @bg-selected;
|
||||||
|
}
|
||||||
|
.widget-dnd > switch slider {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Label widget */
|
||||||
|
.widget-label {
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
.widget-label > label {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mpris widget */
|
||||||
|
.widget-mpris {
|
||||||
|
/* The parent to all players */
|
||||||
|
}
|
||||||
|
.widget-mpris-player {
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
.widget-mpris-title {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
.widget-mpris-subtitle {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Buttons widget */
|
||||||
|
.widget-buttons-grid {
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 0px;
|
||||||
|
background-color: @noti-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-buttons-grid>flowbox>flowboxchild>button{
|
||||||
|
background: @noti-bg;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Menubar widget */
|
||||||
|
.widget-menubar>box>.menu-button-bar>button {
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .AnyName { Name defined in config after #
|
||||||
|
background-color: @noti-bg;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius:12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.AnyName>button {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.AnyName>button:hover {
|
||||||
|
background-color: @noti-bg-hover;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.topbar-buttons>button { /* Name defined in config after # */
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Volume widget */
|
||||||
|
|
||||||
|
.widget-volume {
|
||||||
|
background-color: @noti-bg;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-volume>box>button {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.per-app-volume {
|
||||||
|
background-color: @noti-bg-alt;
|
||||||
|
padding: 4px 8px 8px 8px;
|
||||||
|
margin: 0px 8px 8px 8px;
|
||||||
|
border-radius: 0px
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backlight widget */
|
||||||
|
.widget-backlight {
|
||||||
|
background-color: @noti-bg;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Title widget */
|
||||||
|
.widget-inhibitors {
|
||||||
|
margin: 8px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
.widget-inhibitors > button {
|
||||||
|
font-size: initial;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: 0px;
|
||||||
|
}
|
||||||
|
.widget-inhibitors > button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
361
home/default/.config/swaync/style.def.css
Normal file
361
home/default/.config/swaync/style.def.css
Normal file
@ -0,0 +1,361 @@
|
|||||||
|
/*
|
||||||
|
* vim: ft=less
|
||||||
|
*/
|
||||||
|
|
||||||
|
@define-color cc-bg rgba(0, 0, 0, 0.7);
|
||||||
|
|
||||||
|
@define-color noti-border-color rgba(255, 255, 255, 0.15);
|
||||||
|
@define-color noti-bg rgb(48, 48, 48);
|
||||||
|
@define-color noti-bg-darker rgb(38, 38, 38);
|
||||||
|
@define-color noti-bg-hover rgb(56, 56, 56);
|
||||||
|
@define-color noti-bg-focus rgba(68, 68, 68, 0.6);
|
||||||
|
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
|
||||||
|
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
|
||||||
|
|
||||||
|
@define-color text-color rgb(255, 255, 255);
|
||||||
|
@define-color text-color-disabled rgb(150, 150, 150);
|
||||||
|
|
||||||
|
@define-color bg-selected rgb(0, 128, 255);
|
||||||
|
|
||||||
|
.notification-row {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-row:focus,
|
||||||
|
.notification-row:hover {
|
||||||
|
background: @noti-bg-focus;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification {
|
||||||
|
border-radius: 12px;
|
||||||
|
margin: 6px 12px;
|
||||||
|
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
|
||||||
|
0 2px 6px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Uncomment to enable specific urgency colors
|
||||||
|
.low {
|
||||||
|
background: yellow;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal {
|
||||||
|
background: green;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.critical {
|
||||||
|
background: red;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
.notification-content {
|
||||||
|
background: transparent;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button {
|
||||||
|
background: @noti-close-bg;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
padding: 0;
|
||||||
|
border-radius: 100%;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-right: 16px;
|
||||||
|
box-shadow: none;
|
||||||
|
border: none;
|
||||||
|
min-width: 24px;
|
||||||
|
min-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-button:hover {
|
||||||
|
box-shadow: none;
|
||||||
|
background: @noti-close-bg-hover;
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-default-action,
|
||||||
|
.notification-action {
|
||||||
|
padding: 4px;
|
||||||
|
margin: 0;
|
||||||
|
box-shadow: none;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
color: @text-color;
|
||||||
|
transition: all 0.15s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-default-action:hover,
|
||||||
|
.notification-action:hover {
|
||||||
|
-gtk-icon-effect: none;
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-default-action {
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* When alternative actions are visible */
|
||||||
|
.notification-default-action:not(:only-child) {
|
||||||
|
border-bottom-left-radius: 0px;
|
||||||
|
border-bottom-right-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-action {
|
||||||
|
border-radius: 0px;
|
||||||
|
border-top: none;
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add bottom border radius to eliminate clipping */
|
||||||
|
.notification-action:first-child {
|
||||||
|
border-bottom-left-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification-action:last-child {
|
||||||
|
border-bottom-right-radius: 10px;
|
||||||
|
border-right: 1px solid @noti-border-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inline-reply {
|
||||||
|
margin-top: 8px;
|
||||||
|
}
|
||||||
|
.inline-reply-entry {
|
||||||
|
background: @noti-bg-darker;
|
||||||
|
color: @text-color;
|
||||||
|
caret-color: @text-color;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.inline-reply-button {
|
||||||
|
margin-left: 4px;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
border-radius: 12px;
|
||||||
|
color: @text-color;
|
||||||
|
}
|
||||||
|
.inline-reply-button:disabled {
|
||||||
|
background: initial;
|
||||||
|
color: @text-color-disabled;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.inline-reply-button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.image {
|
||||||
|
}
|
||||||
|
|
||||||
|
.body-image {
|
||||||
|
margin-top: 6px;
|
||||||
|
background-color: white;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: transparent;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.time {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: transparent;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
margin-right: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.body {
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: normal;
|
||||||
|
background: transparent;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center {
|
||||||
|
background: @cc-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-list {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-list-placeholder {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Window behind control center and on all other monitors */
|
||||||
|
.blank-window {
|
||||||
|
background: alpha(black, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** Widgets ***/
|
||||||
|
|
||||||
|
/* Title widget */
|
||||||
|
.widget-title {
|
||||||
|
margin: 8px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
.widget-title > button {
|
||||||
|
font-size: initial;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.widget-title > button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DND widget */
|
||||||
|
.widget-dnd {
|
||||||
|
margin: 8px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
.widget-dnd > switch {
|
||||||
|
font-size: initial;
|
||||||
|
border-radius: 12px;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.widget-dnd > switch:checked {
|
||||||
|
background: @bg-selected;
|
||||||
|
}
|
||||||
|
.widget-dnd > switch slider {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Label widget */
|
||||||
|
.widget-label {
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
.widget-label > label {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mpris widget */
|
||||||
|
.widget-mpris {
|
||||||
|
/* The parent to all players */
|
||||||
|
}
|
||||||
|
.widget-mpris-player {
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
.widget-mpris-title {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
.widget-mpris-subtitle {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Buttons widget */
|
||||||
|
.widget-buttons-grid {
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 12px;
|
||||||
|
background-color: @noti-bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-buttons-grid>flowbox>flowboxchild>button{
|
||||||
|
background: @noti-bg;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Menubar widget */
|
||||||
|
.widget-menubar>box>.menu-button-bar>button {
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .AnyName { Name defined in config after #
|
||||||
|
background-color: @noti-bg;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.AnyName>button {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.AnyName>button:hover {
|
||||||
|
background-color: @noti-bg-hover;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.topbar-buttons>button { /* Name defined in config after # */
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Volume widget */
|
||||||
|
|
||||||
|
.widget-volume {
|
||||||
|
background-color: @noti-bg;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-volume>box>button {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.per-app-volume {
|
||||||
|
background-color: @noti-bg-alt;
|
||||||
|
padding: 4px 8px 8px 8px;
|
||||||
|
margin: 0px 8px 8px 8px;
|
||||||
|
border-radius: 12px
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Backlight widget */
|
||||||
|
.widget-backlight {
|
||||||
|
background-color: @noti-bg;
|
||||||
|
padding: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Title widget */
|
||||||
|
.widget-inhibitors {
|
||||||
|
margin: 8px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
.widget-inhibitors > button {
|
||||||
|
font-size: initial;
|
||||||
|
color: @text-color;
|
||||||
|
text-shadow: none;
|
||||||
|
background: @noti-bg;
|
||||||
|
border: 1px solid @noti-border-color;
|
||||||
|
box-shadow: none;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.widget-inhibitors > button:hover {
|
||||||
|
background: @noti-bg-hover;
|
||||||
|
}
|
270
home/default/.config/swaync/style.latte.css
Normal file
270
home/default/.config/swaync/style.latte.css
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: "Ubuntu Nerd Font";
|
||||||
|
transition: 200ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background {
|
||||||
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #ccd0da;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
margin: 18px;
|
||||||
|
background-color: #eff1f5;
|
||||||
|
color: #4c4f69;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification {
|
||||||
|
padding: 7px;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification.critical {
|
||||||
|
box-shadow: inset 0 0 7px 0 #d20f39;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .summary {
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .time {
|
||||||
|
color: #6c6f85;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .body {
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
|
||||||
|
min-height: 3.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #4c4f69;
|
||||||
|
background-color: #ccd0da;
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
background-color: #ccd0da;
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
background-color: #209fb5;
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button {
|
||||||
|
margin: 7px;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 6.3px;
|
||||||
|
color: #eff1f5;
|
||||||
|
background-color: #d20f39;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button:hover {
|
||||||
|
background-color: #e64553;
|
||||||
|
color: #eff1f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button:active {
|
||||||
|
background-color: #d20f39;
|
||||||
|
color: #eff1f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center {
|
||||||
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #ccd0da;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
margin: 18px;
|
||||||
|
background-color: #eff1f5;
|
||||||
|
color: #4c4f69;
|
||||||
|
padding: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title {
|
||||||
|
color: #4c4f69;
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #4c4f69;
|
||||||
|
background-color: #ccd0da;
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
background-color: #acb0be;
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
background-color: #209fb5;
|
||||||
|
color: #eff1f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #4c4f69;
|
||||||
|
background-color: #ccd0da;
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
margin-top: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification {
|
||||||
|
padding: 7px;
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification.critical {
|
||||||
|
box-shadow: inset 0 0 7px 0 #d20f39;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content {
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .summary {
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .time {
|
||||||
|
color: #6c6f85;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .body {
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * {
|
||||||
|
min-height: 3.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #4c4f69;
|
||||||
|
background-color: #dce0e8;
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
background-color: #ccd0da;
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
background-color: #209fb5;
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button {
|
||||||
|
margin: 7px;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 6.3px;
|
||||||
|
color: #eff1f5;
|
||||||
|
background-color: #e64553;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button:hover {
|
||||||
|
background-color: #d20f39;
|
||||||
|
color: #eff1f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button:active {
|
||||||
|
background-color: #d20f39;
|
||||||
|
color: #eff1f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
background-color: #8c8fa1;
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
background-color: #209fb5;
|
||||||
|
color: #4c4f69;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar,
|
||||||
|
progress,
|
||||||
|
trough {
|
||||||
|
border-radius: 12.6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar {
|
||||||
|
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification.critical progress {
|
||||||
|
background-color: #d20f39;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification.low progress,
|
||||||
|
.notification.normal progress {
|
||||||
|
background-color: #1e66f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
trough {
|
||||||
|
background-color: #ccd0da;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center trough {
|
||||||
|
background-color: #bcc0cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd {
|
||||||
|
margin-top: 5px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #ccd0da;
|
||||||
|
border: 1px solid #bcc0cc;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd:checked {
|
||||||
|
background: #ccd0da;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd slider {
|
||||||
|
background: #bcc0cc;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd {
|
||||||
|
margin: 0px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch {
|
||||||
|
font-size: initial;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #ccd0da;
|
||||||
|
border: 1px solid #bcc0cc;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch:checked {
|
||||||
|
background: #ccd0da;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch slider {
|
||||||
|
background: #bcc0cc;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid #9ca0b0;
|
||||||
|
}
|
270
home/default/.config/swaync/style.mocha.css
Normal file
270
home/default/.config/swaync/style.mocha.css
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: "Ubuntu Nerd Font";
|
||||||
|
transition: 200ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background {
|
||||||
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #414559;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
margin: 18px;
|
||||||
|
background-color: #303446;
|
||||||
|
color: #c6d0f5;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification {
|
||||||
|
padding: 7px;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification.critical {
|
||||||
|
box-shadow: inset 0 0 7px 0 #e78284;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .summary {
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .time {
|
||||||
|
color: #a5adce;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification .notification-content .body {
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
|
||||||
|
min-height: 3.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #c6d0f5;
|
||||||
|
background-color: #414559;
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
background-color: #414559;
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
background-color: #85c1dc;
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button {
|
||||||
|
margin: 7px;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 6.3px;
|
||||||
|
color: #303446;
|
||||||
|
background-color: #e78284;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button:hover {
|
||||||
|
background-color: #ea999c;
|
||||||
|
color: #303446;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-notifications.background .notification-row .notification-background .close-button:active {
|
||||||
|
background-color: #e78284;
|
||||||
|
color: #303446;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center {
|
||||||
|
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #414559;
|
||||||
|
border-radius: 12.6px;
|
||||||
|
margin: 18px;
|
||||||
|
background-color: #303446;
|
||||||
|
color: #c6d0f5;
|
||||||
|
padding: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title {
|
||||||
|
color: #c6d0f5;
|
||||||
|
font-size: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #c6d0f5;
|
||||||
|
background-color: #414559;
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
background-color: #626880;
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .widget-title button:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
background-color: #85c1dc;
|
||||||
|
color: #303446;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #c6d0f5;
|
||||||
|
background-color: #414559;
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
margin-top: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification {
|
||||||
|
padding: 7px;
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification.critical {
|
||||||
|
box-shadow: inset 0 0 7px 0 #e78284;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content {
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .summary {
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .time {
|
||||||
|
color: #a5adce;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification .notification-content .body {
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * {
|
||||||
|
min-height: 3.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||||
|
border-radius: 7px;
|
||||||
|
color: #c6d0f5;
|
||||||
|
background-color: #232634;
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
margin: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
background-color: #414559;
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
background-color: #85c1dc;
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button {
|
||||||
|
margin: 7px;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 6.3px;
|
||||||
|
color: #303446;
|
||||||
|
background-color: #ea999c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button:hover {
|
||||||
|
background-color: #e78284;
|
||||||
|
color: #303446;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background .close-button:active {
|
||||||
|
background-color: #e78284;
|
||||||
|
color: #303446;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background:hover {
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
background-color: #838ba7;
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center .notification-row .notification-background:active {
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
background-color: #85c1dc;
|
||||||
|
color: #c6d0f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar,
|
||||||
|
progress,
|
||||||
|
trough {
|
||||||
|
border-radius: 12.6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar {
|
||||||
|
box-shadow: inset 0 0 0 1px #51576d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification.critical progress {
|
||||||
|
background-color: #e78284;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notification.low progress,
|
||||||
|
.notification.normal progress {
|
||||||
|
background-color: #8caaee;
|
||||||
|
}
|
||||||
|
|
||||||
|
trough {
|
||||||
|
background-color: #414559;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center trough {
|
||||||
|
background-color: #51576d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd {
|
||||||
|
margin-top: 5px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #414559;
|
||||||
|
border: 1px solid #51576d;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd:checked {
|
||||||
|
background: #414559;
|
||||||
|
}
|
||||||
|
|
||||||
|
.control-center-dnd slider {
|
||||||
|
background: #51576d;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd {
|
||||||
|
margin: 0px;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch {
|
||||||
|
font-size: initial;
|
||||||
|
border-radius: 8px;
|
||||||
|
background: #414559;
|
||||||
|
border: 1px solid #51576d;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch:checked {
|
||||||
|
background: #414559;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-dnd > switch slider {
|
||||||
|
background: #51576d;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid #737994;
|
||||||
|
}
|
109
home/default/.config/sworkstyle/config.toml
Normal file
109
home/default/.config/sworkstyle/config.toml
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
# https://www.nerdfonts.com/cheat-sheet
|
||||||
|
# https://fontawesome.com/icons
|
||||||
|
|
||||||
|
fallback = ''
|
||||||
|
separator = ' '
|
||||||
|
|
||||||
|
[matching]
|
||||||
|
## partials
|
||||||
|
'/GitHub/' = ''
|
||||||
|
'/GitLab/' = ''
|
||||||
|
'/NVIM ?\w*/' = ''
|
||||||
|
'/npm/' = ''
|
||||||
|
'/node/' = ''
|
||||||
|
'/yarn/' = ''
|
||||||
|
'/Stack Overflow/' = ''
|
||||||
|
"/layer02.net/" = ""
|
||||||
|
"/WhatsApp/" = ""
|
||||||
|
"/Org Agenda/" = ""
|
||||||
|
|
||||||
|
## browsers
|
||||||
|
'google-chrome' = ''
|
||||||
|
'Google-chrome' = ''
|
||||||
|
'Google-chrome-unstable' = ''
|
||||||
|
'google-chrome-unstable' = ''
|
||||||
|
'Google-chrome-beta' = ''
|
||||||
|
'google-chrome-beta' = ''
|
||||||
|
'chromium' = ''
|
||||||
|
'firefox' = ''
|
||||||
|
'firefoxdeveloperedition' = ''
|
||||||
|
'vivaldi-stable' = ''
|
||||||
|
'LibreWolf' = ''
|
||||||
|
'librewolf-default' = ''
|
||||||
|
|
||||||
|
## default applications
|
||||||
|
'foot' = ''
|
||||||
|
'/foot/' = ''
|
||||||
|
'floating_shell' = ''
|
||||||
|
'pcmanfm' = ''
|
||||||
|
'pamac-manager' = ''
|
||||||
|
'/Bluetooth/' = ''
|
||||||
|
'file-roller' = ''
|
||||||
|
'swappy' = ''
|
||||||
|
|
||||||
|
## email
|
||||||
|
'Thunderbird' = ''
|
||||||
|
'thunderbird' = ''
|
||||||
|
'thunderbird-beta' = ''
|
||||||
|
'evolution' = ''
|
||||||
|
|
||||||
|
## ide
|
||||||
|
'code' = ''
|
||||||
|
'Code' = ''
|
||||||
|
'/- Visual Studio Code/' = ''
|
||||||
|
'/IntelliJ/' = ''
|
||||||
|
'code-url-handler' = ''
|
||||||
|
'emacs' = ''
|
||||||
|
|
||||||
|
# messenger
|
||||||
|
'whatsapp-for-linux' = ''
|
||||||
|
'Slack' = ''
|
||||||
|
'/Telegram/' = ''
|
||||||
|
'org.telegram.desktop' = ''
|
||||||
|
'/Microsoft Teams/' = ''
|
||||||
|
'Signal' = ''
|
||||||
|
'discord' = ''
|
||||||
|
'im.dino.Dino' = ''
|
||||||
|
'dino' = ''
|
||||||
|
"SchildiChat" = ""
|
||||||
|
|
||||||
|
## auth
|
||||||
|
'polkit-gnome-authentication-agent-1' = ''
|
||||||
|
'Keybase' = ''
|
||||||
|
|
||||||
|
## additional applications
|
||||||
|
'balena-etcher' = ''
|
||||||
|
'Steam' = ''
|
||||||
|
'steam' = ''
|
||||||
|
'cs2' = ''
|
||||||
|
'rpcs3' = ''
|
||||||
|
'Ryujinx' = ''
|
||||||
|
'vlc' = ''
|
||||||
|
'org.qbittorrent.qBittorrent' = ''
|
||||||
|
'transmission-gtk' = ''
|
||||||
|
'Insomnia' = ''
|
||||||
|
'Bitwarden' = ''
|
||||||
|
'org.keepassxc.KeePassXC' = ''
|
||||||
|
'Spotify' = ''
|
||||||
|
'YouTube Music' = ''
|
||||||
|
'Alacritty' = ''
|
||||||
|
'kitty' = ''
|
||||||
|
'font-manager' = ''
|
||||||
|
'lutris' = ''
|
||||||
|
'/Wine/' = ''
|
||||||
|
'Arctype' = ''
|
||||||
|
'Around' = ''
|
||||||
|
'org.wezfurlong.wezterm' = ''
|
||||||
|
'mpv' = ''
|
||||||
|
|
||||||
|
"xdg-desktop-portal-gtk" = ""
|
||||||
|
"bottles" = ""
|
||||||
|
"youtube" = ""
|
||||||
|
"FreeTube" = ""
|
||||||
|
"com.github.tchx84.Flatseal" = ""
|
||||||
|
"deluge" = ""
|
||||||
|
"Nsxiv" = ""
|
||||||
|
|
||||||
|
"info.mumble.Mumble" = ""
|
||||||
|
"Vintage Story" = ""
|
||||||
|
"com.github.wwmm.easyeffects" = ''
|
@ -1,43 +1,91 @@
|
|||||||
{
|
{
|
||||||
// "layer": "top", // Waybar at top layer
|
// "layer": "top", // Waybar at top layer
|
||||||
"position": "bottom", // Waybar position (top|bottom|left|right)
|
"position": "top", // Waybar position (top|bottom|left|right)
|
||||||
"height": 20, // Waybar height (to be removed for auto height)
|
"height": 20, // Waybar height (to be removed for auto height)
|
||||||
// "width": 1280, // Waybar width
|
// "width": 1280, // Waybar width
|
||||||
// Choose the order of the modules
|
// Choose the order of the modules
|
||||||
"modules-left": ["sway/workspaces", "sway/mode", "custom/media"],
|
"modules-left": ["sway/workspaces", "sway/mode", "custom/media"],
|
||||||
"modules-center": [],
|
//"modules-center": [],
|
||||||
"modules-right": ["idle_inhibitor", "mpd", "pulseaudio", "network", "cpu", "memory", "temperature", "battery", "clock", "tray", "custom/swaync", "custom/emacsstatus"],
|
//"modules-right": ["idle_inhibitor", "mpd", "pulseaudio", "network", "cpu", "memory", "temperature", "battery", "custom/scratchpad_indicator", "clock", "tray", "custom/swaync", "custom/emacsstatus" ],
|
||||||
|
"modules-right": ["pulseaudio", "network", "battery", "custom/scratchpad_indicator", "custom/neralie", "tray", "custom/swaync", "custom/emacsstatus" ],
|
||||||
|
"river/tags": {
|
||||||
|
"num-tags": 5,
|
||||||
|
"tag-labels": {
|
||||||
|
"1": "",
|
||||||
|
"2": "",
|
||||||
|
"3": "",
|
||||||
|
"4": "",
|
||||||
|
"5": "",
|
||||||
|
"6": "",
|
||||||
|
"7": "",
|
||||||
|
"8": "",
|
||||||
|
"9": "",
|
||||||
|
"10": "",
|
||||||
|
}
|
||||||
|
},
|
||||||
"sway/workspaces": {
|
"sway/workspaces": {
|
||||||
"disable-scroll-wraparound": true
|
"disable-scroll-wraparound": true
|
||||||
},
|
},
|
||||||
// Modules configuration
|
// Modules configuration
|
||||||
"sway/workspaces": {
|
"sway/workspaces": {
|
||||||
"persistent_workspaces": {
|
"persistent_workspaces": {
|
||||||
"1": ["HDMI-A-1"],
|
// "1": ["DVI-D-1"],
|
||||||
"2": ["HDMI-A-1"],
|
// "2": ["DVI-D-1"],
|
||||||
"3": ["HDMI-A-1"],
|
// "3": ["DVI-D-1"],
|
||||||
"4": ["HDMI-A-1"],
|
// "4": ["DVI-D-1"],
|
||||||
"5": ["HDMI-A-1"],
|
// "5": ["DVI-D-1"],
|
||||||
"6": ["DVI-D-1"],
|
// "6": ["HDMI-A-1"],
|
||||||
"7": ["DVI-D-1"],
|
// "7": ["HDMI-A-1"],
|
||||||
"8": ["DVI-D-1"],
|
// "8": ["HDMI-A-1"],
|
||||||
"9": ["DVI-D-1"],
|
// "9": ["HDMI-A-1"],
|
||||||
"10": ["DVI-D-1"]
|
// "10": ["HDMI-A-1"],
|
||||||
|
//"1": ["HDMI-A-1"],
|
||||||
|
//"2": ["HDMI-A-1"],
|
||||||
|
//"3": ["HDMI-A-1"],
|
||||||
|
//"4": ["HDMI-A-1"],
|
||||||
|
//"5": ["HDMI-A-1"],
|
||||||
|
//"6": ["DVI-D-1"],
|
||||||
|
//"7": ["DVI-D-1"],
|
||||||
|
//"8": ["DVI-D-1"],
|
||||||
|
//"9": ["DVI-D-1"],
|
||||||
|
//"10": ["DVI-D-1"]
|
||||||
},
|
},
|
||||||
// "disable-scroll": true,
|
// "disable-scroll": true,
|
||||||
"all-outputs": false,
|
"all-outputs": false,
|
||||||
"format": "{icon}",
|
"format": "{name}",
|
||||||
|
//"format": "{icon}",
|
||||||
"format-icons": {
|
"format-icons": {
|
||||||
"1": "1-em", // emacs
|
"1": "+",
|
||||||
"2": "2-se", // search/web
|
"2": "+",
|
||||||
"3": "3-tm", // terminal
|
"3": "+",
|
||||||
"4": "4-gm",
|
"4": "+",
|
||||||
"5": "5",
|
"5": "+",
|
||||||
"6": "6",
|
"6": "+",
|
||||||
"7": "7",
|
"7": "+",
|
||||||
"8": "8-sch", // schedule
|
"8": "+",
|
||||||
"9": "9-comms",
|
"9": "+",
|
||||||
"10": "10-mon", // monitor
|
"10": "+",
|
||||||
|
// "1": "1",
|
||||||
|
// "2": "2",
|
||||||
|
// "3": "3-sch", // schedule
|
||||||
|
// "4": "4-comms",
|
||||||
|
// "5": "5-mon", // monitor
|
||||||
|
// "6": "6-em", // emacs
|
||||||
|
// "7": "7-se", // search/web
|
||||||
|
// "8": "8-tm", // terminal
|
||||||
|
// "9": "9-gm",
|
||||||
|
// "10": "10",
|
||||||
|
|
||||||
|
//"1": "1-em", // emacs
|
||||||
|
//"2": "2-se", // search/web
|
||||||
|
//"3": "3-tm", // terminal
|
||||||
|
//"4": "4-gm",
|
||||||
|
//"5": "5",
|
||||||
|
//"6": "6",
|
||||||
|
//"7": "7",
|
||||||
|
//"8": "8-sch", // schedule
|
||||||
|
//"9": "9-comms",
|
||||||
|
//"10": "10-mon", // monitor
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"keyboard-state": {
|
"keyboard-state": {
|
||||||
@ -66,9 +114,12 @@
|
|||||||
"clock": {
|
"clock": {
|
||||||
// "timezone": "America/New_York",
|
// "timezone": "America/New_York",
|
||||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
"format": "{:%Y-%m-%d %H:%M:%S}",
|
"format": "{:%H:%M}",
|
||||||
|
//"format": "{:%Y-%m-%d %H:%M:%S}",
|
||||||
//"format": "{:%Y-%m-%d %I:%M:%S %p}",
|
//"format": "{:%Y-%m-%d %I:%M:%S %p}",
|
||||||
"interval": 1
|
//"format": "day # {:%j}",
|
||||||
|
"interval": 1,
|
||||||
|
"on-click": "uxnemu ~/.local/uxn/catclock.rom"
|
||||||
},
|
},
|
||||||
"cpu": {
|
"cpu": {
|
||||||
"format": " {usage}%",
|
"format": " {usage}%",
|
||||||
@ -96,7 +147,8 @@
|
|||||||
"format-ethernet": " {ifname}: {ipaddr}/{cidr}",
|
"format-ethernet": " {ifname}: {ipaddr}/{cidr}",
|
||||||
"format-linked": " {ifname} (No IP)",
|
"format-linked": " {ifname} (No IP)",
|
||||||
"format-disconnected": "⚠ Disconnected",
|
"format-disconnected": "⚠ Disconnected",
|
||||||
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
"format-alt": "{ifname}: {ipaddr}/{cidr}",
|
||||||
|
"on-click": "$TERMINAL -e nmtui"
|
||||||
},
|
},
|
||||||
"pulseaudio": {
|
"pulseaudio": {
|
||||||
// "scroll-step": 1, // %, can be a float
|
// "scroll-step": 1, // %, can be a float
|
||||||
@ -164,8 +216,23 @@
|
|||||||
"restart-interval": 1
|
"restart-interval": 1
|
||||||
},
|
},
|
||||||
"custom/emacsstatus": {
|
"custom/emacsstatus": {
|
||||||
|
"return-type": "json",
|
||||||
"exec": "~/.config/waybar/scripts/emacs-status.sh",
|
"exec": "~/.config/waybar/scripts/emacs-status.sh",
|
||||||
"on-click": "emacsclient -c || emacs",
|
"on-click": "emacsclient -c -a ''",
|
||||||
|
"format": "{}",
|
||||||
"restart-interval": 3
|
"restart-interval": 3
|
||||||
}
|
},
|
||||||
|
"custom/scratchpad_indicator": {
|
||||||
|
"interval": 1,
|
||||||
|
"return-type": "json",
|
||||||
|
"exec": "swaymsg -t get_tree | jq --unbuffered --compact-output '( select(.name == \"root\") | .nodes[] | select(.name == \"__i3\") | .nodes[] | select(.name == \"__i3_scratch\") | .focus) as $scratch_ids | [.. | (.nodes? + .floating_nodes?) // empty | .[] | select(.id |IN($scratch_ids[]))] as $scratch_nodes | { text: \"\\($scratch_nodes | length)\", tooltip: $scratch_nodes | map(\"\\(.app_id // .window_properties.class) (\\(.id)): \\(.name)\") | join(\"\\n\") }'",
|
||||||
|
"format": " {}",
|
||||||
|
"on-click": "exec swaymsg 'scratchpad show'",
|
||||||
|
"on-click-right": "exec swaymsg 'move scratchpad'"
|
||||||
|
},
|
||||||
|
"custom/neralie": {
|
||||||
|
"exec": "~/.local/bin/neralie",
|
||||||
|
"on-click": "uxnemu ~/.local/uxn/catclock.rom",
|
||||||
|
"restart-interval": 1
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
239
home/default/.config/waybar/config-river
Normal file
239
home/default/.config/waybar/config-river
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
{
|
||||||
|
// "layer": "top", // Waybar at top layer
|
||||||
|
"position": "top", // Waybar position (top|bottom|left|right)
|
||||||
|
"height": 20, // Waybar height (to be removed for auto height)
|
||||||
|
// "width": 1280, // Waybar width
|
||||||
|
// Choose the order of the modules
|
||||||
|
//"modules-left": ["sway/workspaces", "sway/mode", "custom/media"],
|
||||||
|
"modules-left": ["river/tags", "custom/media"],
|
||||||
|
//"modules-center": [],
|
||||||
|
//"modules-right": ["idle_inhibitor", "mpd", "pulseaudio", "network", "cpu", "memory", "temperature", "battery", "custom/scratchpad_indicator", "clock", "tray", "custom/swaync", "custom/emacsstatus" ],
|
||||||
|
"modules-right": ["pulseaudio", "network", "battery", "custom/neralie", "tray", "custom/swaync", "custom/emacsstatus" ],
|
||||||
|
"river/tags": {
|
||||||
|
"num-tags": 5,
|
||||||
|
"tag-labels": {
|
||||||
|
"1": "",
|
||||||
|
"2": "",
|
||||||
|
"3": "",
|
||||||
|
"4": "",
|
||||||
|
"5": "",
|
||||||
|
"6": "",
|
||||||
|
"7": "",
|
||||||
|
"8": "",
|
||||||
|
"9": "",
|
||||||
|
"10": "",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sway/workspaces": {
|
||||||
|
"disable-scroll-wraparound": true
|
||||||
|
},
|
||||||
|
// Modules configuration
|
||||||
|
"sway/workspaces": {
|
||||||
|
"persistent_workspaces": {
|
||||||
|
// "1": ["DVI-D-1"],
|
||||||
|
// "2": ["DVI-D-1"],
|
||||||
|
// "3": ["DVI-D-1"],
|
||||||
|
// "4": ["DVI-D-1"],
|
||||||
|
// "5": ["DVI-D-1"],
|
||||||
|
// "6": ["HDMI-A-1"],
|
||||||
|
// "7": ["HDMI-A-1"],
|
||||||
|
// "8": ["HDMI-A-1"],
|
||||||
|
// "9": ["HDMI-A-1"],
|
||||||
|
// "10": ["HDMI-A-1"],
|
||||||
|
//"1": ["HDMI-A-1"],
|
||||||
|
//"2": ["HDMI-A-1"],
|
||||||
|
//"3": ["HDMI-A-1"],
|
||||||
|
//"4": ["HDMI-A-1"],
|
||||||
|
//"5": ["HDMI-A-1"],
|
||||||
|
//"6": ["DVI-D-1"],
|
||||||
|
//"7": ["DVI-D-1"],
|
||||||
|
//"8": ["DVI-D-1"],
|
||||||
|
//"9": ["DVI-D-1"],
|
||||||
|
//"10": ["DVI-D-1"]
|
||||||
|
},
|
||||||
|
// "disable-scroll": true,
|
||||||
|
"all-outputs": false,
|
||||||
|
"format": "{name}",
|
||||||
|
//"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"1": "+",
|
||||||
|
"2": "+",
|
||||||
|
"3": "+",
|
||||||
|
"4": "+",
|
||||||
|
"5": "+",
|
||||||
|
"6": "+",
|
||||||
|
"7": "+",
|
||||||
|
"8": "+",
|
||||||
|
"9": "+",
|
||||||
|
"10": "+",
|
||||||
|
// "1": "1",
|
||||||
|
// "2": "2",
|
||||||
|
// "3": "3-sch", // schedule
|
||||||
|
// "4": "4-comms",
|
||||||
|
// "5": "5-mon", // monitor
|
||||||
|
// "6": "6-em", // emacs
|
||||||
|
// "7": "7-se", // search/web
|
||||||
|
// "8": "8-tm", // terminal
|
||||||
|
// "9": "9-gm",
|
||||||
|
// "10": "10",
|
||||||
|
|
||||||
|
//"1": "1-em", // emacs
|
||||||
|
//"2": "2-se", // search/web
|
||||||
|
//"3": "3-tm", // terminal
|
||||||
|
//"4": "4-gm",
|
||||||
|
//"5": "5",
|
||||||
|
//"6": "6",
|
||||||
|
//"7": "7",
|
||||||
|
//"8": "8-sch", // schedule
|
||||||
|
//"9": "9-comms",
|
||||||
|
//"10": "10-mon", // monitor
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"keyboard-state": {
|
||||||
|
"numlock": true,
|
||||||
|
"capslock": true,
|
||||||
|
"format": "{name} {icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"locked": "",
|
||||||
|
"unlocked": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sway/mode": {
|
||||||
|
"format": "<span style=\"italic\">{}</span>"
|
||||||
|
},
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": "",
|
||||||
|
"deactivated": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 15,
|
||||||
|
"spacing": 10
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
// "timezone": "America/New_York",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"format": "{:%H:%M}",
|
||||||
|
//"format": "{:%Y-%m-%d %H:%M:%S}",
|
||||||
|
//"format": "{:%Y-%m-%d %I:%M:%S %p}",
|
||||||
|
//"format": "day # {:%j}",
|
||||||
|
"interval": 1,
|
||||||
|
"on-click": "uxnemu ~/.local/uxn/catclock.rom"
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"format": " {usage}%",
|
||||||
|
// "tooltip": false
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"format": " {}%"
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
"good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15
|
||||||
|
},
|
||||||
|
"format": "{icon} {capacity}% ({time})",
|
||||||
|
"format-charging": " {capacity}%",
|
||||||
|
"format-plugged": " {capacity}%",
|
||||||
|
// "format-good": "", // An empty format will hide the module
|
||||||
|
// "format-full": "",
|
||||||
|
"format-icons": ["", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||||
|
"format-wifi": " {essid} ({signalStrength}%)",
|
||||||
|
"format-ethernet": " {ifname}: {ipaddr}/{cidr}",
|
||||||
|
"format-linked": " {ifname} (No IP)",
|
||||||
|
"format-disconnected": "⚠ Disconnected",
|
||||||
|
"format-alt": "{ifname}: {ipaddr}/{cidr}",
|
||||||
|
"on-click": "$TERMINAL -e nmtui"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
// "scroll-step": 1, // %, can be a float
|
||||||
|
"format": "{icon} {volume}%",
|
||||||
|
"format-bluetooth": "{volume}% {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": " {volume}%",
|
||||||
|
// "format-source": "{volume}% ",
|
||||||
|
// "format-source-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
},
|
||||||
|
"on-click": "$TERMINAL -e pulsemixer"
|
||||||
|
// "on-click": "pavucontrol"
|
||||||
|
},
|
||||||
|
"mpd": {
|
||||||
|
"server": "localhost",
|
||||||
|
"port": 6600,
|
||||||
|
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon} {artist} | {title} | {elapsedTime:%M:%S}/{totalTime:%M:%S}",
|
||||||
|
// "max-length": 200,
|
||||||
|
"format-disconnected": "-",
|
||||||
|
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped",
|
||||||
|
"interval": 2,
|
||||||
|
"consume-icons": {
|
||||||
|
"on": " " // Icon shows only when "consume" is on
|
||||||
|
},
|
||||||
|
"random-icons": {
|
||||||
|
"off": "<span color=\"#f53c3c\"></span> ", // Icon grayed out when "random" is off
|
||||||
|
"on": " "
|
||||||
|
},
|
||||||
|
"repeat-icons": {
|
||||||
|
"on": " "
|
||||||
|
},
|
||||||
|
"single-icons": {
|
||||||
|
"on": "1 "
|
||||||
|
},
|
||||||
|
"state-icons": {
|
||||||
|
"paused": "",
|
||||||
|
"playing": ""
|
||||||
|
},
|
||||||
|
"tooltip-format": "MPD (connected)",
|
||||||
|
"tooltip-format-disconnected": "MPD (disconnected)"
|
||||||
|
},
|
||||||
|
"custom/media": {
|
||||||
|
"format": "{icon} {}",
|
||||||
|
"return-type": "json",
|
||||||
|
"max-length": 40,
|
||||||
|
"format-icons": {
|
||||||
|
"spotify": "",
|
||||||
|
"default": "🎜"
|
||||||
|
},
|
||||||
|
"escape": true,
|
||||||
|
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
|
||||||
|
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
|
||||||
|
},
|
||||||
|
"custom/swaync": {
|
||||||
|
"exec": "~/.config/waybar/scripts/notifications.sh",
|
||||||
|
"on-click": "swaync-client -t",
|
||||||
|
"restart-interval": 1
|
||||||
|
},
|
||||||
|
"custom/emacsstatus": {
|
||||||
|
"return-type": "json",
|
||||||
|
"exec": "~/.config/waybar/scripts/emacs-status.sh",
|
||||||
|
"on-click": "emacsclient -c -a ''",
|
||||||
|
"format": "{}",
|
||||||
|
"restart-interval": 3
|
||||||
|
},
|
||||||
|
"custom/scratchpad_indicator": {
|
||||||
|
"interval": 1,
|
||||||
|
"return-type": "json",
|
||||||
|
"exec": "swaymsg -t get_tree | jq --unbuffered --compact-output '( select(.name == \"root\") | .nodes[] | select(.name == \"__i3\") | .nodes[] | select(.name == \"__i3_scratch\") | .focus) as $scratch_ids | [.. | (.nodes? + .floating_nodes?) // empty | .[] | select(.id |IN($scratch_ids[]))] as $scratch_nodes | { text: \"\\($scratch_nodes | length)\", tooltip: $scratch_nodes | map(\"\\(.app_id // .window_properties.class) (\\(.id)): \\(.name)\") | join(\"\\n\") }'",
|
||||||
|
"format": " {}",
|
||||||
|
"on-click": "exec swaymsg 'scratchpad show'",
|
||||||
|
"on-click-right": "exec swaymsg 'move scratchpad'"
|
||||||
|
},
|
||||||
|
"custom/neralie": {
|
||||||
|
"exec": "~/.local/bin/neralie",
|
||||||
|
"on-click": "uxnemu ~/.local/uxn/catclock.rom",
|
||||||
|
"restart-interval": 1
|
||||||
|
},
|
||||||
|
}
|
@ -1,7 +1,15 @@
|
|||||||
|
inactive="{
|
||||||
|
\"text\": \"x\",
|
||||||
|
\"tooltip\": \"emacs is not running.\"
|
||||||
|
}\n"
|
||||||
|
active="{
|
||||||
|
\"text\": \"e+\",
|
||||||
|
\"tooltip\": \"emacs is running.\"
|
||||||
|
}\n"
|
||||||
pgrep emacs >/dev/null
|
pgrep emacs >/dev/null
|
||||||
if [ $? -eq 1 ]
|
if [ $? -eq 1 ]
|
||||||
then
|
then
|
||||||
echo 'X'
|
echo $inactive
|
||||||
else
|
else
|
||||||
echo 'e+'
|
echo $active
|
||||||
fi
|
fi
|
||||||
|
8
home/default/.config/waybar/scripts/neralie-forever.sh
Executable file
8
home/default/.config/waybar/scripts/neralie-forever.sh
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
neralie
|
||||||
|
sleep .5
|
||||||
|
neralie
|
||||||
|
sleep .5
|
||||||
|
done
|
@ -1,44 +1,70 @@
|
|||||||
|
/* white */
|
||||||
|
/*
|
||||||
|
@define-color bg white;
|
||||||
|
@define-color button black;
|
||||||
|
@define-color button-occupied black;
|
||||||
|
@define-color button-selected black;
|
||||||
|
@define-color button-box lightgrey;
|
||||||
|
@define-color widget black;
|
||||||
|
@define-color widget-border-right transparent;
|
||||||
|
@define-color border-bottom rgba(100, 114, 125, 0.5);
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* black */
|
||||||
|
/*@define-color bg black;
|
||||||
|
@define-color button grey;
|
||||||
|
@define-color button-occupied grey;
|
||||||
|
@define-color button-selected grey;
|
||||||
|
@define-color button-box #424242;
|
||||||
|
@define-color widget grey;
|
||||||
|
@define-color border-bottom transparent;
|
||||||
|
@define-color widget-border-right #424242;*/
|
||||||
|
|
||||||
|
/* grey */
|
||||||
|
/*
|
||||||
|
@define-color bg #222222;
|
||||||
|
@define-color button #bbbbbb;
|
||||||
|
@define-color button-occupied #bbbbbb;
|
||||||
|
@define-color button-selected #bbbbbb;
|
||||||
|
@define-color button-box #424242;
|
||||||
|
@define-color widget #999999;
|
||||||
|
@define-color widget-border-right #424242;
|
||||||
|
@define-color border-bottom transparent;*/
|
||||||
|
|
||||||
|
/* Tomorrow Night (#161616 bg) */
|
||||||
|
@define-color border-bottom transparent;
|
||||||
|
@define-color widget-border-right transparent;
|
||||||
|
@define-color button #444444;
|
||||||
|
@define-color button-occupied #c5c8c6;
|
||||||
|
@define-color button-selected grey;
|
||||||
|
@define-color button-box #424242;
|
||||||
|
@define-color bg rgba(22,22,22,0.9);
|
||||||
|
@define-color widget #c5c8c6;
|
||||||
|
@define-color border-bottom #333333;
|
||||||
|
/*@define-color bg rgba(19,19,19,1);*/
|
||||||
|
|
||||||
* {
|
* {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
font-family: IBMPlexMono, monospace;
|
/* Cozette */
|
||||||
|
font-family: 'IBM Plex Mono', 'Symbols Nerd Font';
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
/*font-size: 14px;*/
|
/*font-size: 14px;*/
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces {
|
|
||||||
margin: 0 4px;
|
|
||||||
}
|
|
||||||
#workspaces button {
|
|
||||||
/*background-color: #6B313D;*/
|
|
||||||
/*color: #bbbbbb;*/
|
|
||||||
background-color: #444444;
|
|
||||||
color: #bbbbbb;
|
|
||||||
padding: 0 8px;
|
|
||||||
min-width: 0;
|
|
||||||
}
|
|
||||||
#workspaces button.persistent {
|
|
||||||
/*background-color: #000000;*/
|
|
||||||
background-color: #222222;
|
|
||||||
color: #bbbbbb;
|
|
||||||
}
|
|
||||||
#workspaces button.focused {
|
|
||||||
color: #000000;
|
|
||||||
background-color: #888888;
|
|
||||||
}
|
|
||||||
#workspaces button.visible {
|
|
||||||
color: #000000;
|
|
||||||
background-color: #888888;
|
|
||||||
}
|
|
||||||
#workspaces button.urgent {
|
|
||||||
background-color: #eb4d4b;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
window#waybar {
|
||||||
/*background-color: #000;*/
|
/* background colors:
|
||||||
background-color: #222222;
|
* #000
|
||||||
color: #ffffff;
|
* #222222 *def*
|
||||||
|
* #161616
|
||||||
|
*/
|
||||||
|
/* colors
|
||||||
|
* #999999 def
|
||||||
|
* #bbbbbb
|
||||||
|
* #ffffff
|
||||||
|
*/
|
||||||
|
background-color: @bg;
|
||||||
|
border-bottom: 2px solid @border-bottom;
|
||||||
/*transition-property: background-color;*/
|
/*transition-property: background-color;*/
|
||||||
/*transition-duration: .5s;*/
|
/*transition-duration: .5s;*/
|
||||||
}
|
}
|
||||||
@ -65,6 +91,66 @@ window#waybar.chromium {
|
|||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*background-color: #6B313D;*/
|
||||||
|
|
||||||
|
#workspaces button.persistent {
|
||||||
|
background-color: transparent;
|
||||||
|
color: @button;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
transition: none;
|
||||||
|
/*
|
||||||
|
* background colors:
|
||||||
|
* transparent
|
||||||
|
* #444444
|
||||||
|
*/
|
||||||
|
background-color: transparent;
|
||||||
|
/* colors:
|
||||||
|
* #bbbbbb
|
||||||
|
*/
|
||||||
|
color: @button-occupied;
|
||||||
|
padding: 0 8px;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*#workspaces button.active {
|
||||||
|
background-color: #444444;
|
||||||
|
color: #bbbbbb;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
#workspaces button.visible {
|
||||||
|
/*color: #000000;
|
||||||
|
background-color: #888888;*/
|
||||||
|
/*
|
||||||
|
* box shadow colors
|
||||||
|
* #424242 *def*
|
||||||
|
* #555555
|
||||||
|
*/
|
||||||
|
box-shadow: inset 2px 2px @button-box, inset -2px -2px @button-box;
|
||||||
|
color:@button-selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* river tags */
|
||||||
|
#tags button {
|
||||||
|
color: @button; /*#444444*/
|
||||||
|
padding: 0 8px;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
#tags button.occupied {
|
||||||
|
color: @button-occupied /*#6B313D*/
|
||||||
|
}
|
||||||
|
#tags button.focused {
|
||||||
|
color: @button-selected; /*#9EA68F*/
|
||||||
|
box-shadow: inset 2px 2px @button-box, inset -2px -2px @button-box;
|
||||||
|
}
|
||||||
|
#tags button.urgent {
|
||||||
|
color: red /* def red */
|
||||||
|
}
|
||||||
|
|
||||||
#mode {
|
#mode {
|
||||||
background-color: #64727D;
|
background-color: #64727D;
|
||||||
@ -85,20 +171,37 @@ window#waybar.chromium {
|
|||||||
#idle_inhibitor,
|
#idle_inhibitor,
|
||||||
#bluetooth,
|
#bluetooth,
|
||||||
#custom-swaync,
|
#custom-swaync,
|
||||||
|
#custom-scratchpad_indicator,
|
||||||
|
#custom-emacsstatus,
|
||||||
|
#custom-neralie,
|
||||||
#mpd {
|
#mpd {
|
||||||
padding: 0 6px;
|
padding: 0 6px;
|
||||||
border-right: 2px solid #424242;
|
/*padding-right: 10px;*/
|
||||||
color: #999999;
|
/*
|
||||||
/*color: #ffffff*/
|
* border colors
|
||||||
|
* #424242 *def*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
border-right: 2px solid @widget-border-right;
|
||||||
|
/*
|
||||||
|
* colors
|
||||||
|
* #999999 *def*
|
||||||
|
* #bbbbbb
|
||||||
|
* #ffffff
|
||||||
|
*/
|
||||||
|
color: @widget
|
||||||
}
|
}
|
||||||
|
|
||||||
/* im using this near the right edge */
|
/* im using this near the right edge */
|
||||||
#custom-emacsstatus {
|
/* test {
|
||||||
padding: 0 6px;
|
padding: 0 6px;
|
||||||
color: #999999;
|
color: #999999;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
#window,
|
#window,
|
||||||
|
#workspaces {
|
||||||
|
margin: 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
/* If workspaces is the leftmost module, omit left margin */
|
/* If workspaces is the leftmost module, omit left margin */
|
||||||
.modules-left > widget:first-child > #workspaces {
|
.modules-left > widget:first-child > #workspaces {
|
||||||
@ -141,11 +244,11 @@ window#waybar.chromium {
|
|||||||
#battery.critical:not(.charging) {
|
#battery.critical:not(.charging) {
|
||||||
background-color: #f53c3c;
|
background-color: #f53c3c;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
/*animation-name: blink;
|
animation-name: blink;
|
||||||
animation-duration: 0.5s;
|
animation-duration: 0.5s;
|
||||||
animation-timing-function: linear;
|
animation-timing-function: linear;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-direction: alternate;*/
|
animation-direction: alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
label:focus {
|
label:focus {
|
||||||
|
20
home/default/.config/wofi/config
Normal file
20
home/default/.config/wofi/config
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
prompt=X
|
||||||
|
allow_markup=true
|
||||||
|
dmenu-parse_action=true
|
||||||
|
|
||||||
|
stylesheet=style.css
|
||||||
|
watch_css=true
|
||||||
|
#colors=colors
|
||||||
|
|
||||||
|
#width=400
|
||||||
|
#width=300
|
||||||
|
#lines=17
|
||||||
|
#height=100%
|
||||||
|
#image_size=20
|
||||||
|
allow_images=false
|
||||||
|
hide_scroll=true
|
||||||
|
|
||||||
|
#gtk_dark=true
|
||||||
|
|
||||||
|
layer=overlay
|
||||||
|
#location=9
|
52
home/default/.config/wofi/style.css
Normal file
52
home/default/.config/wofi/style.css
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
* {
|
||||||
|
font-family: "Noto Sans", sans-serif;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
box-shadow: inset 0 0 0 1px #333333;
|
||||||
|
background-color: transparent;
|
||||||
|
border-radius: 0px; /*12.6px*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#input {
|
||||||
|
border: none;
|
||||||
|
background-color: rgba(0,0,0,.2); /* #444444 rgba(0,0,0,.2) */
|
||||||
|
color: #c5c8c6; /* white */
|
||||||
|
/*border: 2px solid #161616;*/
|
||||||
|
border-radius: 0px; /*7px*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#inner-box {
|
||||||
|
/*background-color: #161616;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#outer-box {
|
||||||
|
margin: 1px;
|
||||||
|
padding: 3px; /* 10px */
|
||||||
|
background-color: rgba(29, 31, 33,0.9); /* #222222 rgba(22,22,22,0.9) rgba(29, 31, 33,0.9) */
|
||||||
|
border-radius: 0px; /*12.6px*/
|
||||||
|
/*filter: blur(1.5em)*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#scroll {
|
||||||
|
/*margin: 5px;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#text {
|
||||||
|
padding: 4px;
|
||||||
|
color: grey; /* probably c5c8c6 */
|
||||||
|
}
|
||||||
|
#text:selected {
|
||||||
|
color: #c5c8c6;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*#entry:nth-child(even){
|
||||||
|
background-color: #161719;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
#entry:selected {
|
||||||
|
background-color: transparent; /* #222222 */
|
||||||
|
/*border-radius: 7px;*/
|
||||||
|
/*box-shadow: inset 0 0 0 1px #333333;*/
|
||||||
|
}
|
7
home/default/.config/zathura/zathurarc
Normal file
7
home/default/.config/zathura/zathurarc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
set default-bg "#1d1f21"
|
||||||
|
set statusbar-bg "#161719"
|
||||||
|
set statusbar-fg "#c5c5c5"
|
||||||
|
set notification-bg "#1d1f21"
|
||||||
|
set notification-fg "#c5c5c5"
|
||||||
|
|
||||||
|
set selection-clipboard clipboard
|
@ -11,11 +11,9 @@ setopt interactive_comments
|
|||||||
# History in cache directory:
|
# History in cache directory:
|
||||||
HISTSIZE=10000000
|
HISTSIZE=10000000
|
||||||
SAVEHIST=10000000
|
SAVEHIST=10000000
|
||||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.cache}/zsh/" ] && mkdir ${XDG_CACHE_HOME:-$HOME/.cache}/zsh/
|
[ -d "${XDG_CONFIG_HOME:-$HOME/.cache}/zsh/" ] || mkdir ${XDG_CACHE_HOME:-$HOME/.cache}/zsh/
|
||||||
HISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh/history"
|
HISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh/history"
|
||||||
|
|
||||||
# Load aliases and shortcuts if existent.
|
|
||||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
|
|
||||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
|
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
|
||||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/privrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/privrc"
|
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/privrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/privrc"
|
||||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
|
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
|
||||||
@ -92,7 +90,8 @@ function osc7 {
|
|||||||
autoload -Uz add-zsh-hook
|
autoload -Uz add-zsh-hook
|
||||||
add-zsh-hook -Uz chpwd osc7
|
add-zsh-hook -Uz chpwd osc7
|
||||||
|
|
||||||
[ ! -f ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ] && setsid shortcuts >/dev/null 2>&1
|
# reverse searching
|
||||||
|
bindkey '^R' history-incremental-search-backward
|
||||||
|
|
||||||
# Load syntax highlighting; should be last.
|
# Load syntax highlighting; should be last.
|
||||||
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
|
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
|
||||||
|
576
home/default/.doom.d/config.el
Normal file
576
home/default/.doom.d/config.el
Normal file
@ -0,0 +1,576 @@
|
|||||||
|
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||||
|
;; sync' after modifying this file!
|
||||||
|
|
||||||
|
|
||||||
|
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||||
|
;; clients, file templates and snippets. It is optional.
|
||||||
|
;; (setq user-full-name "John Doe"
|
||||||
|
;; user-mail-address "john@doe.com")
|
||||||
|
|
||||||
|
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
||||||
|
;;
|
||||||
|
;; - `doom-font' -- the primary font to use
|
||||||
|
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
||||||
|
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||||
|
;; presentations or streaming.
|
||||||
|
;; - `doom-symbol-font' -- for symbols
|
||||||
|
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
||||||
|
;;
|
||||||
|
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||||
|
;; accept. For example:
|
||||||
|
;;
|
||||||
|
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
|
||||||
|
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||||
|
;;
|
||||||
|
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||||
|
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||||
|
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||||
|
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||||
|
|
||||||
|
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||||
|
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||||
|
;; `load-theme' function. This is the default:
|
||||||
|
;(setq doom-theme 'doom-one)
|
||||||
|
|
||||||
|
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||||
|
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||||
|
;(setq display-line-numbers-type t)
|
||||||
|
|
||||||
|
;; If you use `org' and don't want your org files in the default location below,
|
||||||
|
;; change `org-directory'. It must be set before org loads!
|
||||||
|
;(setq org-directory "~/org/")
|
||||||
|
|
||||||
|
|
||||||
|
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||||
|
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||||
|
;;
|
||||||
|
;; (after! PACKAGE
|
||||||
|
;; (setq x y))
|
||||||
|
;;
|
||||||
|
;; The exceptions to this rule:
|
||||||
|
;;
|
||||||
|
;; - Setting file/directory variables (like `org-directory')
|
||||||
|
;; - Setting variables which explicitly tell you to set them before their
|
||||||
|
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
||||||
|
;; - Setting doom variables (which start with 'doom-' or '+').
|
||||||
|
;;
|
||||||
|
;; Here are some additional functions/macros that will help you configure Doom.
|
||||||
|
;;
|
||||||
|
;; - `load!' for loading external *.el files relative to this one
|
||||||
|
;; - `use-package!' for configuring packages
|
||||||
|
;; - `after!' for running code after a package has loaded
|
||||||
|
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||||
|
;; this file. Emacs searches the `load-path' when you load packages with
|
||||||
|
;; `require' or `use-package'.
|
||||||
|
;; - `map!' for binding new keys
|
||||||
|
;;
|
||||||
|
;; To get information about any of these functions/macros, move the cursor over
|
||||||
|
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||||
|
;; This will open documentation for it, including demos of how they are used.
|
||||||
|
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
||||||
|
;; etc).
|
||||||
|
;;
|
||||||
|
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||||
|
;; they are implemented.
|
||||||
|
|
||||||
|
(setq doom-font (font-spec :family "DejaVu Sans Mono" :size 12)
|
||||||
|
doom-variable-pitch-font (font-spec :family "Libertinus Serif" :size 15))
|
||||||
|
|
||||||
|
;; theme
|
||||||
|
; my eyes won't accept anything else than tomorrow night
|
||||||
|
(setq doom-theme 'doom-tomorrow-night )
|
||||||
|
;(setq doom-theme 'doom-meltbus ) ; depressed, muted colors.
|
||||||
|
;(setq doom-theme 'doom-plain-dark ) ; themes for writing
|
||||||
|
;(setq doom-theme 'doom-plain )
|
||||||
|
|
||||||
|
;; splash
|
||||||
|
(setq fancy-splash-image (expand-file-name "img/camcorder.jpeg" doom-user-dir)
|
||||||
|
+doom-dashboard-banner-padding '(0 . 0))
|
||||||
|
|
||||||
|
;; doom dashboard
|
||||||
|
;; remove useless dashboard info
|
||||||
|
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-shortmenu)
|
||||||
|
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-footer)
|
||||||
|
(add-hook! '+doom-dashboard-mode-hook (hide-mode-line-mode 1) (hl-line-mode -1))
|
||||||
|
(setq-hook! '+doom-dashboard-mode-hook evil-normal-state-cursor (list nil))
|
||||||
|
|
||||||
|
;; opacity
|
||||||
|
;(set-frame-parameter (selected-frame) 'alpha-background 90) (add-to-list 'default-frame-alist '(alpha-background . 90))
|
||||||
|
|
||||||
|
(after! org
|
||||||
|
(setq display-line-numbers-type nil
|
||||||
|
org-hide-emphasis-markers t
|
||||||
|
org-pretty-entities t
|
||||||
|
org-ellipsis "…"
|
||||||
|
org-image-actual-width 600))
|
||||||
|
(setq display-line-numbers-type nil)
|
||||||
|
|
||||||
|
;; disable flyspell-mode
|
||||||
|
(after! flyspell
|
||||||
|
(setq-default spell-checking-enable-by-default nil))
|
||||||
|
|
||||||
|
;; disable gutter for org-mode
|
||||||
|
(after! git-gutter
|
||||||
|
(setq git-gutter:disabled-modes '(fundamental-mode image-mode pdf-view-mode org-mode)))
|
||||||
|
|
||||||
|
(after! org-journal
|
||||||
|
(setq org-journal-dir "~/diary"
|
||||||
|
org-journal-date-prefix "#+TITLE: "
|
||||||
|
org-journal-time-prefix "+ "
|
||||||
|
org-journal-date-format "%a, %Y-%m-%d"
|
||||||
|
org-journal-file-format "%Y-%m-%d.org"))
|
||||||
|
|
||||||
|
(use-package! org-books
|
||||||
|
:defer t
|
||||||
|
:config
|
||||||
|
(setq org-books-file "~/notebook/readinglist.org"))
|
||||||
|
|
||||||
|
(after! org
|
||||||
|
(setq org-log-done 'time
|
||||||
|
org-log-into-drawer t
|
||||||
|
;About the 2 elisp lines below: If you want to send items without explicit
|
||||||
|
;priorities to the bottom of the list you have to set org-default-priority to the
|
||||||
|
;value of org-lowest-priority). I did this to make recognize that: PRIORITY=0 are
|
||||||
|
;items without explicit priorities (not A, B or C, but just TODO)
|
||||||
|
org-lowest-priority ?E
|
||||||
|
org-default-priority ?E)
|
||||||
|
(defun jethro/org-archive-done-tasks ()
|
||||||
|
"Archive all done tasks."
|
||||||
|
(interactive)
|
||||||
|
(org-map-entries 'org-archive-subtree "/DONE" 'file)))
|
||||||
|
|
||||||
|
(setq org-directory "~/notebook/"
|
||||||
|
bookmark-default-file "~/.doom.d/bookmarks")
|
||||||
|
|
||||||
|
(setq org-agenda-files '("~/housekeeping/calendar.org"
|
||||||
|
"~/notebook/ag/habits.org"
|
||||||
|
"~/notebook/ag/todo.org"
|
||||||
|
"~/notebook/ag/projects.org"
|
||||||
|
"~/notebook/ag/refile.org"
|
||||||
|
"~/notebook/ag/pomodoro.org"
|
||||||
|
"~/notebook/ag/events/birthdays.org"
|
||||||
|
"~/notebook/refile.org"
|
||||||
|
))
|
||||||
|
|
||||||
|
(after! org-agenda
|
||||||
|
(setq org-agenda-sticky t)) ; dont kill agendas
|
||||||
|
|
||||||
|
(use-package! org-super-agenda
|
||||||
|
:after org-agenda
|
||||||
|
:init
|
||||||
|
(setq org-agenda-skip-scheduled-if-done t
|
||||||
|
org-agenda-skip-deadline-if-done t
|
||||||
|
org-agenda-include-deadlines t
|
||||||
|
org-agenda-block-separator nil
|
||||||
|
org-agenda-compact-blocks t
|
||||||
|
org-agenda-start-day nil ;; i.e. today
|
||||||
|
org-agenda-span 1
|
||||||
|
org-agenda-start-on-weekday nil)
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("c" "Super view"
|
||||||
|
((agenda "" ((org-agenda-overriding-header "")
|
||||||
|
(org-super-agenda-groups
|
||||||
|
'((:name "Soon"
|
||||||
|
:deadline future
|
||||||
|
:order 3)
|
||||||
|
(:name "Today"
|
||||||
|
:time-grid t
|
||||||
|
:date today
|
||||||
|
:order 2)
|
||||||
|
(:name "Due today"
|
||||||
|
:deadline today
|
||||||
|
:scheduled today
|
||||||
|
:order 2)
|
||||||
|
(:name "Overdue"
|
||||||
|
:deadline past
|
||||||
|
:scheduled past
|
||||||
|
:order 1)))))
|
||||||
|
(alltodo "" ((org-agenda-overriding-header "")
|
||||||
|
(org-super-agenda-groups
|
||||||
|
'(;(:name "Future"
|
||||||
|
; :scheduled future)
|
||||||
|
(:discard (:anything t)))))))))
|
||||||
|
:config
|
||||||
|
(org-super-agenda-mode))
|
||||||
|
|
||||||
|
(setq org-agenda-prefix-format '(
|
||||||
|
(agenda . " %?-12t% s")
|
||||||
|
(todo . " %i %-12:c")
|
||||||
|
(tags . " %i %-12:c")
|
||||||
|
(search . " %i %-12:c")))
|
||||||
|
|
||||||
|
;; hide tags
|
||||||
|
(after! org-agenda
|
||||||
|
(setq org-agenda-hide-tags-regexp
|
||||||
|
(concat org-agenda-hide-tags-regexp "\\|sometag")))
|
||||||
|
|
||||||
|
;; org-pomodoro
|
||||||
|
(setq org-pomodoro-ask-upon-killing t
|
||||||
|
org-pomodoro-keep-killed-pomodoro-time t
|
||||||
|
org-pomodoro-length 25
|
||||||
|
org-pomodoro-manual-break t)
|
||||||
|
|
||||||
|
(defun +org-pomodoro/3-5 ()
|
||||||
|
"Set Pomodoro intervals to 3-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 3)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 3-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/5-5 ()
|
||||||
|
"Set Pomodoro intervals to 5-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 5)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 3-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/10-5 ()
|
||||||
|
"Set Pomodoro intervals to 10-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 10)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 10-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/15-5 ()
|
||||||
|
"Set Pomodoro intervals to 15-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 15)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 15-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/25-5 ()
|
||||||
|
"Set Pomodoro intervals to 25-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 25)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 25-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/30-10 ()
|
||||||
|
"Set Pomodoro intervals to 30-10"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 30)
|
||||||
|
(setq org-pomodoro-short-break-length 10)
|
||||||
|
(message "Pomodoro set to 30-10" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/50-10 ()
|
||||||
|
"Set Pomodoro intervals to 50-10"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 50)
|
||||||
|
(setq org-pomodoro-short-break-length 10)
|
||||||
|
(message "Pomodoro set to 50-10" (buffer-name)))
|
||||||
|
|
||||||
|
;; eisenhower matrix
|
||||||
|
(after! org-agenda
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("1" "Eisenhower matrix"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=\"A\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Urgent and important"))))
|
||||||
|
nil))
|
||||||
|
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("2" "Eisenhower matrix"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=\"B\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Important but not urgent"))))
|
||||||
|
nil))
|
||||||
|
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("3" "Eisenhower matrix"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=\"C\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Urgent but not important"))))
|
||||||
|
nil))
|
||||||
|
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("4" "Eisenhower matrix"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=0-PRIORITY=\"A\"-PRIORITY=\"B\"-PRIORITY=\"C\"-habits+todo"
|
||||||
|
;"+PRIORITY=0+PRIORITY=\"D\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Neither important nor urgent"))))
|
||||||
|
nil))
|
||||||
|
|
||||||
|
;;; same but using lists
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("x" "Eisenhower Matrix (list)"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=\"A\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Urgent and important")))
|
||||||
|
(tags-todo
|
||||||
|
"+PRIORITY=\"B\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Important but not urgent")))
|
||||||
|
(tags-todo
|
||||||
|
"+PRIORITY=\"C\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Urgent but not important")))
|
||||||
|
(tags-todo
|
||||||
|
"+PRIORITY=0-PRIORITY=\"A\"-PRIORITY=\"B\"-PRIORITY=\"C\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Neither important nor urgent"))))
|
||||||
|
nil)))
|
||||||
|
|
||||||
|
;; eisenhower matrix grid
|
||||||
|
|
||||||
|
(defun +eisenhower-matrix/agenda-1 () (interactive) (org-agenda nil "1"))
|
||||||
|
(defun +eisenhower-matrix/agenda-2 () (interactive) (org-agenda nil "2"))
|
||||||
|
(defun +eisenhower-matrix/agenda-3 () (interactive) (org-agenda nil "3"))
|
||||||
|
(defun +eisenhower-matrix/agenda-4 () (interactive) (org-agenda nil "4"))
|
||||||
|
(defun split-4-ways () (interactive) (delete-other-windows) (split-window-right) (split-window-below) (windmove-right) (split-window-below) (windmove-left))
|
||||||
|
(defun +eisenhower-matrix/redo-all-agenda-buffers ()
|
||||||
|
(interactive)
|
||||||
|
(dolist (buffer (buffer-list))
|
||||||
|
(with-current-buffer buffer
|
||||||
|
(when (derived-mode-p 'org-agenda-mode)
|
||||||
|
(org-agenda-redo t)))))
|
||||||
|
(defun +eisenhower-matrix/make-agendas ()
|
||||||
|
(interactive)
|
||||||
|
(+eisenhower-matrix/agenda-1)
|
||||||
|
(hide-mode-line-mode)
|
||||||
|
(+eisenhower-matrix/agenda-2)
|
||||||
|
(hide-mode-line-mode)
|
||||||
|
(+eisenhower-matrix/agenda-3)
|
||||||
|
(hide-mode-line-mode)
|
||||||
|
(+eisenhower-matrix/agenda-4)
|
||||||
|
(hide-mode-line-mode)
|
||||||
|
)
|
||||||
|
(defun +eisenhower-matrix/make-eisenhower-matrix ()
|
||||||
|
(interactive)
|
||||||
|
(+eisenhower-matrix/make-agendas)
|
||||||
|
(split-4-ways)
|
||||||
|
(switch-to-buffer "*Org Agenda(1)*")
|
||||||
|
(windmove-right)
|
||||||
|
(switch-to-buffer "*Org Agenda(2)*")
|
||||||
|
(windmove-down)
|
||||||
|
(switch-to-buffer "*Org Agenda(4)*")
|
||||||
|
(windmove-left)
|
||||||
|
(switch-to-buffer "*Org Agenda(3)*")
|
||||||
|
)
|
||||||
|
|
||||||
|
;; workspaces
|
||||||
|
;;; Commentary: provides 2 grid workspaces via function;
|
||||||
|
;;; +todo-workspaces/make-todo-workspace
|
||||||
|
;;; +todo-workspaces/make-todo-workspace-min
|
||||||
|
|
||||||
|
(defun +todo-workspaces/agenda1 () (org-agenda nil "a"))
|
||||||
|
(defun +todo-workspaces/agenda2 () (org-agenda nil "x"))
|
||||||
|
(defun +todo-workspaces/make-todo-agendas () (+todo-workspaces/agenda1) (hide-mode-line-mode) (+todo-workspaces/agenda2) (hide-mode-line-mode))
|
||||||
|
(defun +todo-workspaces/split-todo-workspace ()
|
||||||
|
(delete-other-windows)
|
||||||
|
(split-window-below)
|
||||||
|
(windmove-down)
|
||||||
|
(split-window-right)
|
||||||
|
(windmove-up))
|
||||||
|
(defun +todo-workspaces/split-todo-workspace-min ()
|
||||||
|
(delete-other-windows)
|
||||||
|
(split-window-below))
|
||||||
|
(defun +todo-workspaces/redo-all-agenda-buffers ()
|
||||||
|
(interactive)
|
||||||
|
(dolist (buffer (buffer-list))
|
||||||
|
(with-current-buffer buffer
|
||||||
|
(when (derived-mode-p 'org-agenda-mode)
|
||||||
|
(org-agenda-redo t)))))
|
||||||
|
|
||||||
|
(defun +todo-workspaces/make-todo-workspace ()
|
||||||
|
(interactive)
|
||||||
|
;(+todo-workspaces/redo-all-agenda-buffers)
|
||||||
|
(+todo-workspaces/make-todo-agendas)
|
||||||
|
(+todo-workspaces/split-todo-workspace)
|
||||||
|
(switch-to-buffer "*Org Agenda(a)*")
|
||||||
|
(windmove-down)
|
||||||
|
(switch-to-buffer "*Org Agenda(x)*")
|
||||||
|
(windmove-right)
|
||||||
|
(find-file "~/notebook/ag/todo.org"))
|
||||||
|
|
||||||
|
(defun +todo-workspaces/make-todo-workspace-min ()
|
||||||
|
(interactive)
|
||||||
|
;(+todo-workspaces/redo-all-agenda-buffers)
|
||||||
|
(+todo-workspaces/make-todo-agendas)
|
||||||
|
(+todo-workspaces/split-todo-workspace-min)
|
||||||
|
(switch-to-buffer "*Org Agenda(a)*")
|
||||||
|
(windmove-down)
|
||||||
|
(switch-to-buffer "*Org Agenda(x)*"))
|
||||||
|
|
||||||
|
(map! :leader
|
||||||
|
(:prefix-map ("o" . "open")
|
||||||
|
(:prefix-map ("w" . "workspaces")
|
||||||
|
:desc "Eisenhower Matrix" "e" #'+eisenhower-matrix/make-eisenhower-matrix ;; classic eisenhower matrix
|
||||||
|
:desc "Schedule/Eisenhower-list/todo" "t" #'+todo-workspaces/make-todo-workspace
|
||||||
|
:desc "Schedule/Eisenhower-list" "s" #'+todo-workspaces/make-todo-workspace-min)
|
||||||
|
(:prefix ("a" . "org agenda")
|
||||||
|
:desc "Eisenhower Matrix" "e" #'+eisenhower-matrix/make-eisenhower-matrix ;; classic eisenhower matrix
|
||||||
|
:desc "Rebuild All agendas" "r" #'+eisenhower-matrix/redo-all-agenda-buffers
|
||||||
|
:desc "Schedule/Eisenhower-list/todo" "t" #'+todo-workspaces/make-todo-workspace ;; todo list is useless
|
||||||
|
:desc "Schedule/Eisenhower-list" "s" #'+todo-workspaces/make-todo-workspace-min)))
|
||||||
|
|
||||||
|
;; org-roam configurations
|
||||||
|
(use-package! org-roam
|
||||||
|
:init
|
||||||
|
:custom
|
||||||
|
(org-roam-directory "~/notebook/roam/" )
|
||||||
|
(org-roam-dailies-capture-templates
|
||||||
|
'(("d" "default" entry "* %<%I:%M %p>: %?"
|
||||||
|
:if-new (file+head "%<%Y-%m-%d>.org" "#+title: %<%Y-%m-%d>\n")))))
|
||||||
|
|
||||||
|
;; looks
|
||||||
|
(cl-defmethod org-roam-node-type ((node org-roam-node))
|
||||||
|
"Return the TYPE of NODE."
|
||||||
|
(condition-case nil
|
||||||
|
(file-name-nondirectory
|
||||||
|
(directory-file-name
|
||||||
|
(file-name-directory
|
||||||
|
(file-relative-name (org-roam-node-file node) org-roam-directory))))
|
||||||
|
(error "")))
|
||||||
|
|
||||||
|
(setq org-roam-node-display-template
|
||||||
|
(concat "${type:15} ${title:30} " (propertize "${tags:10}" 'face 'org-tag)))
|
||||||
|
|
||||||
|
(setq org-roam-capture-templates
|
||||||
|
'(("d" "default" plain "%?"
|
||||||
|
:target (file+head "%<%Y%m%d%H%M%S>-${slug}.org"
|
||||||
|
"#+title: ${title}\n")
|
||||||
|
:unnarrowed t)
|
||||||
|
; main things
|
||||||
|
("l" "literature" plain "%?"
|
||||||
|
:if-new
|
||||||
|
(file+head "literature/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||||
|
:immediate-finish t
|
||||||
|
:unnarrowed t)
|
||||||
|
("p" "permanent" plain "%?"
|
||||||
|
:if-new
|
||||||
|
(file+head "permanent/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||||
|
:immediate-finish t
|
||||||
|
:unnarrowed t)
|
||||||
|
|
||||||
|
; now using inbox.org via org-capture
|
||||||
|
("f" "fleeting" plain "%?"
|
||||||
|
:if-new
|
||||||
|
(file+head "fleeting/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||||
|
:immediate-finish t
|
||||||
|
:unnarrowed t)
|
||||||
|
|
||||||
|
("s" "school" plain "%?"
|
||||||
|
:if-new
|
||||||
|
(file+head "school/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||||
|
:immediate-finish t
|
||||||
|
:unnarrowed t)))
|
||||||
|
|
||||||
|
;; org-capture
|
||||||
|
(after! org
|
||||||
|
|
||||||
|
;; examples: file:~/.emacs.d/modules/lang/org/config.el
|
||||||
|
;; file:~/.emacs.d/modules/lang/org/autoload/org-capture.el
|
||||||
|
|
||||||
|
;; set locations personal and centralized files
|
||||||
|
|
||||||
|
(defvar +org-capture-refile-file "ag/refile.org")
|
||||||
|
(defun +org-capture-refile-file ()
|
||||||
|
(expand-file-name +org-capture-refile-file org-directory))
|
||||||
|
(defvar +org-capture-todo-custom-file "ag/todo.org")
|
||||||
|
(defun +org-capture-todo-custom-file ()
|
||||||
|
(expand-file-name +org-capture-todo-custom-file org-directory))
|
||||||
|
(defvar +org-capture-custom-projects-file "ag/projects.org")
|
||||||
|
(defun +org-capture-custom-central-project-todo-file ()
|
||||||
|
"TODO"
|
||||||
|
(+org--capture-central-file
|
||||||
|
+org-capture-custom-projects-file (projectile-project-name)))
|
||||||
|
(defun +org-capture-custom-central-project-notes-file ()
|
||||||
|
"TODO"
|
||||||
|
(+org--capture-central-file
|
||||||
|
+org-capture-custom-projects-file (projectile-project-name)))
|
||||||
|
(defun +org-capture-custom-central-project-changelog-file ()
|
||||||
|
"TODO"
|
||||||
|
(+org--capture-central-file
|
||||||
|
+org-capture-custom-projects-file (projectile-project-name)))
|
||||||
|
|
||||||
|
;(add-to-list 'org-capture-templates
|
||||||
|
; '(("s" "Slipbox" entry (file "braindump/org/inbox.org")
|
||||||
|
; "* %?\n")
|
||||||
|
; ("t" "Personal todo" entry
|
||||||
|
; (file+headline +org-capture-todo-file "Inbox")
|
||||||
|
; "* [ ] %?\n%i\n%a" :prepend t)
|
||||||
|
; )
|
||||||
|
|
||||||
|
(setq org-capture-templates
|
||||||
|
'(("t" "Personal todo" entry
|
||||||
|
(file+headline +org-capture-todo-custom-file "todo")
|
||||||
|
"* TODO %?\n%i\n%a" :prepend t)
|
||||||
|
("T" "Personal todo (no link)" entry
|
||||||
|
(file+headline +org-capture-todo-custom-file "todo")
|
||||||
|
"* TODO %?\n" :prepend t)
|
||||||
|
|
||||||
|
;;; i never use this
|
||||||
|
;("n" "Personal notes" entry
|
||||||
|
;(file+headline +org-capture-notes-file "Inbox")
|
||||||
|
;"* %u %?\n%i\n%a" :prepend t)
|
||||||
|
("r" "Personal refile file" entry
|
||||||
|
(file +org-capture-refile-file)
|
||||||
|
"* %u %?\n%i\n%a" :prepend t)
|
||||||
|
|
||||||
|
;; using org-journal atm, i will likely never use this
|
||||||
|
;("j" "Journal" entry
|
||||||
|
;(file+olp+datetree +org-capture-journal-file)
|
||||||
|
;"* %U %?\n%i\n%a" :prepend t)
|
||||||
|
|
||||||
|
;; Will use {project-root}/{todo,notes,changelog}.org, unless a
|
||||||
|
;; {todo,notes,changelog}.org file is found in a parent directory.
|
||||||
|
;; Uses the basename from `+org-capture-todo-file',
|
||||||
|
;; `+org-capture-changelog-file' and `+org-capture-notes-file'.
|
||||||
|
("p" "Templates for projects")
|
||||||
|
("pt" "Project-local todo" entry ; {project-root}/todo.org
|
||||||
|
(file+headline +org-capture-project-todo-file "Inbox")
|
||||||
|
"* TODO %?\n%i\n%a" :prepend t)
|
||||||
|
("pn" "Project-local notes" entry ; {project-root}/notes.org
|
||||||
|
(file+headline +org-capture-project-notes-file "Inbox")
|
||||||
|
"* %U %?\n%i\n%a" :prepend t)
|
||||||
|
("pc" "Project-local changelog" entry ; {project-root}/changelog.org
|
||||||
|
(file+headline +org-capture-project-changelog-file "Unreleased")
|
||||||
|
"* %U %?\n%i\n%a" :prepend t)
|
||||||
|
|
||||||
|
;; reference for function: [[file:~/.emacs.d/modules/lang/org/autoload/org-capture.el::defun +org--capture-central-file (file project]]
|
||||||
|
;; Will use {org-directory}/{+org-capture-projects-file} and store
|
||||||
|
;; these under {ProjectName}/{Tasks,Notes,Changelog} headings. They
|
||||||
|
;; support `:parents' to specify what headings to put them under, e.g.
|
||||||
|
;; :parents ("Projects")
|
||||||
|
("o" "Centralized templates for projects")
|
||||||
|
("ot" "Project todo" entry
|
||||||
|
(function +org-capture-custom-central-project-todo-file)
|
||||||
|
"* TODO %?\n %i\n %a"
|
||||||
|
:heading "Tasks"
|
||||||
|
:prepend nil)
|
||||||
|
("on" "Project notes" entry
|
||||||
|
(function +org-capture-custom-central-project-notes-file)
|
||||||
|
"* %U %?\n %i\n %a"
|
||||||
|
:heading "Notes"
|
||||||
|
:prepend t)
|
||||||
|
("oc" "Project changelog" entry
|
||||||
|
(function +org-capture-custom-central-project-changelog-file)
|
||||||
|
"* %U %?\n %i\n %a"
|
||||||
|
:heading "Changelog"
|
||||||
|
:prepend t)
|
||||||
|
|
||||||
|
;; org books / general logging
|
||||||
|
("b" "Book log / General log (org)" item (function org-books-visit-book-log)
|
||||||
|
"- %U %?" :prepend t)
|
||||||
|
|
||||||
|
;; zettelkasten
|
||||||
|
("s" "Slipbox" entry (file "roam/inbox.org")
|
||||||
|
"* %U %?\n")
|
||||||
|
("S" "Slipbox link" entry (file "roam/inbox.org")
|
||||||
|
"* %U %?\n %i\n %a"))))
|
||||||
|
|
||||||
|
|
||||||
|
(use-package! org-wild-notifier
|
||||||
|
:init
|
||||||
|
(add-hook 'doom-post-init-hook (org-wild-notifier-mode))
|
||||||
|
:config
|
||||||
|
(require 'org-duration)
|
||||||
|
;(setq alert-default-style 'libnotify)
|
||||||
|
(setq org-wild-notifier-alert-time '(10 0))
|
||||||
|
(setq org-wild-notifier-keyword-whitelist nil)
|
||||||
|
(setq org-wild-notifier-keyword-blacklist '("DONE"))
|
||||||
|
(alert-add-rule :category "org-wild-notifier"
|
||||||
|
:style (cond (alert-libnotify-command
|
||||||
|
'libnotify)
|
||||||
|
(alert-default-style))))
|
||||||
|
|
||||||
|
;;; play audio for for alerts
|
||||||
|
(defun +org-wild-notifier/play-sound () (interactive) (start-process-shell-command "org-wild-notifier-audio-player" nil "mpg123 -f 23000 ~/resources/sounds/alerts/metal-gear-item-drop.mp3")) (defadvice org-wild-notifier--notify (after org-wild-notifier--play-sound-after-notify activate) (+org-wild-notifier/play-sound))
|
||||||
|
|
||||||
|
;;; for testing notifications
|
||||||
|
(defun org-wild-notifier-alert-test ()
|
||||||
|
(interactive)
|
||||||
|
(alert "test" :category 'org-wild-notifier))
|
BIN
home/default/.doom.d/img/camcorder.jpeg
Normal file
BIN
home/default/.doom.d/img/camcorder.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
207
home/default/.doom.d/init.el
Normal file
207
home/default/.doom.d/init.el
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
;;; init.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; This file controls what Doom modules are enabled and what order they load
|
||||||
|
;; in. Remember to run 'doom sync' after modifying it!
|
||||||
|
|
||||||
|
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||||
|
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||||
|
;; of our modules are listed, including what flags they support.
|
||||||
|
|
||||||
|
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||||
|
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||||
|
;; flags as well (those symbols that start with a plus).
|
||||||
|
;;
|
||||||
|
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||||
|
;; directory (for easy access to its source code).
|
||||||
|
|
||||||
|
(doom! :input
|
||||||
|
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||||
|
;;chinese
|
||||||
|
;;japanese
|
||||||
|
;;layout ; auie,ctsrnm is the superior home row
|
||||||
|
|
||||||
|
:completion
|
||||||
|
company ; the ultimate code completion backend
|
||||||
|
;;helm ; the *other* search engine for love and life
|
||||||
|
;;ido ; the other *other* search engine...
|
||||||
|
;;ivy ; a search engine for love and life
|
||||||
|
vertico ; the search engine of the future
|
||||||
|
|
||||||
|
:ui
|
||||||
|
;;deft ; notational velocity for Emacs
|
||||||
|
doom ; what makes DOOM look the way it does
|
||||||
|
doom-dashboard ; a nifty splash screen for Emacs
|
||||||
|
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||||
|
;;(emoji +unicode) ; 🙂
|
||||||
|
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||||
|
;;hydra
|
||||||
|
;;indent-guides ; highlighted indent columns
|
||||||
|
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||||
|
;;minimap ; show a map of the code on the side
|
||||||
|
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||||
|
;;nav-flash ; blink cursor line after big motions
|
||||||
|
;;neotree ; a project drawer, like NERDTree for vim
|
||||||
|
ophints ; highlight the region an operation acts on
|
||||||
|
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||||
|
;;tabs ; a tab bar for Emacs
|
||||||
|
treemacs ; a project drawer, like neotree but cooler
|
||||||
|
;;unicode ; extended unicode support for various languages
|
||||||
|
(vc-gutter +pretty) ; vcs diff in the fringe
|
||||||
|
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||||
|
;;window-select ; visually switch windows
|
||||||
|
workspaces ; tab emulation, persistence & separate workspaces
|
||||||
|
zen ; distraction-free coding or writing
|
||||||
|
|
||||||
|
:editor
|
||||||
|
(evil +everywhere); come to the dark side, we have cookies
|
||||||
|
file-templates ; auto-snippets for empty files
|
||||||
|
fold ; (nigh) universal code folding
|
||||||
|
;;(format +onsave) ; automated prettiness
|
||||||
|
;;god ; run Emacs commands without modifier keys
|
||||||
|
;;lispy ; vim for lisp, for people who don't like vim
|
||||||
|
;;multiple-cursors ; editing in many places at once
|
||||||
|
;;objed ; text object editing for the innocent
|
||||||
|
;;parinfer ; turn lisp into python, sort of
|
||||||
|
;;rotate-text ; cycle region at point between text candidates
|
||||||
|
snippets ; my elves. They type so I don't have to
|
||||||
|
;;word-wrap ; soft wrapping with language-aware indent
|
||||||
|
|
||||||
|
:emacs
|
||||||
|
dired ; making dired pretty [functional]
|
||||||
|
electric ; smarter, keyword-based electric-indent
|
||||||
|
;;ibuffer ; interactive buffer management
|
||||||
|
undo ; persistent, smarter undo for your inevitable mistakes
|
||||||
|
vc ; version-control and Emacs, sitting in a tree
|
||||||
|
|
||||||
|
:term
|
||||||
|
;;eshell ; the elisp shell that works everywhere
|
||||||
|
;;shell ; simple shell REPL for Emacs
|
||||||
|
;;term ; basic terminal emulator for Emacs
|
||||||
|
vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
|
:checkers
|
||||||
|
syntax ; tasing you for every semicolon you forget
|
||||||
|
(spell +flyspell) ; tasing you for misspelling mispelling
|
||||||
|
;;grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
|
:tools
|
||||||
|
;;ansible
|
||||||
|
;;biblio ; Writes a PhD for you (citation needed)
|
||||||
|
;;collab ; buffers with friends
|
||||||
|
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||||
|
;;direnv
|
||||||
|
;;docker
|
||||||
|
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||||
|
;;ein ; tame Jupyter notebooks with emacs
|
||||||
|
(eval +overlay) ; run code, run (also, repls)
|
||||||
|
;;gist ; interacting with github gists
|
||||||
|
(lookup ; navigate your code and its documentation
|
||||||
|
+dictionary)
|
||||||
|
;;lsp ; M-x vscode
|
||||||
|
magit ; a git porcelain for Emacs
|
||||||
|
;;make ; run make tasks from Emacs
|
||||||
|
;;pass ; password manager for nerds
|
||||||
|
;;pdf ; pdf enhancements
|
||||||
|
prodigy ; FIXME managing external services & code builders
|
||||||
|
;;rgb ; creating color strings
|
||||||
|
;;taskrunner ; taskrunner for all your projects
|
||||||
|
;;terraform ; infrastructure as code
|
||||||
|
;;tmux ; an API for interacting with tmux
|
||||||
|
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||||
|
;;upload ; map local to remote projects via ssh/ftp
|
||||||
|
|
||||||
|
:os
|
||||||
|
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||||
|
tty ; improve the terminal Emacs experience
|
||||||
|
|
||||||
|
:lang
|
||||||
|
;;agda ; types of types of types of types...
|
||||||
|
;;beancount ; mind the GAAP
|
||||||
|
;;(cc +lsp) ; C > C++ == 1
|
||||||
|
cc
|
||||||
|
;;clojure ; java with a lisp
|
||||||
|
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||||
|
;;coq ; proofs-as-programs
|
||||||
|
;;crystal ; ruby at the speed of c
|
||||||
|
;;csharp ; unity, .NET, and mono shenanigans
|
||||||
|
;;data ; config/data formats
|
||||||
|
;;(dart +flutter) ; paint ui and not much else
|
||||||
|
;;dhall
|
||||||
|
;;elixir ; erlang done right
|
||||||
|
;;elm ; care for a cup of TEA?
|
||||||
|
emacs-lisp ; drown in parentheses
|
||||||
|
;;erlang ; an elegant language for a more civilized age
|
||||||
|
;;ess ; emacs speaks statistics
|
||||||
|
;;factor
|
||||||
|
;;faust ; dsp, but you get to keep your soul
|
||||||
|
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||||
|
;;fsharp ; ML stands for Microsoft's Language
|
||||||
|
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||||
|
;;gdscript ; the language you waited for
|
||||||
|
;;(go +lsp) ; the hipster dialect
|
||||||
|
;;(graphql +lsp) ; Give queries a REST
|
||||||
|
;;(haskell +lsp) ; a language that's lazier than I am
|
||||||
|
;;hy ; readability of scheme w/ speed of python
|
||||||
|
;;idris ; a language you can depend on
|
||||||
|
;;json ; At least it ain't XML
|
||||||
|
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||||
|
java
|
||||||
|
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||||
|
;;julia ; a better, faster MATLAB
|
||||||
|
;;kotlin ; a better, slicker Java(Script)
|
||||||
|
;;latex ; writing papers in Emacs has never been so fun
|
||||||
|
;;lean ; for folks with too much to prove
|
||||||
|
ledger ; be audit you can be
|
||||||
|
;;lua ; one-based indices? one-based indices
|
||||||
|
markdown ; writing docs for people to ignore
|
||||||
|
;;nim ; python + lisp at the speed of c
|
||||||
|
;;nix ; I hereby declare "nix geht mehr!"
|
||||||
|
;;ocaml ; an objective camel
|
||||||
|
(org
|
||||||
|
+journal
|
||||||
|
+habit
|
||||||
|
+roam2
|
||||||
|
+dragndrop
|
||||||
|
+pomodoro
|
||||||
|
+publish
|
||||||
|
;+pretty
|
||||||
|
) ; organize your plain life in plain text
|
||||||
|
;;php ; perl's insecure younger brother
|
||||||
|
;;plantuml ; diagrams for confusing people more
|
||||||
|
;;purescript ; javascript, but functional
|
||||||
|
;;python ; beautiful is better than ugly
|
||||||
|
;;qt ; the 'cutest' gui framework ever
|
||||||
|
;;racket ; a DSL for DSLs
|
||||||
|
;;raku ; the artist formerly known as perl6
|
||||||
|
;;rest ; Emacs as a REST client
|
||||||
|
;;rst ; ReST in peace
|
||||||
|
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||||
|
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||||
|
rust
|
||||||
|
;;scala ; java, but good
|
||||||
|
;;(scheme +guile) ; a fully conniving family of lisps
|
||||||
|
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||||
|
;;sml
|
||||||
|
;;solidity ; do you need a blockchain? No.
|
||||||
|
;;swift ; who asked for emoji variables?
|
||||||
|
;;terra ; Earth and Moon in alignment for performance.
|
||||||
|
;;web ; the tubes
|
||||||
|
;;yaml ; JSON, but readable
|
||||||
|
;;zig ; C, but simpler
|
||||||
|
|
||||||
|
:email
|
||||||
|
;;(mu4e +org +gmail)
|
||||||
|
;;notmuch
|
||||||
|
;;(wanderlust +gmail)
|
||||||
|
|
||||||
|
:app
|
||||||
|
;;calendar
|
||||||
|
;;emms
|
||||||
|
;;everywhere ; *leave* Emacs!? You must be joking
|
||||||
|
;;irc ; how neckbeards socialize
|
||||||
|
;;(rss +org) ; emacs as an RSS reader
|
||||||
|
;;twitter ; twitter client https://twitter.com/vnought
|
||||||
|
|
||||||
|
:config
|
||||||
|
;;literate
|
||||||
|
(default +bindings +smartparens))
|
@ -1,11 +1,12 @@
|
|||||||
;;; org-wild-notifier.el --- Customizable org-agenda notifications -*- lexical-binding: t -*-
|
;;; org-wild-notifier.el --- Customizable org-agenda notifications -*- lexical-binding: t -*-
|
||||||
|
|
||||||
|
|
||||||
;; Copyright (C) 2017 Artem Khramov
|
;; Copyright (C) 2017 Artem Khramov
|
||||||
|
|
||||||
;; Author: Artem Khramov <akhramov+emacs@pm.me>
|
;; Author: Artem Khramov <akhramov+emacs@pm.me>
|
||||||
;; Created: 6 Jan 2017
|
;; Created: 6 Jan 2017
|
||||||
;; Version: 0.4.1
|
;; Version: 0.5.0
|
||||||
;; Package-Requires: ((alert "1.2") (async "1.9.3") (dash "2.18.0") (emacs "24.4"))
|
;; Package-Requires: ((alert "1.2") (async "1.9.3") (dash "2.18.0") (emacs "26.1"))
|
||||||
;; Keywords: notification alert org org-agenda agenda
|
;; Keywords: notification alert org org-agenda agenda
|
||||||
;; URL: https://github.com/akhramov/org-wild-notifier.el
|
;; URL: https://github.com/akhramov/org-wild-notifier.el
|
||||||
|
|
||||||
@ -48,7 +49,7 @@
|
|||||||
(require 'async)
|
(require 'async)
|
||||||
(require 'org-agenda)
|
(require 'org-agenda)
|
||||||
(require 'cl-lib)
|
(require 'cl-lib)
|
||||||
|
(require 'org-duration)
|
||||||
|
|
||||||
(defgroup org-wild-notifier nil
|
(defgroup org-wild-notifier nil
|
||||||
"org-wild-notifier customization options"
|
"org-wild-notifier customization options"
|
||||||
@ -81,7 +82,7 @@ to an event."
|
|||||||
:group 'org-wild-notifier
|
:group 'org-wild-notifier
|
||||||
:type 'string)
|
:type 'string)
|
||||||
|
|
||||||
(defcustom org-wild-notifier-keyword-whitelist '("TODO")
|
(defcustom org-wild-notifier-keyword-whitelist nil
|
||||||
"Receive notifications for these keywords only.
|
"Receive notifications for these keywords only.
|
||||||
Leave this variable blank if you do not want to filter anything."
|
Leave this variable blank if you do not want to filter anything."
|
||||||
:package-version '(org-wild-notifier . "0.2.2")
|
:package-version '(org-wild-notifier . "0.2.2")
|
||||||
@ -107,6 +108,38 @@ Leave this variable blank if you do not want to filter anything."
|
|||||||
:group 'org-wild-notifier
|
:group 'org-wild-notifier
|
||||||
:type '(repeat string))
|
:type '(repeat string))
|
||||||
|
|
||||||
|
(defcustom org-wild-notifier-display-time-format-string "%I:%M %p"
|
||||||
|
"The format string that should be passed to `format-time-string' to display a time."
|
||||||
|
:package-version '(org-wild-notifier . "0.5.0")
|
||||||
|
:group 'org-wild-notifier
|
||||||
|
:type 'string)
|
||||||
|
|
||||||
|
(defcustom org-wild-notifier-predicate-whitelist nil
|
||||||
|
"Receive notifications for events matching these predicates only.
|
||||||
|
Each function should take an event POM and return non-nil iff that event should
|
||||||
|
trigger a notification. Leave this variable blank if you do not want to filter
|
||||||
|
anything."
|
||||||
|
:package-version '(org-wild-notifier . "0.5.0")
|
||||||
|
:group 'org-wild-notifier
|
||||||
|
:type '(function))
|
||||||
|
|
||||||
|
(defcustom org-wild-notifier-additional-environment-regexes nil
|
||||||
|
"Additional regular expressions that should be provided to
|
||||||
|
`async-inject-environment' before running the async command to
|
||||||
|
check notifications."
|
||||||
|
:package-version '(org-wild-notifier . "0.5.0")
|
||||||
|
:group 'org-wild-notifier
|
||||||
|
:type '(string))
|
||||||
|
|
||||||
|
(defcustom org-wild-notifier-predicate-blacklist
|
||||||
|
'(org-wild-notifier-done-keywords-predicate)
|
||||||
|
"Never receive notifications for events matching these predicates.
|
||||||
|
Each function should take an event POM and return non-nil iff that event should
|
||||||
|
not trigger a notification."
|
||||||
|
:package-version '(org-wild-notifier . "0.5.0")
|
||||||
|
:group 'org-wild-notifier
|
||||||
|
:type '(function))
|
||||||
|
|
||||||
(defcustom org-wild-notifier--alert-severity 'medium
|
(defcustom org-wild-notifier--alert-severity 'medium
|
||||||
"Severity of the alert.
|
"Severity of the alert.
|
||||||
options: 'high 'medium 'low"
|
options: 'high 'medium 'low"
|
||||||
@ -115,8 +148,23 @@ options: 'high 'medium 'low"
|
|||||||
:type 'symbol
|
:type 'symbol
|
||||||
:options '(high medium low))
|
:options '(high medium low))
|
||||||
|
|
||||||
(defvar org-wild-notifier--day-wide-events nil
|
(defcustom org-wild-notifier-extra-alert-plist nil
|
||||||
"If truthy, notifies about day-wide events.")
|
"Additional arguments that should be passed to invocations of `alert'."
|
||||||
|
:package-version "v0.5.0"
|
||||||
|
:group 'org-wild-notifier
|
||||||
|
:type 'plist)
|
||||||
|
|
||||||
|
(defcustom org-wild-notifier-day-wide-alert-times nil
|
||||||
|
"A list of time of day strings at which alerts for day wide events should trigger."
|
||||||
|
:package-version '(org-wild-notifier . "0.5.0")
|
||||||
|
:group 'org-wild-notifier
|
||||||
|
:type 'string)
|
||||||
|
|
||||||
|
(defcustom org-wild-notifier-show-any-overdue-with-day-wide-alerts t
|
||||||
|
"Show any overdue TODO items along with day wide alerts whenever they are shown."
|
||||||
|
:package-version '(org-wild-notifier . "0.5.0")
|
||||||
|
:group 'org-wild-notifier
|
||||||
|
:type 'string)
|
||||||
|
|
||||||
(defvar org-wild-notifier--timer nil
|
(defvar org-wild-notifier--timer nil
|
||||||
"Timer value.")
|
"Timer value.")
|
||||||
@ -145,16 +193,6 @@ in order to ignore seconds."
|
|||||||
(apply 'encode-time
|
(apply 'encode-time
|
||||||
(append '(0 0 0) (nthcdr 3 (decode-time (current-time))))))
|
(append '(0 0 0) (nthcdr 3 (decode-time (current-time))))))
|
||||||
|
|
||||||
(defun org-wild-notifier--always-notify-p (event)
|
|
||||||
"Check that notification for the EVENT should be done regardless of time.
|
|
||||||
For now, the only case that handled is day-wide events."
|
|
||||||
(when org-wild-notifier--day-wide-events
|
|
||||||
(let ((today (org-wild-notifier--today)))
|
|
||||||
;; SPIKE: Org timestamps without "time" section are shorter than
|
|
||||||
;; 16 characters.
|
|
||||||
(--any-p (and (<= (length (car it)) 16) (equal today (cdr it)))
|
|
||||||
(cadr (assoc 'times event))))))
|
|
||||||
|
|
||||||
(defun org-wild-notifier--timestamp-within-interval-p (timestamp interval)
|
(defun org-wild-notifier--timestamp-within-interval-p (timestamp interval)
|
||||||
"Check whether TIMESTAMP is within notification INTERVAL."
|
"Check whether TIMESTAMP is within notification INTERVAL."
|
||||||
(org-wild-notifier--time=
|
(org-wild-notifier--time=
|
||||||
@ -163,14 +201,22 @@ For now, the only case that handled is day-wide events."
|
|||||||
|
|
||||||
(defun org-wild-notifier--notifications (event)
|
(defun org-wild-notifier--notifications (event)
|
||||||
"Get notifications for given EVENT.
|
"Get notifications for given EVENT.
|
||||||
Returns a list of notification intervals."
|
Returns a list of time information interval pairs."
|
||||||
(if (org-wild-notifier--always-notify-p event)
|
(->> (list
|
||||||
'(-1)
|
(org-wild-notifier--filter-day-wide-events (cadr (assoc 'times event)))
|
||||||
|
(cdr (assoc 'intervals event)))
|
||||||
|
(apply '-table-flat (lambda (ts int) (list ts int)))
|
||||||
|
;; When no values are provided for table flat, we get the second values
|
||||||
|
;; paired with nil.
|
||||||
|
(--filter (not (null (car it))))
|
||||||
|
(--filter (org-wild-notifier--timestamp-within-interval-p (cdar it) (cadr it)))))
|
||||||
|
|
||||||
(->> `(,(cadr (assoc 'times event)) ,(cdr (assoc 'intervals event)))
|
(defun org-wild-notifier--has-timestamp (s)
|
||||||
(apply '-table-flat (lambda (ts int) `(,(cdr ts) ,int)))
|
(string-match org-ts-regexp0 s)
|
||||||
(--filter (apply 'org-wild-notifier--timestamp-within-interval-p it))
|
(match-beginning 7))
|
||||||
(-map 'cadr))))
|
|
||||||
|
(defun org-wild-notifier--filter-day-wide-events (times)
|
||||||
|
(--filter (org-wild-notifier--has-timestamp (car it)) times))
|
||||||
|
|
||||||
(defun org-wild-notifier--time-left (seconds)
|
(defun org-wild-notifier--time-left (seconds)
|
||||||
"Human-friendly representation for SECONDS."
|
"Human-friendly representation for SECONDS."
|
||||||
@ -184,9 +230,9 @@ Returns a list of notification intervals."
|
|||||||
|
|
||||||
(defun org-wild-notifier--get-hh-mm-from-org-time-string (time-string)
|
(defun org-wild-notifier--get-hh-mm-from-org-time-string (time-string)
|
||||||
"Convert given org time-string TIME-STRING into string with 'hh:mm' format."
|
"Convert given org time-string TIME-STRING into string with 'hh:mm' format."
|
||||||
(if (>= (length time-string) 22)
|
(format-time-string
|
||||||
(substring time-string 16 21)
|
org-wild-notifier-display-time-format-string
|
||||||
"00:00"))
|
(encode-time (org-parse-time-string time-string))))
|
||||||
|
|
||||||
(defun org-wild-notifier--notification-text (str-interval event)
|
(defun org-wild-notifier--notification-text (str-interval event)
|
||||||
"For given STR-INTERVAL list and EVENT get notification wording."
|
"For given STR-INTERVAL list and EVENT get notification wording."
|
||||||
@ -195,12 +241,64 @@ Returns a list of notification intervals."
|
|||||||
(org-wild-notifier--get-hh-mm-from-org-time-string (car str-interval))
|
(org-wild-notifier--get-hh-mm-from-org-time-string (car str-interval))
|
||||||
(org-wild-notifier--time-left (* 60 (cdr str-interval)))))
|
(org-wild-notifier--time-left (* 60 (cdr str-interval)))))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-get-minutes-into-day (time)
|
||||||
|
(org-duration-to-minutes (org-get-time-of-day time t)))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-get-hours-minutes-from-time (time-string)
|
||||||
|
(let ((total-minutes (truncate (org-wild-notifier-get-minutes-into-day time-string))))
|
||||||
|
(list (/ total-minutes 60)
|
||||||
|
(mod total-minutes 60))))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-set-hours-minutes-for-time (time hours minutes)
|
||||||
|
(cl-destructuring-bind (_s _m _h day month year dow dst utcoff) (decode-time time)
|
||||||
|
(encode-time 0 minutes hours day month year dow dst utcoff)))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-current-time-matches-time-of-day-string (time-of-day-string)
|
||||||
|
(let ((now (current-time)))
|
||||||
|
(org-wild-notifier--time=
|
||||||
|
now
|
||||||
|
(apply 'org-wild-notifier-set-hours-minutes-for-time
|
||||||
|
now
|
||||||
|
(org-wild-notifier-get-hours-minutes-from-time time-of-day-string)))))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-current-time-is-day-wide-time ()
|
||||||
|
(--any (org-wild-notifier-current-time-matches-time-of-day-string it)
|
||||||
|
org-wild-notifier-day-wide-alert-times))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-day-wide-notifications (events)
|
||||||
|
(->> events
|
||||||
|
(-filter 'org-wild-notifier-display-as-day-wide-event)
|
||||||
|
(-map 'org-wild-notifier--day-wide-notification-text)
|
||||||
|
(-uniq)))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-display-as-day-wide-event (event)
|
||||||
|
;; `org-wild-notifier-event-has-any-passed-time' event is a requirement,
|
||||||
|
;; regardless of whether
|
||||||
|
;; `org-wild-notifier-show-any-overdue-with-day-wide-alerts' is set because
|
||||||
|
;; the events list can include events scheduled tomorrow. We only want to
|
||||||
|
;; alert for things scheduled today.
|
||||||
|
(and (org-wild-notifier-event-has-any-passed-time event)
|
||||||
|
(or org-wild-notifier-show-any-overdue-with-day-wide-alerts
|
||||||
|
(org-wild-notifier-event-has-any-day-wide-timestamp event))))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-event-has-any-day-wide-timestamp (event)
|
||||||
|
(--any (not (org-wild-notifier--has-timestamp (car it)))
|
||||||
|
(car (cdr (assoc 'times event)))))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-event-has-any-passed-time (event)
|
||||||
|
(--any (time-less-p (cdr it) (current-time))
|
||||||
|
(car (cdr (assoc 'times event )))))
|
||||||
|
|
||||||
|
(defun org-wild-notifier--day-wide-notification-text (event)
|
||||||
|
"For given STR-INTERVAL list and EVENT get notification wording."
|
||||||
|
(format "%s is due or scheduled today"
|
||||||
|
(cdr (assoc 'title event))))
|
||||||
|
|
||||||
(defun org-wild-notifier--check-event (event)
|
(defun org-wild-notifier--check-event (event)
|
||||||
"Get notifications for given EVENT.
|
"Get notifications for given EVENT.
|
||||||
Returns a list of notification messages"
|
Returns a list of notification messages"
|
||||||
(->> (org-wild-notifier--notifications event)
|
(->> (org-wild-notifier--notifications event)
|
||||||
(--zip-with (cons (car it) other) (cadr (assoc 'times event)))
|
(--map (org-wild-notifier--notification-text `(,(caar it) . ,(cadr it)) event))))
|
||||||
(--map (org-wild-notifier--notification-text it event))))
|
|
||||||
|
|
||||||
(defun org-wild-notifier--get-tags (marker)
|
(defun org-wild-notifier--get-tags (marker)
|
||||||
"Retrieve tags of MARKER."
|
"Retrieve tags of MARKER."
|
||||||
@ -217,7 +315,11 @@ Returns a list of notification messages"
|
|||||||
[,org-wild-notifier-tags-whitelist
|
[,org-wild-notifier-tags-whitelist
|
||||||
(lambda (it)
|
(lambda (it)
|
||||||
(-intersection org-wild-notifier-tags-whitelist
|
(-intersection org-wild-notifier-tags-whitelist
|
||||||
(org-wild-notifier--get-tags it)))])
|
(org-wild-notifier--get-tags it)))]
|
||||||
|
|
||||||
|
[,org-wild-notifier-predicate-whitelist
|
||||||
|
(lambda (marker)
|
||||||
|
(--some? (funcall it marker) org-wild-notifier-predicate-whitelist))])
|
||||||
(--filter (aref it 0))
|
(--filter (aref it 0))
|
||||||
(--map (aref it 1))))
|
(--map (aref it 1))))
|
||||||
|
|
||||||
@ -230,10 +332,20 @@ Returns a list of notification messages"
|
|||||||
[,org-wild-notifier-tags-blacklist
|
[,org-wild-notifier-tags-blacklist
|
||||||
(lambda (it)
|
(lambda (it)
|
||||||
(-intersection org-wild-notifier-tags-blacklist
|
(-intersection org-wild-notifier-tags-blacklist
|
||||||
(org-wild-notifier--get-tags it)))])
|
(org-wild-notifier--get-tags it)))]
|
||||||
|
|
||||||
|
[,org-wild-notifier-predicate-blacklist
|
||||||
|
(lambda (marker)
|
||||||
|
(--some? (funcall it marker) org-wild-notifier-predicate-blacklist))])
|
||||||
(--filter (aref it 0))
|
(--filter (aref it 0))
|
||||||
(--map (aref it 1))))
|
(--map (aref it 1))))
|
||||||
|
|
||||||
|
(defun org-wild-notifier-done-keywords-predicate (marker)
|
||||||
|
(save-excursion
|
||||||
|
(set-buffer (marker-buffer marker))
|
||||||
|
(goto-char (marker-position marker))
|
||||||
|
(member (nth 2 (org-heading-components)) org-done-keywords)))
|
||||||
|
|
||||||
(defun org-wild-notifier--apply-whitelist (markers)
|
(defun org-wild-notifier--apply-whitelist (markers)
|
||||||
"Apply whitelist to MARKERS."
|
"Apply whitelist to MARKERS."
|
||||||
(-if-let (whitelist-predicates (org-wild-notifier--whitelist-predicates))
|
(-if-let (whitelist-predicates (org-wild-notifier--whitelist-predicates))
|
||||||
@ -248,51 +360,62 @@ Returns a list of notification messages"
|
|||||||
(-remove markers))
|
(-remove markers))
|
||||||
markers))
|
markers))
|
||||||
|
|
||||||
|
(defconst org-wild-notifier-default-environment-regex
|
||||||
|
(macroexpand
|
||||||
|
`(rx string-start
|
||||||
|
(or ,@(mapcar (lambda (literal) (list 'literal literal))
|
||||||
|
(list
|
||||||
|
"org-agenda-files"
|
||||||
|
"load-path"
|
||||||
|
"org-todo-keywords"
|
||||||
|
"org-wild-notifier-alert-time"
|
||||||
|
"org-wild-notifier-keyword-whitelist"
|
||||||
|
"org-wild-notifier-keyword-blacklist"
|
||||||
|
"org-wild-notifier-tags-whitelist"
|
||||||
|
"org-wild-notifier-tags-blacklist"
|
||||||
|
"org-wild-notifier-predicate-whitelist"
|
||||||
|
"org-wild-notifier-predicate-blacklist")))
|
||||||
|
string-end)))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-wild-notifier-environment-regex ()
|
||||||
|
(macroexpand
|
||||||
|
`(rx (or
|
||||||
|
,@(mapcar (lambda (regexp) (list 'regexp regexp))
|
||||||
|
(cons org-wild-notifier-default-environment-regex
|
||||||
|
org-wild-notifier-additional-environment-regexes))))))
|
||||||
|
|
||||||
(defun org-wild-notifier--retrieve-events ()
|
(defun org-wild-notifier--retrieve-events ()
|
||||||
"Get events from agenda view."
|
"Get events from agenda view."
|
||||||
(let ((agenda-files (-filter 'file-exists-p (org-agenda-files)))
|
`(lambda ()
|
||||||
;; Some package managers manipulate `load-path` variable.
|
(setf org-agenda-use-time-grid nil)
|
||||||
(my-load-path load-path)
|
(setf org-agenda-compact-blocks t)
|
||||||
(todo-keywords org-todo-keywords)
|
,(async-inject-variables (org-wild-notifier-environment-regex))
|
||||||
(alert-time org-wild-notifier-alert-time)
|
|
||||||
(keyword-whitelist org-wild-notifier-keyword-whitelist)
|
|
||||||
(keyword-blacklist org-wild-notifier-keyword-blacklist)
|
|
||||||
(tags-whitelist org-wild-notifier-tags-whitelist)
|
|
||||||
(tags-blacklist org-wild-notifier-tags-blacklist))
|
|
||||||
(lambda ()
|
|
||||||
(setf org-agenda-use-time-grid nil)
|
|
||||||
(setf org-agenda-compact-blocks t)
|
|
||||||
(setf org-agenda-files agenda-files)
|
|
||||||
(setf load-path my-load-path)
|
|
||||||
(setf org-todo-keywords todo-keywords)
|
|
||||||
(setf org-wild-notifier-alert-time alert-time)
|
|
||||||
(setf org-wild-notifier-keyword-whitelist keyword-whitelist)
|
|
||||||
(setf org-wild-notifier-keyword-blacklist keyword-blacklist)
|
|
||||||
(setf org-wild-notifier-tags-whitelist tags-whitelist)
|
|
||||||
(setf org-wild-notifier-tags-blacklist tags-blacklist)
|
|
||||||
|
|
||||||
(package-initialize)
|
(package-initialize)
|
||||||
(require 'org-wild-notifier)
|
(require 'org-wild-notifier)
|
||||||
|
|
||||||
(org-agenda-list 2
|
(org-agenda-list 2 (org-read-date nil nil "today"))
|
||||||
(org-read-date nil nil "today"))
|
|
||||||
|
|
||||||
(->> (org-split-string (buffer-string) "\n")
|
(->> (org-split-string (buffer-string) "\n")
|
||||||
(--map (plist-get
|
(--map (plist-get
|
||||||
(org-fix-agenda-info (text-properties-at 0 it))
|
(org-fix-agenda-info (text-properties-at 0 it))
|
||||||
'org-marker))
|
'org-marker))
|
||||||
(-non-nil)
|
(-non-nil)
|
||||||
(org-wild-notifier--apply-whitelist)
|
(org-wild-notifier--apply-whitelist)
|
||||||
(org-wild-notifier--apply-blacklist)
|
(org-wild-notifier--apply-blacklist)
|
||||||
(-map 'org-wild-notifier--gather-info)))))
|
(-map 'org-wild-notifier--gather-info))))
|
||||||
|
|
||||||
(defun org-wild-notifier--notify (event-msg)
|
(defun org-wild-notifier--notify (event-msg)
|
||||||
"Notify about an event using `alert' library.
|
"Notify about an event using `alert' library.
|
||||||
EVENT-MSG is a string representation of the event."
|
EVENT-MSG is a string representation of the event."
|
||||||
(alert event-msg
|
(apply
|
||||||
:icon org-wild-notifier-notification-icon
|
'alert event-msg
|
||||||
:title org-wild-notifier-notification-title
|
:icon org-wild-notifier-notification-icon
|
||||||
:severity org-wild-notifier--alert-severity))
|
:title org-wild-notifier-notification-title
|
||||||
|
:severity org-wild-notifier--alert-severity
|
||||||
|
:category 'org-wild-notifier
|
||||||
|
org-wild-notifier-extra-alert-plist))
|
||||||
|
|
||||||
(defun org-wild-notifier--timestamp-parse (timestamp)
|
(defun org-wild-notifier--timestamp-parse (timestamp)
|
||||||
(let ((parsed (org-parse-time-string timestamp))
|
(let ((parsed (org-parse-time-string timestamp))
|
||||||
@ -307,8 +430,7 @@ EVENT-MSG is a string representation of the event."
|
|||||||
;; so we have to add the minutes too
|
;; so we have to add the minutes too
|
||||||
(+ (* (decoded-time-hour parsed) 3600)
|
(+ (* (decoded-time-hour parsed) 3600)
|
||||||
(* (decoded-time-minute parsed) 60))))
|
(* (decoded-time-minute parsed) 60))))
|
||||||
2)
|
2)))
|
||||||
))
|
|
||||||
|
|
||||||
(defun org-wild-notifier--extract-time (marker)
|
(defun org-wild-notifier--extract-time (marker)
|
||||||
"Extract timestamps from MARKER.
|
"Extract timestamps from MARKER.
|
||||||
@ -359,36 +481,38 @@ MARKER acts like event's identifier."
|
|||||||
Timer is scheduled on the beginning of every minute, so for
|
Timer is scheduled on the beginning of every minute, so for
|
||||||
smoother experience this function also runs a check without timer."
|
smoother experience this function also runs a check without timer."
|
||||||
(org-wild-notifier--stop)
|
(org-wild-notifier--stop)
|
||||||
|
(org-wild-notifier-check)
|
||||||
(let ((org-wild-notifier--day-wide-events t))
|
|
||||||
(org-wild-notifier-check))
|
|
||||||
|
|
||||||
(--> (format-time-string "%H:%M" (time-add (current-time) 60))
|
(--> (format-time-string "%H:%M" (time-add (current-time) 60))
|
||||||
(run-at-time it 60 'org-wild-notifier-check)
|
(run-at-time it 60 'org-wild-notifier-check)
|
||||||
(setf org-wild-notifier--timer it)))
|
(setf org-wild-notifier--timer it)))
|
||||||
|
|
||||||
|
(defun org-wild-notifier--check-events (events)
|
||||||
|
(setq org-wild-notifier--process nil)
|
||||||
|
(-each
|
||||||
|
(->> events
|
||||||
|
(-map 'org-wild-notifier--check-event)
|
||||||
|
(-flatten)
|
||||||
|
(-uniq))
|
||||||
|
'org-wild-notifier--notify)
|
||||||
|
(when (org-wild-notifier-current-time-is-day-wide-time)
|
||||||
|
(-map 'org-wild-notifier--notify
|
||||||
|
(org-wild-notifier-day-wide-notifications events)))
|
||||||
|
(setq org-wild-notifier--last-check-time (current-time)))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun org-wild-notifier-check ()
|
(defun org-wild-notifier-check ()
|
||||||
"Parse agenda view and notify about upcoming events.
|
"Parse agenda view and notify about upcoming events.
|
||||||
|
|
||||||
Do nothing if a check is already in progress in the background."
|
Do nothing if a check is already in progress in the background."
|
||||||
(interactive)
|
(interactive)
|
||||||
|
|
||||||
(unless (and org-wild-notifier--process
|
(unless (and org-wild-notifier--process
|
||||||
(process-live-p org-wild-notifier--process))
|
(process-live-p org-wild-notifier--process))
|
||||||
(setq org-wild-notifier--process
|
(setq org-wild-notifier--process
|
||||||
(let ((default-directory user-emacs-directory))
|
(let ((default-directory user-emacs-directory))
|
||||||
(async-start
|
(async-start
|
||||||
(org-wild-notifier--retrieve-events)
|
(org-wild-notifier--retrieve-events)
|
||||||
(lambda (events)
|
'org-wild-notifier--check-events)))))
|
||||||
(setq org-wild-notifier--process nil)
|
|
||||||
(-each
|
|
||||||
(->> events
|
|
||||||
(-map 'org-wild-notifier--check-event)
|
|
||||||
(-flatten)
|
|
||||||
(-uniq))
|
|
||||||
'org-wild-notifier--notify)
|
|
||||||
(setq org-wild-notifier--last-check-time (current-time))))))))
|
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(define-minor-mode org-wild-notifier-mode
|
(define-minor-mode org-wild-notifier-mode
|
@ -7,57 +7,60 @@
|
|||||||
|
|
||||||
|
|
||||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||||
;(package! some-package)
|
;; (package! some-package)
|
||||||
|
|
||||||
;; To install a package directly from a remote git repo, you must specify a
|
;; To install a package directly from a remote git repo, you must specify a
|
||||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||||
;; https://github.com/radian-software/straight.el#the-recipe-format
|
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||||
;(package! another-package
|
;; (package! another-package
|
||||||
; :recipe (:host github :repo "username/repo"))
|
;; :recipe (:host github :repo "username/repo"))
|
||||||
|
|
||||||
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||||
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||||
;; `:files' in the `:recipe':
|
;; `:files' in the `:recipe':
|
||||||
;(package! this-package
|
;; (package! this-package
|
||||||
; :recipe (:host github :repo "username/repo"
|
;; :recipe (:host github :repo "username/repo"
|
||||||
; :files ("some-file.el" "src/lisp/*.el")))
|
;; :files ("some-file.el" "src/lisp/*.el")))
|
||||||
|
|
||||||
;; If you'd like to disable a package included with Doom, you can do so here
|
;; If you'd like to disable a package included with Doom, you can do so here
|
||||||
;; with the `:disable' property:
|
;; with the `:disable' property:
|
||||||
;(package! builtin-package :disable t)
|
;; (package! builtin-package :disable t)
|
||||||
|
|
||||||
;; You can override the recipe of a built in package without having to specify
|
;; You can override the recipe of a built in package without having to specify
|
||||||
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||||
;; from Doom or MELPA/ELPA/Emacsmirror:
|
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||||
;(package! builtin-package :recipe (:nonrecursive t))
|
;; (package! builtin-package :recipe (:nonrecursive t))
|
||||||
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
|
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||||
|
|
||||||
;; Specify a `:branch' to install a package from a particular branch or tag.
|
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||||
;; This is required for some packages whose default branch isn't 'master' (which
|
;; This is required for some packages whose default branch isn't 'master' (which
|
||||||
;; our package manager can't deal with; see radian-software/straight.el#279)
|
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||||
;(package! builtin-package :recipe (:branch "develop"))
|
;; (package! builtin-package :recipe (:branch "develop"))
|
||||||
|
|
||||||
;; Use `:pin' to specify a particular commit to install.
|
;; Use `:pin' to specify a particular commit to install.
|
||||||
;(package! builtin-package :pin "1a2b3c4d5e")
|
;; (package! builtin-package :pin "1a2b3c4d5e")
|
||||||
|
|
||||||
|
|
||||||
;; Doom's packages are pinned to a specific commit and updated from release to
|
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||||
;; release. The `unpin!' macro allows you to unpin single packages...
|
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||||
;(unpin! pinned-package)
|
;; (unpin! pinned-package)
|
||||||
;; ...or multiple packages
|
;; ...or multiple packages
|
||||||
;(unpin! pinned-package another-pinned-package)
|
;; (unpin! pinned-package another-pinned-package)
|
||||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||||
;(unpin! t)
|
;; (unpin! t)
|
||||||
|
|
||||||
;(package! org-wild-notifier :disable t) ;; currently using a customized version loaded locally
|
|
||||||
|
|
||||||
;; for termux only: straight and org (org-roam) are as of writing (early 2023-08) unstable
|
|
||||||
;(package! straight :pin "921a449")
|
|
||||||
;(package! org :pin "ca873f7")
|
|
||||||
|
|
||||||
(package! org-books)
|
(package! org-books)
|
||||||
(package! org-download)
|
;(package! nov)
|
||||||
|
;(package! org-modern) ;; try
|
||||||
;;; customized to support repeated tasks, see https://github.com/akhramov/org-wild-notifier.el/issues/41
|
|
||||||
(package! org-wild-notifier
|
(package! org-wild-notifier
|
||||||
:recipe (:local-repo "~/.config/doom/lisp/org-wild-notifier"))
|
:recipe (:local-repo "lisp/org-wild-notifier"))
|
||||||
|
;(package! focus) ;; try
|
||||||
|
;(package! dimmer) ;; try
|
||||||
|
;(package! minions) ;; try
|
||||||
|
;(package! mini-frame) ;; try
|
||||||
|
(package! solaire-mode :disable t)
|
||||||
|
;(package! simple-httpd)
|
||||||
|
;(package! htmlize)
|
||||||
|
;(package! esxml)
|
||||||
|
;(package! webfeeder)
|
||||||
|
(package! org-super-agenda)
|
125
home/default/.doom.d/themes/doom-tomorrow-night-b-theme.el
Normal file
125
home/default/.doom.d/themes/doom-tomorrow-night-b-theme.el
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
;;; doom-tomorrow-night-b-theme.el --- One of the dark variants of Tomorrow -*- lexical-binding: t; no-byte-compile: t; -*-
|
||||||
|
;;
|
||||||
|
;; Added: May 14, 2017 (4c981f2cccf3)
|
||||||
|
;; Author: Henrik Lissner <https://github.com/hlissner>
|
||||||
|
;; Maintainer:
|
||||||
|
;; Source: https://github.com/ChrisKempson/Tomorrow-Theme
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'doom-themes)
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;;; Variables
|
||||||
|
|
||||||
|
(defgroup doom-tomorrow-night-b-theme nil
|
||||||
|
"Options for the `doom-tomorrow-night-b' theme."
|
||||||
|
:group 'doom-themes)
|
||||||
|
|
||||||
|
(defcustom doom-tomorrow-night-b-padded-modeline doom-themes-padded-modeline
|
||||||
|
"If non-nil, adds a 4px padding to the mode-line. Can be an integer to
|
||||||
|
determine the exact padding."
|
||||||
|
:group 'doom-tomorrow-night-b-theme
|
||||||
|
:type '(choice integer boolean))
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;;; Theme definition
|
||||||
|
|
||||||
|
(def-doom-theme doom-tomorrow-night-b
|
||||||
|
"A theme based off of Chris Kempson's Tomorrow Dark."
|
||||||
|
|
||||||
|
;; name gui 256 16
|
||||||
|
;((bg '("#1d1f21" nil nil ))
|
||||||
|
((bg '("#000000" nil nil ))
|
||||||
|
;(bg-alt '("#161719" nil nil ))
|
||||||
|
(bg-alt '("#000000" nil nil ))
|
||||||
|
(base0 '("#0d0d0d" "black" "black" ))
|
||||||
|
(base1 '("#1b1b1b" "#1b1b1b" ))
|
||||||
|
(base2 '("#212122" "#1e1e1e" ))
|
||||||
|
(base3 '("#292b2b" "#292929" "brightblack"))
|
||||||
|
(base4 '("#3f4040" "#3f3f3f" "brightblack"))
|
||||||
|
(base5 '("#5c5e5e" "#525252" "brightblack"))
|
||||||
|
(base6 '("#757878" "#6b6b6b" "brightblack"))
|
||||||
|
(base7 '("#969896" "#979797" "brightblack"))
|
||||||
|
(base8 '("#ffffff" "#ffffff" "white" ))
|
||||||
|
(fg '("#c5c8c6" "#c5c5c5" "white"))
|
||||||
|
(fg-alt (doom-darken fg 0.4))
|
||||||
|
|
||||||
|
(grey '("#5a5b5a" "#5a5a5a" "brightblack"))
|
||||||
|
(red '("#cc6666" "#cc6666" "red"))
|
||||||
|
(orange '("#de935f" "#dd9955" "brightred"))
|
||||||
|
(yellow '("#f0c674" "#f0c674" "yellow"))
|
||||||
|
(green '("#b5bd68" "#b5bd68" "green"))
|
||||||
|
(blue '("#81a2be" "#88aabb" "brightblue"))
|
||||||
|
(dark-blue '("#41728e" "#41728e" "blue"))
|
||||||
|
(teal blue) ; FIXME replace with real teal
|
||||||
|
(magenta '("#c9b4cf" "#c9b4cf" "magenta"))
|
||||||
|
(violet '("#b294bb" "#b294bb" "brightmagenta"))
|
||||||
|
(cyan '("#8abeb7" "#8abeb7" "cyan"))
|
||||||
|
(dark-cyan (doom-darken cyan 0.4))
|
||||||
|
|
||||||
|
;; face categories
|
||||||
|
(highlight blue)
|
||||||
|
(vertical-bar base0)
|
||||||
|
(selection `(,(car (doom-lighten bg 0.1)) ,@(cdr base4)))
|
||||||
|
(builtin blue)
|
||||||
|
(comments grey)
|
||||||
|
(doc-comments (doom-lighten grey 0.14))
|
||||||
|
(constants orange)
|
||||||
|
(functions blue)
|
||||||
|
(keywords violet)
|
||||||
|
(methods blue)
|
||||||
|
(operators fg)
|
||||||
|
(type yellow)
|
||||||
|
(strings green)
|
||||||
|
(variables red)
|
||||||
|
(numbers orange)
|
||||||
|
(region selection)
|
||||||
|
(error red)
|
||||||
|
(warning yellow)
|
||||||
|
(success green)
|
||||||
|
(vc-modified fg-alt)
|
||||||
|
(vc-added green)
|
||||||
|
(vc-deleted red)
|
||||||
|
|
||||||
|
;; custom categories
|
||||||
|
(modeline-bg `(,(doom-darken (car bg-alt) 0.3) ,@(cdr base3)))
|
||||||
|
(modeline-bg-alt `(,(car bg) ,@(cdr base1)))
|
||||||
|
(modeline-fg base8)
|
||||||
|
(modeline-fg-alt comments)
|
||||||
|
(-modeline-pad
|
||||||
|
(when doom-tomorrow-night-b-padded-modeline
|
||||||
|
(if (integerp doom-tomorrow-night-b-padded-modeline)
|
||||||
|
doom-tomorrow-night-b-padded-modeline
|
||||||
|
4))))
|
||||||
|
|
||||||
|
;; --- faces ------------------------------
|
||||||
|
(((line-number &override) :foreground base4)
|
||||||
|
((line-number-current-line &override) :foreground blue :bold bold)
|
||||||
|
(mode-line
|
||||||
|
:background modeline-bg :foreground modeline-fg
|
||||||
|
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg)))
|
||||||
|
(mode-line-inactive
|
||||||
|
:background modeline-bg-alt :foreground modeline-fg-alt
|
||||||
|
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-alt)))
|
||||||
|
|
||||||
|
;;;; rainbow-delimiters
|
||||||
|
(rainbow-delimiters-depth-1-face :foreground violet)
|
||||||
|
(rainbow-delimiters-depth-2-face :foreground blue)
|
||||||
|
(rainbow-delimiters-depth-3-face :foreground orange)
|
||||||
|
(rainbow-delimiters-depth-4-face :foreground green)
|
||||||
|
(rainbow-delimiters-depth-5-face :foreground magenta)
|
||||||
|
(rainbow-delimiters-depth-6-face :foreground yellow)
|
||||||
|
(rainbow-delimiters-depth-7-face :foreground teal)
|
||||||
|
;;;; doom-modeline
|
||||||
|
(doom-modeline-buffer-path :foreground violet :bold bold)
|
||||||
|
(doom-modeline-buffer-major-mode :inherit 'doom-modeline-buffer-path))
|
||||||
|
|
||||||
|
;; --- variables --------------------------
|
||||||
|
;; ()
|
||||||
|
)
|
||||||
|
|
||||||
|
;;; doom-tomorrow-night-b-theme.el ends here
|
125
home/default/.doom.d/themes/doom-tomorrow-night-r-theme.el
Normal file
125
home/default/.doom.d/themes/doom-tomorrow-night-r-theme.el
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
;;; doom-tomorrow-night-r-theme.el --- One of the dark variants of Tomorrow -*- lexical-binding: t; no-byte-compile: t; -*-
|
||||||
|
;;
|
||||||
|
;; Added: May 14, 2017 (4c981f2cccf3)
|
||||||
|
;; Author: Henrik Lissner <https://github.com/hlissner>
|
||||||
|
;; Maintainer:
|
||||||
|
;; Source: https://github.com/ChrisKempson/Tomorrow-Theme
|
||||||
|
;;
|
||||||
|
;;; Commentary:
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'doom-themes)
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;;; Variables
|
||||||
|
|
||||||
|
(defgroup doom-tomorrow-night-r-theme nil
|
||||||
|
"Options for the `doom-tomorrow-night-r' theme."
|
||||||
|
:group 'doom-themes)
|
||||||
|
|
||||||
|
(defcustom doom-tomorrow-night-r-padded-modeline doom-themes-padded-modeline
|
||||||
|
"If non-nil, adds a 4px padding to the mode-line. Can be an integer to
|
||||||
|
determine the exact padding."
|
||||||
|
:group 'doom-tomorrow-night-r-theme
|
||||||
|
:type '(choice integer boolean))
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;;; Theme definition
|
||||||
|
|
||||||
|
(def-doom-theme doom-tomorrow-night-r
|
||||||
|
"A theme based off of Chris Kempson's Tomorrow Dark."
|
||||||
|
|
||||||
|
;; name gui 256 16
|
||||||
|
;((bg '("#1d1f21" nil nil ))
|
||||||
|
((bg '("#161616" nil nil ))
|
||||||
|
;(bg-alt '("#161719" nil nil ))
|
||||||
|
(bg-alt '("#161616" nil nil ))
|
||||||
|
(base0 '("#0d0d0d" "black" "black" ))
|
||||||
|
(base1 '("#1b1b1b" "#1b1b1b" ))
|
||||||
|
(base2 '("#212122" "#1e1e1e" ))
|
||||||
|
(base3 '("#292b2b" "#292929" "brightblack"))
|
||||||
|
(base4 '("#3f4040" "#3f3f3f" "brightblack"))
|
||||||
|
(base5 '("#5c5e5e" "#525252" "brightblack"))
|
||||||
|
(base6 '("#757878" "#6b6b6b" "brightblack"))
|
||||||
|
(base7 '("#969896" "#979797" "brightblack"))
|
||||||
|
(base8 '("#ffffff" "#ffffff" "white" ))
|
||||||
|
(fg '("#c5c8c6" "#c5c5c5" "white"))
|
||||||
|
(fg-alt (doom-darken fg 0.4))
|
||||||
|
|
||||||
|
(grey '("#5a5b5a" "#5a5a5a" "brightblack"))
|
||||||
|
(red '("#cc6666" "#cc6666" "red"))
|
||||||
|
(orange '("#de935f" "#dd9955" "brightred"))
|
||||||
|
(yellow '("#f0c674" "#f0c674" "yellow"))
|
||||||
|
(green '("#b5bd68" "#b5bd68" "green"))
|
||||||
|
(blue '("#81a2be" "#88aabb" "brightblue"))
|
||||||
|
(dark-blue '("#41728e" "#41728e" "blue"))
|
||||||
|
(teal blue) ; FIXME replace with real teal
|
||||||
|
(magenta '("#c9b4cf" "#c9b4cf" "magenta"))
|
||||||
|
(violet '("#b294bb" "#b294bb" "brightmagenta"))
|
||||||
|
(cyan '("#8abeb7" "#8abeb7" "cyan"))
|
||||||
|
(dark-cyan (doom-darken cyan 0.4))
|
||||||
|
|
||||||
|
;; face categories
|
||||||
|
(highlight blue)
|
||||||
|
(vertical-bar base0)
|
||||||
|
(selection `(,(car (doom-lighten bg 0.1)) ,@(cdr base4)))
|
||||||
|
(builtin blue)
|
||||||
|
(comments grey)
|
||||||
|
(doc-comments (doom-lighten grey 0.14))
|
||||||
|
(constants orange)
|
||||||
|
(functions blue)
|
||||||
|
(keywords violet)
|
||||||
|
(methods blue)
|
||||||
|
(operators fg)
|
||||||
|
(type yellow)
|
||||||
|
(strings green)
|
||||||
|
(variables red)
|
||||||
|
(numbers orange)
|
||||||
|
(region selection)
|
||||||
|
(error red)
|
||||||
|
(warning yellow)
|
||||||
|
(success green)
|
||||||
|
(vc-modified fg-alt)
|
||||||
|
(vc-added green)
|
||||||
|
(vc-deleted red)
|
||||||
|
|
||||||
|
;; custom categories
|
||||||
|
(modeline-bg `(,(doom-darken (car bg-alt) 0.3) ,@(cdr base3)))
|
||||||
|
(modeline-bg-alt `(,(car bg) ,@(cdr base1)))
|
||||||
|
(modeline-fg base8)
|
||||||
|
(modeline-fg-alt comments)
|
||||||
|
(-modeline-pad
|
||||||
|
(when doom-tomorrow-night-r-padded-modeline
|
||||||
|
(if (integerp doom-tomorrow-night-r-padded-modeline)
|
||||||
|
doom-tomorrow-night-r-padded-modeline
|
||||||
|
4))))
|
||||||
|
|
||||||
|
;; --- faces ------------------------------
|
||||||
|
(((line-number &override) :foreground base4)
|
||||||
|
((line-number-current-line &override) :foreground blue :bold bold)
|
||||||
|
(mode-line
|
||||||
|
:background modeline-bg :foreground modeline-fg
|
||||||
|
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg)))
|
||||||
|
(mode-line-inactive
|
||||||
|
:background modeline-bg-alt :foreground modeline-fg-alt
|
||||||
|
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-alt)))
|
||||||
|
|
||||||
|
;;;; rainbow-delimiters
|
||||||
|
(rainbow-delimiters-depth-1-face :foreground violet)
|
||||||
|
(rainbow-delimiters-depth-2-face :foreground blue)
|
||||||
|
(rainbow-delimiters-depth-3-face :foreground orange)
|
||||||
|
(rainbow-delimiters-depth-4-face :foreground green)
|
||||||
|
(rainbow-delimiters-depth-5-face :foreground magenta)
|
||||||
|
(rainbow-delimiters-depth-6-face :foreground yellow)
|
||||||
|
(rainbow-delimiters-depth-7-face :foreground teal)
|
||||||
|
;;;; doom-modeline
|
||||||
|
(doom-modeline-buffer-path :foreground violet :bold bold)
|
||||||
|
(doom-modeline-buffer-major-mode :inherit 'doom-modeline-buffer-path))
|
||||||
|
|
||||||
|
;; --- variables --------------------------
|
||||||
|
;; ()
|
||||||
|
)
|
||||||
|
|
||||||
|
;;; doom-tomorrow-night-r-theme.el ends here
|
4
home/default/.local/bin/boom
Executable file
4
home/default/.local/bin/boom
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
notify-send 'boom' 'boom.mp3'
|
||||||
|
mpg123 $HOME/resources/sounds/alerts/boom.mp3
|
@ -8,3 +8,4 @@ case "$(file --dereference --brief --mime-type -- "/tmp/convert-paste-png.data")
|
|||||||
image/png) wl-paste -t image/png > "$1" ;;
|
image/png) wl-paste -t image/png > "$1" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
rm /tmp/convert-paste-png.data
|
||||||
|
51
home/default/.local/bin/dark.sh
Executable file
51
home/default/.local/bin/dark.sh
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ -z "$1" ] && printf "Usage: screenshot.sh [output|active|window] \n" && exit 0
|
||||||
|
|
||||||
|
dark() {
|
||||||
|
cp -f ~/.config/swaync/style.mocha.css ~/.config/swaync/style.css
|
||||||
|
setsid -f killall swaync >/dev/null 2>&1
|
||||||
|
sleep 2 && setsid -f swaync >/dev/null 2>&1
|
||||||
|
echo 'swaync set'
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
cat ~/.config/foot/foot.ini >> ~/.config/foot/foot.ini
|
||||||
|
echo 'foot terminal set, reopen to change'
|
||||||
|
|
||||||
|
# TODO emacs
|
||||||
|
|
||||||
|
# TODO gtk
|
||||||
|
|
||||||
|
# TODO gtk flatpak
|
||||||
|
sudo flatpak override --env GTK_THEME=Materia-dark
|
||||||
|
# TODO browser
|
||||||
|
}
|
||||||
|
|
||||||
|
light() {
|
||||||
|
cp -f ~/.config/swaync/style.latte.css ~/.config/swaync/style.css
|
||||||
|
setsid -f killall swaync >/dev/null 2>&1
|
||||||
|
sleep 2 && setsid -f swaync >/dev/null 2>&1
|
||||||
|
echo 'swaync set'
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
cat ~/.config/foot/foot.ini >> ~/.config/foot/foot.ini
|
||||||
|
echo 'foot terminal set, reopen to change'
|
||||||
|
|
||||||
|
# TODO emacs
|
||||||
|
|
||||||
|
# TODO gtk
|
||||||
|
# TODO gtk flatpak
|
||||||
|
sudo flatpak override --env GTK_THEME=Materia
|
||||||
|
# TODO browser
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ -n "$1" ]]; then
|
||||||
|
case "$1" in
|
||||||
|
dark) dark
|
||||||
|
*)
|
||||||
|
echo $@ is not an argument
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
@ -1,2 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
setsid -f emacsclient --alternate-editor='emacs' $@ >/dev/null 2>&1
|
|
@ -1,2 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
emacsclient -nw -c --alternate-editor='emacs -nw' $@
|
|
@ -1,10 +1,20 @@
|
|||||||
#!/bin/zsh
|
#!/bin/zsh
|
||||||
if [[ -z "$1" ]]; then
|
if [[ -z "$1" ]] && [[ "$WINDOW_MANAGER" == "river" ]] ; then
|
||||||
swayidle -w \
|
swayidle -w \
|
||||||
timeout 310 'swaylock' \
|
timeout 310 'swaylock' \
|
||||||
timeout 300 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
|
timeout 300 'wlopm --off "*"' resume 'wlopm --on "*"' \
|
||||||
before-sleep "swaylock"
|
before-sleep "swaylock"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$1" ]] && [[ "$WINDOW_MANAGER" == "sway" ]] ; then
|
||||||
|
swayidle -w \
|
||||||
|
timeout 310 'swaylock' \
|
||||||
|
timeout 300 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
|
||||||
|
before-sleep "swaylock"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#timeout 300 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
|
||||||
|
|
||||||
if [[ $1 == "-k" ]]; then
|
if [[ $1 == "-k" ]]; then
|
||||||
killall swayidle
|
killall swayidle
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -15,10 +15,10 @@ fi
|
|||||||
case "$url" in
|
case "$url" in
|
||||||
*mkv|*webm|*mp4|*hooktube.com*|*bitchute.com*|*videos.lukesmith.xyz*|*odysee.com*)
|
*mkv|*webm|*mp4|*hooktube.com*|*bitchute.com*|*videos.lukesmith.xyz*|*odysee.com*)
|
||||||
setsid -f mpv -quiet "$url" >/dev/null 2>&1 ;;
|
setsid -f mpv -quiet "$url" >/dev/null 2>&1 ;;
|
||||||
*youtube.com/watch*|*youtube.com/playlist*|*youtube.com/shorts*|*youtu.be*)
|
*youtube.com/watch*|*youtube.com/playlist*|*youtube.com/shorts*|*youtu.be*|*youtube-nocookie.com/embed*)
|
||||||
setsid -f flatpak run io.freetubeapp.FreeTube "$url" >/dev/null 2>&1 ;;
|
setsid -f flatpak run io.freetubeapp.FreeTube "$url" >/dev/null 2>&1 ;;
|
||||||
*png|*jpg|*jpe|*jpeg|*gif)
|
*png|*jpg|*jpe|*jpeg|*gif|*webp|*PNG|*JPG|*JPE|*JPEG|*GIF|*WEBP)
|
||||||
curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && nsxiv -a "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||||
*pdf|*cbz|*cbr)
|
*pdf|*cbz|*cbr)
|
||||||
curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||||
*epub)
|
*epub)
|
||||||
|
@ -6,7 +6,9 @@ directory="$HOME/Music"
|
|||||||
case "$file" in
|
case "$file" in
|
||||||
*youtube.com*|*youtu.be*|*bandcamp.com*|*soundcloud.com*)
|
*youtube.com*|*youtu.be*|*bandcamp.com*|*soundcloud.com*)
|
||||||
notify-send "Downloading" "$file"
|
notify-send "Downloading" "$file"
|
||||||
cd $directory && yt-dlp --embed-metadata --embed-thumbnail -xc -f bestaudio/best --restrict-filenames "$file" && notify-send "Music added!" "$file is now saved to the music directory."
|
cd $directory && yt-dlp --embed-metadata --embed-thumbnail -xc -f 'bestaudio[ext=m4a]' "$file" && notify-send "Music added!" "$file is now saved to the music directory."
|
||||||
|
# --restrict-filenames
|
||||||
|
# -f bestaudio/best
|
||||||
;;
|
;;
|
||||||
*mp3|*flac|*opus|*mp3?source*)
|
*mp3|*flac|*opus|*mp3?source*)
|
||||||
notify-send "⏳ Queuing $file..."
|
notify-send "⏳ Queuing $file..."
|
||||||
|
4
home/default/.local/bin/pind
Executable file
4
home/default/.local/bin/pind
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
[ -z "$1" ] && echo 'usage: pind <url>' && exit 1
|
||||||
|
read url < <(curl -Ls "$1" | pup 'img attr{src}')
|
||||||
|
curl -LO --no-clobber $url && echo "$url downloaded"
|
6
home/default/.local/bin/record-screen
Executable file
6
home/default/.local/bin/record-screen
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# record video
|
||||||
|
dir=~/Videos/recordings
|
||||||
|
(cd $dir && wf-recorder -g "$(slurp)" --audio --file=$(date +%Y-%m-%d_%H-%m-%s).mp4)
|
||||||
|
xdg-open $dir
|
6
home/default/.local/bin/record-screen-no-audio
Executable file
6
home/default/.local/bin/record-screen-no-audio
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# record video
|
||||||
|
dir=~/Videos/recordings
|
||||||
|
(cd $dir && wf-recorder -g "$(slurp)" --file="$(date +%Y-%m-%d_%H-%m-%s).mp4")
|
||||||
|
xdg-open $dir
|
@ -27,6 +27,7 @@ fi
|
|||||||
if [[ -N $file ]]; then
|
if [[ -N $file ]]; then
|
||||||
echo "screenshot saved."
|
echo "screenshot saved."
|
||||||
notify-send "screenshot saved." -i $file
|
notify-send "screenshot saved." -i $file
|
||||||
|
update-recentf.py $file
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
echo "screenshot failed."
|
echo "screenshot failed."
|
||||||
|
@ -1,43 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
bmdirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs"
|
|
||||||
bmfiles="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files"
|
|
||||||
|
|
||||||
# Output locations. Unactivated progs should go to /dev/null.
|
|
||||||
shell_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
|
|
||||||
zsh_named_dirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
|
|
||||||
lf_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcutrc"
|
|
||||||
vim_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/nvim/shortcuts.vim"
|
|
||||||
ranger_shortcuts="/dev/null"
|
|
||||||
qute_shortcuts="/dev/null"
|
|
||||||
fish_shortcuts="/dev/null"
|
|
||||||
vifm_shortcuts="/dev/null"
|
|
||||||
|
|
||||||
# Remove, prepare files
|
|
||||||
rm -f "$lf_shortcuts" "$ranger_shortcuts" "$qute_shortcuts" "$zsh_named_dirs" "$vim_shortcuts" 2>/dev/null
|
|
||||||
printf "# vim: filetype=sh\\n" > "$fish_shortcuts"
|
|
||||||
printf "# vim: filetype=sh\\nalias " > "$shell_shortcuts"
|
|
||||||
printf "\" vim: filetype=vim\\n" > "$vifm_shortcuts"
|
|
||||||
|
|
||||||
# Format the `directories` file in the correct syntax and sent it to all three configs.
|
|
||||||
eval "echo \"$(cat "$bmdirs")\"" | \
|
|
||||||
awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
|
|
||||||
printf(\"%s=\42cd %s && ls -a\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
|
|
||||||
printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
|
|
||||||
printf(\"abbr %s \42cd %s; and ls -a\42\n\",\$1,\$2) >> \"$fish_shortcuts\" ;
|
|
||||||
printf(\"map g%s :cd %s<CR>\nmap t%s <tab>:cd %s<CR><tab>\nmap M%s <tab>:cd %s<CR><tab>:mo<CR>\nmap Y%s <tab>:cd %s<CR><tab>:co<CR> \n\",\$1,\$2, \$1, \$2, \$1, \$2, \$1, \$2) >> \"$vifm_shortcuts\" ;
|
|
||||||
printf(\"config.bind(';%s', \42set downloads.location.directory %s ;; hint links download\42) \n\",\$1,\$2) >> \"$qute_shortcuts\" ;
|
|
||||||
printf(\"map g%s cd %s\nmap t%s tab_new %s\nmap m%s shell mv -v %%s %s\nmap Y%s shell cp -rv %%s %s \n\",\$1,\$2,\$1,\$2, \$1, \$2, \$1, \$2) >> \"$ranger_shortcuts\" ;
|
|
||||||
printf(\"map C%s cd \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" ;
|
|
||||||
printf(\"cmap ;%s %s\n\",\$1,\$2) >> \"$vim_shortcuts\" }"
|
|
||||||
|
|
||||||
# Format the `files` file in the correct syntax and sent it to both configs.
|
|
||||||
eval "echo \"$(cat "$bmfiles")\"" | \
|
|
||||||
awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
|
|
||||||
printf(\"%s=\42\$EDITOR %s\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
|
|
||||||
printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
|
|
||||||
printf(\"abbr %s \42\$EDITOR %s\42 \n\",\$1,\$2) >> \"$fish_shortcuts\" ;
|
|
||||||
printf(\"map %s :e %s<CR> \n\",\$1,\$2) >> \"$vifm_shortcuts\" ;
|
|
||||||
printf(\"map %s shell \$EDITOR %s \n\",\$1,\$2) >> \"$ranger_shortcuts\" ;
|
|
||||||
printf(\"map E%s \$\$EDITOR \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" ;
|
|
||||||
printf(\"cmap ;%s %s\n\",\$1,\$2) >> \"$vim_shortcuts\" }"
|
|
293
home/default/.local/bin/sway-select-window
Executable file
293
home/default/.local/bin/sway-select-window
Executable file
@ -0,0 +1,293 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# https://gitlab.com/wef/dotfiles/-/blob/master/bin/sway-select-window
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
TIME_STAMP="20230129.084152"
|
||||||
|
|
||||||
|
# Copyright (C) 2019-2023 Bob Hepple <bob dot hepple at gmail dot com>
|
||||||
|
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or (at
|
||||||
|
# your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
# General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# CUSTOMISE HERE IF YOU'RE NOT GETTING ALL YOUR ICONS:
|
||||||
|
|
||||||
|
# This array contains my most commonly used apps on f34, cached here
|
||||||
|
# for speed. If they don't work for you, you can either just remove
|
||||||
|
# these entries and rely on on-the-fly lookup of icons (which may be
|
||||||
|
# slow). Or, for speedier operation, you can:
|
||||||
|
|
||||||
|
# 1. get all your common apps running
|
||||||
|
# 2. remove the entries in the array
|
||||||
|
# 3. run the script from the CLI
|
||||||
|
# 4. copy-paste the list of "[app]=icon" lines into the array
|
||||||
|
|
||||||
|
# Also, if all else fails, you can hardcode your app here:
|
||||||
|
declare -A icons=(
|
||||||
|
[floating-kitty]=/usr/share/icons/hicolor/256x256/apps/kitty.png
|
||||||
|
[kitty]=/usr/share/icons/hicolor/256x256/apps/kitty.png
|
||||||
|
[foot]=/usr/share/icons/hicolor/48x48/apps/foot.png
|
||||||
|
[emacs]=/usr/share/icons/breeze/apps/48/emacs.svg
|
||||||
|
[firefox]=/usr/share/icons/hicolor/48x48/apps/firefox.png
|
||||||
|
[mythfrontend]=/usr/share/pixmaps/mythfrontend.png
|
||||||
|
[kitty]=/usr/share/icons/hicolor/256x256/apps/kitty.png
|
||||||
|
[Gdcalc]=/usr/share/pixmaps/HP-16C-48.xpm
|
||||||
|
[pavucontrol]=/usr/share/icons/gnome/48x48/apps/multimedia-volume-control.png
|
||||||
|
[pulseeffects]=/usr/share/icons/hicolor/scalable/apps/pulseeffects.svg
|
||||||
|
[blueman-manager]=/usr/share/icons/hicolor/scalable/apps/blueman.svg
|
||||||
|
[gnome-system-monitor]=/usr/share/icons/hicolor/scalable/apps/org.gnome.SystemMonitor.svg
|
||||||
|
[gnome-disks]=/usr/share/icons/hicolor/scalable/apps/org.gnome.DiskUtility.svg
|
||||||
|
[org.gnome.Weather]=/usr/share/icons/hicolor/scalable/apps/org.gnome.Weather.svg
|
||||||
|
[xfce4-appfinder]=/usr/share/icons/hicolor/scalable/apps/org.xfce.appfinder.svg
|
||||||
|
[LibreWolf]=/var/lib/flatpak/exports/share/icons/hicolor/128x128/apps/io.gitlab.librewolf-community.png
|
||||||
|
[firefox]=/var/lib/flatpak/exports/share/icons/hicolor/128x128/apps/org.mozilla.firefox.png
|
||||||
|
)
|
||||||
|
|
||||||
|
KEYBOARD_DEVICE="/dev/input/event4"
|
||||||
|
verbose=""
|
||||||
|
|
||||||
|
PROG=$( basename "$0" )
|
||||||
|
case "$1" in
|
||||||
|
-h|--help)
|
||||||
|
echo "Usage: $PROG"
|
||||||
|
echo
|
||||||
|
echo "show running programs and select one to display (uses wofi)."
|
||||||
|
|
||||||
|
echo "If evtest(1) is installed and sudo is available then you can press"
|
||||||
|
echo "Shift-Enter to move the window here rather than move to"
|
||||||
|
echo "the windows workspace. You may need to change KEYBOARD_DEVICE above."
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-v|--verbose)
|
||||||
|
verbose="set"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
jq_get_windows='
|
||||||
|
# descend to workspace or scratchpad
|
||||||
|
.nodes[].nodes[]
|
||||||
|
# save workspace name as .w
|
||||||
|
| {"w": .name} + (
|
||||||
|
if (.nodes|length) > 0 then # workspace
|
||||||
|
[recurse(.nodes[])]
|
||||||
|
else # scratchpad
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
+ .floating_nodes
|
||||||
|
| .[]
|
||||||
|
# select nodes with no children (windows)
|
||||||
|
| select(.nodes==[])
|
||||||
|
)'
|
||||||
|
|
||||||
|
jq_windows_to_tsv='
|
||||||
|
[
|
||||||
|
(.id | tostring),
|
||||||
|
# remove markup and index from workspace name, replace scratch with "[S]"
|
||||||
|
(.w | gsub("<[^>]*>|:$"; "") | sub("__i3_scratch"; "[S]")),
|
||||||
|
# get app name (or window class if xwayland)
|
||||||
|
(.app_id // .window_properties.class),
|
||||||
|
(.name),
|
||||||
|
(.pid)
|
||||||
|
]
|
||||||
|
| @tsv'
|
||||||
|
|
||||||
|
get_fs_win_in_ws() {
|
||||||
|
id="${1:?}"
|
||||||
|
|
||||||
|
swaymsg -t get_tree |
|
||||||
|
jq -e -r --argjson id "$id" "
|
||||||
|
[ $jq_get_windows ]
|
||||||
|
| (.[]|select(.id == \$id)) as \$selected_workspace
|
||||||
|
| .[]
|
||||||
|
| select( .w == \$selected_workspace.w and .fullscreen_mode == 1 )
|
||||||
|
| $jq_windows_to_tsv
|
||||||
|
"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_hardcoded_icon() {
|
||||||
|
icon="${icons[$1]}"
|
||||||
|
echo "$icon"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_desktop() {
|
||||||
|
app="$1"
|
||||||
|
p="/usr/share/applications"
|
||||||
|
|
||||||
|
# fast and easy cases first:
|
||||||
|
for prefix in "" org.kde. org.gnome. org.freedesktop.; do
|
||||||
|
d="$p/$prefix$app.desktop"
|
||||||
|
[[ -r "$d" ]] && echo "$d" && return
|
||||||
|
done
|
||||||
|
|
||||||
|
# maybe lowercase
|
||||||
|
for prefix in "" org.kde. org.gnome. org.freedesktop.; do
|
||||||
|
d="$p/$prefix${app,,}.desktop"
|
||||||
|
[[ -r "$d" ]] && echo "$d" && return
|
||||||
|
done
|
||||||
|
|
||||||
|
# this is fairly reliable but slow:
|
||||||
|
# look for a .desktop file with Exec=$app eg
|
||||||
|
# gnome-disks (but exclude gnome-disk-image-writer.desktop)
|
||||||
|
# gnome-font-viewer
|
||||||
|
GREP='egrep -r'
|
||||||
|
type rg &>/dev/null && GREP=rg
|
||||||
|
d=$( $GREP -il "^exec=$app( %u)*[[:space:]]*$" $p | head -n 1)
|
||||||
|
[[ -r "$d" ]] && echo "$d" && return
|
||||||
|
|
||||||
|
# desperation - weird apps like com.github.wwmm.pulseeffects.desktop!!
|
||||||
|
# shellcheck disable=SC2012
|
||||||
|
d=$( ls "$p/"*".$app.desktop" 2>/dev/null | head -n 1 )
|
||||||
|
[[ -r "$d" ]] && echo "$d" && return
|
||||||
|
}
|
||||||
|
|
||||||
|
get_icon() {
|
||||||
|
icon_locations=(
|
||||||
|
icons/hicolor/scalable/apps
|
||||||
|
icons/hicolor/48x48/apps
|
||||||
|
icons/hicolor/128x128/apps
|
||||||
|
icons/hicolor/256x256/apps
|
||||||
|
icons/gnome/48x48/apps
|
||||||
|
icons/gnome/48x48/devices
|
||||||
|
pixmaps
|
||||||
|
)
|
||||||
|
|
||||||
|
app="$1"
|
||||||
|
|
||||||
|
icon=$( get_hardcoded_icon "$app_name" )
|
||||||
|
[[ "$icon" && -r "$icon" ]] && echo "$icon" && return
|
||||||
|
|
||||||
|
# let's go poke in the .desktop files:
|
||||||
|
icon_name=""
|
||||||
|
dt=$( get_desktop "$app" )
|
||||||
|
|
||||||
|
# sometimes we get the 'class' rather than the exe - so try this:
|
||||||
|
[[ "$dt" ]] || {
|
||||||
|
app=$( tr '\0' '\n' < "/proc/$pid/cmdline" | head -n 1 )
|
||||||
|
dt=$( get_desktop "$( basename "$app" )" )
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ "$dt" ]] && {
|
||||||
|
icon_name=$( awk -v IGNORECASE="set" -F"=" '/^icon/ {print $2}' "$dt" )
|
||||||
|
[[ "$icon_name" ]] && {
|
||||||
|
for d in "${icon_locations[@]}"; do
|
||||||
|
for s in .svg .png ""; do
|
||||||
|
icon=/usr/share/$d/$icon_name$s
|
||||||
|
[[ -r $icon ]] && echo "$icon" && return
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# desperation street:
|
||||||
|
icon=$( find /usr/share/icons /usr/share/pixmaps | grep -E -i "/$app.(png|svg)" | head -n 1 )
|
||||||
|
[[ "$icon" && -r "$icon" ]] && echo "$icon" && return
|
||||||
|
|
||||||
|
# failed:
|
||||||
|
#echo "/usr/share/icons/Adwaita/32x32/status/image-missing-symbolic.symbolic.png"
|
||||||
|
echo "$HOME/.local/share/icons/img-missing-sym.png"
|
||||||
|
}
|
||||||
|
|
||||||
|
focus_window() {
|
||||||
|
id="${1}"
|
||||||
|
ws_name="${2}"
|
||||||
|
app_name="${3}"
|
||||||
|
win_title="${4}"
|
||||||
|
|
||||||
|
[[ "$verbose" ]] && printf "focusing window (in workspace %s): [%s] (%s) \`%s\`\n" "$ws_name" "$id" "$app_name" "$win_title" >&2
|
||||||
|
|
||||||
|
# look for fullscreen among other windows in selected window's workspace
|
||||||
|
if fs_win_tsv="$( get_fs_win_in_ws "$id" )" ; then
|
||||||
|
read -r win_id ws_name app_name win_title <<<"$fs_win_tsv"
|
||||||
|
if [ "$win_id" != "$id" ] ; then
|
||||||
|
[[ "$verbose" ]] && printf 'found fullscreen window in target workspace (%s): [%s] (%s) "%s"\n' "$ws_name" "$win_id" "$app_name" "$win_title" >&2
|
||||||
|
swaymsg "[con_id=$win_id] fullscreen disable"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
swaymsg "[con_id=$id]" focus
|
||||||
|
}
|
||||||
|
|
||||||
|
id_fmt='<span stretch="ultracondensed" size="xx-small">%s</span>'
|
||||||
|
ws_fmt='<span size="small">%s</span>'
|
||||||
|
app_fmt='<span weight="bold">%s</span>'
|
||||||
|
title_fmt='<span style="italic">%s</span>'
|
||||||
|
|
||||||
|
#id_fmt='%s'
|
||||||
|
#ws_fmt='%s'
|
||||||
|
#app_fmt='%s'
|
||||||
|
#title_fmt='%s'
|
||||||
|
|
||||||
|
# allow Alt+Tab etc to not be caught by sway:
|
||||||
|
trap 'swaymsg "mode default"' EXIT
|
||||||
|
swaymsg "mode passthrough"
|
||||||
|
|
||||||
|
swaymsg -t get_tree |
|
||||||
|
# get list of windows as tab-separated columns
|
||||||
|
jq -r "$jq_get_windows | $jq_windows_to_tsv" |
|
||||||
|
# align columns w/ spaces (keep tab as separator)
|
||||||
|
column -s $'\t' -o $'\t' -t |
|
||||||
|
# pango format the window list
|
||||||
|
while IFS=$'\t' read -r win_id ws_name app_name win_title pid; do
|
||||||
|
shopt -s extglob
|
||||||
|
app_name="${app_name%%*( )}"
|
||||||
|
icon=$( get_icon "$app_name" "$pid" )
|
||||||
|
[[ "$verbose" ]] && printf "[%s]=>%s\n" "$app_name" "$icon" >&2
|
||||||
|
# shellcheck disable=SC2059
|
||||||
|
# hide win_id for now
|
||||||
|
#win_id=""
|
||||||
|
# simplify ws_name instead of Scratch
|
||||||
|
#(( ${#ws_name} > 8 )) && ws_name="${ws_name:0:1}"
|
||||||
|
printf "img:$icon:text:${id_fmt}\t${ws_fmt}\t${app_fmt}\t${title_fmt}\n" \
|
||||||
|
"$win_id" \
|
||||||
|
"$ws_name" \
|
||||||
|
"$app_name" \
|
||||||
|
"$win_title"
|
||||||
|
done |
|
||||||
|
# sort by workspace name and then app_name:
|
||||||
|
sort -k2 -k3 |
|
||||||
|
# defeat the initial cache in order to preserve the order:
|
||||||
|
wofi -m --cache-file=/dev/null --insensitive --allow-images --show dmenu --prompt='Focus a window' | {
|
||||||
|
FS=$'\t' read -r win_id ws_name app_name win_title
|
||||||
|
# printf "win_id='$win_id' ws_name='$ws_name' app_name='$app_name' win_title='$win_title'" >&2
|
||||||
|
# use evtest (if installed) to detect the state of the left shift
|
||||||
|
# key and if it's 'down' then move the window here rather than move
|
||||||
|
# to the window's workspace. Should be safe if evtest or sudo are
|
||||||
|
# not available.
|
||||||
|
## i've disabled this
|
||||||
|
type evtest && sudo evtest --query $KEYBOARD_DEVICE EV_KEY KEY_LEFTSHIFT
|
||||||
|
SHIFT_STATE=$?
|
||||||
|
if [[ "$win_id" ]]; then
|
||||||
|
if (( SHIFT_STATE == 10 )); then
|
||||||
|
# bring the window here
|
||||||
|
swaymsg "[con_id=$win_id] move window to workspace current, focus"
|
||||||
|
else
|
||||||
|
focus_window "$win_id" "$ws_name" "$app_name" "$win_title"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# this is the example documented in 'man 7 wofi' but it doesn't understand the scratchpad:
|
||||||
|
swaymsg -t get_tree |
|
||||||
|
jq -r '.nodes[].nodes[] | if .nodes then [recurse(.nodes[])] else [] end + .floating_nodes | .[] | select(.nodes==[]) | ((.id | tostring) + " " + .name)' |
|
||||||
|
wofi --show dmenu | {
|
||||||
|
read -r id name
|
||||||
|
swaymsg "[con_id=$id]" focus
|
||||||
|
}
|
||||||
|
|
||||||
|
# Local Variables:
|
||||||
|
# mode: shell-script
|
||||||
|
# time-stamp-pattern: "4/TIME_STAMP=\"%:y%02m%02d.%02H%02M%02S\""
|
||||||
|
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||||
|
# End:
|
@ -1,29 +1,46 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# A dmenu wrapper script for system functions.
|
# A dmenu wrapper script for system functions.
|
||||||
export WM=$XDG_CURRENT_DESKTOP
|
#export WM=$XDG_CURRENT_DESKTOP
|
||||||
|
if [ "$WINDOW_MANAGER" == "sway" ]; then WM="sway" ; fi
|
||||||
|
if [ "$WINDOW_MANAGER" == "river" ]; then WM="river" ; fi
|
||||||
case "$(readlink -f /sbin/init)" in
|
case "$(readlink -f /sbin/init)" in
|
||||||
*systemd*) ctl='systemctl' ;;
|
*systemd*) ctl='systemctl' ;;
|
||||||
*) ctl='loginctl' ;;
|
*) ctl='loginctl' ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$(printf "🔒 lock\n🚪 leave $WM\n♻️ renew $WM\n🐻 hibernate\n🔃 reboot\n🖥️ shutdown\n💤 sleep\n📺 display off\n set background\n start idle\n kill swayidle\n fcitx5\n kill fcitx5\n start emacs daemon\n kill emacs daemon\n restart emacs daemon" | rofi -dmenu -i -l 16 -p 'action')" in
|
#case "$(printf "🔒 lock\n🚪 leave $WM\n♻️ renew $WM\n🐻 hibernate\n🔃 reboot\n🖥️ shutdown\n💤 sleep\n📺 display off\n set background\n start idle\n kill swayidle\n fcitx5\n kill fcitx5\n start emacs daemon\n kill emacs daemon\n restart emacs daemon" | rofi -dmenu -i -l 16 -p 'action')" in
|
||||||
|
case "$(printf "🔒 lock\n🚪 leave $WM\n♻️ renew $WM\n🐻 hibernate\n🔃 reboot\n🖥️ shutdown\n💤 sleep\n📺 display off\n set background\n start idle\n kill swayidle\n fcitx5\n kill fcitx5\n start emacs daemon\n kill emacs daemon\n restart emacs daemon\ntoggle sworkstyle" | wofi -L 17 --cache-file=/dev/null --show=dmenu -i -p 'action')" in
|
||||||
'🔒 lock')
|
'🔒 lock')
|
||||||
setsid -f swaylock
|
setsid -f swaylock
|
||||||
setsid -f sleep 2 && swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#'
|
if [ "$WINDOW_MANAGER" == "river" ]; then setsid -f sleep 2 && swayidle -w timeout 1 'wlopm --off "*"' resume 'wlopm --on "*" && kill $#' ; fi
|
||||||
|
if [ "$WINDOW_MANAGER" == "sway" ]; then setsid -f sleep 2 && swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#' ; fi
|
||||||
|
;;
|
||||||
|
"🚪 leave $WM")
|
||||||
|
if [ "$WINDOW_MANAGER" == "sway" ]; then swaymsg exit ; fi
|
||||||
|
if [ "$WINDOW_MANAGER" == "river" ]; then riverctl exit ; fi
|
||||||
|
;;
|
||||||
|
"♻️ renew $WM")
|
||||||
|
if [ "$WINDOW_MANAGER" == "sway" ]; then swaymsg reload ; fi
|
||||||
|
if [ "$WINDOW_MANAGER" == "river" ]; then $HOME/.config/river/init ; fi
|
||||||
;;
|
;;
|
||||||
"🚪 leave $WM") swaymsg exit ;;
|
|
||||||
"♻️ renew $WM") swaymsg reload ;;
|
|
||||||
'🐻 hibernate') $ctl hibernate -i ;;
|
'🐻 hibernate') $ctl hibernate -i ;;
|
||||||
'💤 sleep') $ctl suspend -i ;;
|
'💤 sleep') $ctl suspend -i ;;
|
||||||
'🔃 reboot') $ctl reboot -i ;;
|
'🔃 reboot') $ctl reboot -i ;;
|
||||||
'🖥️ shutdown') $ctl poweroff -i ;;
|
'🖥️ shutdown') $ctl poweroff -i ;;
|
||||||
'📺 display off') swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#' ;;
|
#'📺 display off') swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#' ;;
|
||||||
|
'📺 display off')
|
||||||
|
if [ "$WINDOW_MANAGER" == "river" ]; then setsid -f sleep 2 && swayidle -w timeout 1 'wlopm --off "*"' resume 'wlopm --on "*" && kill $#' ; fi
|
||||||
|
if [ "$WINDOW_MANAGER" == "sway" ]; then setsid -f sleep 2 && swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#' ; fi
|
||||||
|
;;
|
||||||
' set background') change-background ;;
|
' set background') change-background ;;
|
||||||
' start idle') killall swayidle && sleep 1; setsid -f idle && notify-send 'idle started.';;
|
' start idle') killall swayidle && sleep 1; setsid -f idle && notify-send 'idle started.';;
|
||||||
' kill swayidle') killall swayidle && notify-send 'idle killed.';;
|
' kill swayidle') killall swayidle && notify-send 'idle killed.';;
|
||||||
' fcitx5') fcitx5 ;;
|
' fcitx5') fcitx5 ;;
|
||||||
' kill fcitx5') killall fcitx5 ;;
|
' kill fcitx5') killall fcitx5 ;;
|
||||||
|
#' start emacs daemon') emacs --daemon && emacsclient -c ;;
|
||||||
|
#' kill emacs daemon') emacsclient -e '(kill-emacs)' ;;
|
||||||
|
#' restart emacs daemon') emacsclient -e '(kill-emacs)' ; emacs --daemon && emacsclient -c ;;
|
||||||
' start emacs daemon') emacs --daemon && notify-send 'emacs daemon started' ;;
|
' start emacs daemon') emacs --daemon && notify-send 'emacs daemon started' ;;
|
||||||
' kill emacs daemon') emacsclient -e '(kill-emacs)' && notify-send 'emacs daemon killed' ;;
|
' kill emacs daemon') emacsclient -e '(kill-emacs)' && notify-send 'emacs daemon killed' ;;
|
||||||
' restart emacs daemon') emacsclient -e '(kill-emacs)' && notify-send 'emacs daemon killed' ; emacs --daemon && notify-send 'emacs daemon started' ;;
|
' restart emacs daemon') emacsclient -e '(kill-emacs)' && notify-send 'emacs daemon killed' ; emacs --daemon && notify-send 'emacs daemon started' ;;
|
||||||
|
13
home/default/.local/bin/update-recentf.py
Executable file
13
home/default/.local/bin/update-recentf.py
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import gi, sys
|
||||||
|
gi.require_version('Gtk', '3.0')
|
||||||
|
from gi.repository import Gtk, Gio, GLib
|
||||||
|
|
||||||
|
rec_mgr = Gtk.RecentManager.get_default()
|
||||||
|
|
||||||
|
for arg in sys.argv[1:]:
|
||||||
|
rec_mgr.add_item(Gio.File.new_for_path(arg).get_uri())
|
||||||
|
|
||||||
|
GLib.idle_add(Gtk.main_quit)
|
||||||
|
Gtk.main()
|
4
home/default/.local/share/applications/catclock.desktop
Normal file
4
home/default/.local/share/applications/catclock.desktop
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Cat Clock
|
||||||
|
Exec=/home/default/.local/uxn/uxnemu /home/default/.local/uxn/catclock.rom
|
@ -1,12 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Name=Emacs Client
|
|
||||||
GenericName=Text Editor
|
|
||||||
Comment=Edit text
|
|
||||||
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
|
|
||||||
Exec=emacsclient -c -a 'emacs' %F
|
|
||||||
Icon=emacs
|
|
||||||
Type=Application
|
|
||||||
Terminal=false
|
|
||||||
Categories=Development;TextEditor;
|
|
||||||
StartupNotify=true
|
|
||||||
StartupWMClass=Emacs
|
|
4
home/default/.local/share/applications/left.desktop
Normal file
4
home/default/.local/share/applications/left.desktop
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Left editor
|
||||||
|
Exec=/home/default/.local/uxn/uxnemu /home/default/.local/uxn/left.rom
|
@ -1,4 +1,4 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
Name=Whatsapp
|
Name=Whatsapp
|
||||||
Exec=/usr/bin/librewolf -P wa https://web.whatsapp.com
|
Exec=io.gitlab.librewolf-community -P whatsapp --new-window https://web.whatsapp.com
|
||||||
|
BIN
home/default/.local/share/icons/img-missing-sym.png
Normal file
BIN
home/default/.local/share/icons/img-missing-sym.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 546 B |
BIN
home/default/.local/share/icons/img-missing-sym2.png
Normal file
BIN
home/default/.local/share/icons/img-missing-sym2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 546 B |
172
instructions.org
172
instructions.org
@ -1,6 +1,6 @@
|
|||||||
#+title: Instructions
|
#+title: Instructions
|
||||||
|
|
||||||
** information
|
** information :info:
|
||||||
|
|
||||||
This org document is a list of instructions on how to install the whole setup of my personal system, including installation of standalone programs.
|
This org document is a list of instructions on how to install the whole setup of my personal system, including installation of standalone programs.
|
||||||
|
|
||||||
@ -35,17 +35,17 @@ sha256sum -c *-CHECKSUM
|
|||||||
|
|
||||||
differences/notes before continuing with the installation:
|
differences/notes before continuing with the installation:
|
||||||
|
|
||||||
1. some dependencies aren't available with 'fedora custom operating system'. before installing snapper make sure to install these packages:
|
1. some dependencies aren't available with 'fedora custom operating system'. before installing snapper install these packages:
|
||||||
|
|
||||||
#+BEGIN_SRC sh
|
#+BEGIN_SRC sh
|
||||||
sudo dnf install neovim sway firefox locate git bzip2
|
sudo dnf install neovim sway firefox locate git bzip2
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
a) neovim is the text editor of my choice
|
- ~neovim~: a text editor to edit files
|
||||||
b) install a browser such as firefox to follow along guide
|
- ~firefox~: a browser to follow along guide
|
||||||
c) locate, git, bzip2 are the missing dependencies not included in the guide.
|
- ~locate~, ~git~, ~bzip2~: missing dependencies not included in the guide.
|
||||||
|
|
||||||
2. software selection will be 'fedora custom operating system'
|
2. software selection will be =fedora custom operating system=
|
||||||
|
|
||||||
boot your fedora installer media and follow this guide, make sure to boot with EUFI mode:
|
boot your fedora installer media and follow this guide, make sure to boot with EUFI mode:
|
||||||
https://sysguides.com/install-fedora-38-with-snapshot-and-rollback-support/
|
https://sysguides.com/install-fedora-38-with-snapshot-and-rollback-support/
|
||||||
@ -133,6 +133,13 @@ the other dependency not included in packages.txt is `pup` (included in a sectio
|
|||||||
sudo dnf install -y $(cat ~/.dots/packages.txt)
|
sudo dnf install -y $(cat ~/.dots/packages.txt)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
** installing swayfx (window manager)
|
||||||
|
|
||||||
|
#+begin_src sh
|
||||||
|
sudo dnf copr enable swayfx/swayfx
|
||||||
|
sudo dnf install
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** configuring sudoers
|
** configuring sudoers
|
||||||
|
|
||||||
Allow wheel users to sudo with password and allow several system commands
|
Allow wheel users to sudo with password and allow several system commands
|
||||||
@ -140,7 +147,7 @@ Allow wheel users to sudo with password and allow several system commands
|
|||||||
|
|
||||||
#+BEGIN_SRC shell
|
#+BEGIN_SRC shell
|
||||||
echo "%wheel ALL=(ALL:ALL) ALL" >/etc/sudoers.d/00-wheel-can-sudo
|
echo "%wheel ALL=(ALL:ALL) ALL" >/etc/sudoers.d/00-wheel-can-sudo
|
||||||
echo "%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/shutdown,/usr/bin/reboot,/usr/bin/systemctl suspend,/usr/bin/wifi-menu,/usr/bin/mount,/usr/bin/umount,/usr/bin/dnf update,/usr/bin/dnf update -y,/usr/bin/dnf upgrade,/usr/bin/dnf upgrade,/usr/bin/loadkeys" >/etc/sudoers.d/01-cmds-without-password
|
echo "%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/shutdown,/usr/bin/reboot,/usr/bin/systemctl suspend,/usr/bin/wifi-menu,/usr/bin/mount,/usr/bin/umount,/usr/bin/dnf update,/usr/bin/dnf update -y,/usr/bin/dnf upgrade,/usr/bin/dnf upgrade,/usr/bin/dnf makecache,/usr/bin/dnf makecache -y,/usr/bin/loadkeys" >/etc/sudoers.d/01-cmds-without-password
|
||||||
echo "Defaults editor=/usr/bin/nvim" >/etc/sudoers.d/02-visudo-editor
|
echo "Defaults editor=/usr/bin/nvim" >/etc/sudoers.d/02-visudo-editor
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
@ -169,15 +176,44 @@ sudo dnf install librewolf
|
|||||||
*** plugins, etc
|
*** plugins, etc
|
||||||
https://github.com/ranmaru22/firefox-vertical-tabs
|
https://github.com/ranmaru22/firefox-vertical-tabs
|
||||||
https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/
|
https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/
|
||||||
|
https://addons.mozilla.org/en-US/firefox/addon/nicothin-dark-theme/
|
||||||
|
https://addons.mozilla.org/en-US/firefox/addon/tomorrow-theme-night
|
||||||
|
https://support.mozilla.org/en-US/kb/compact-mode-workaround-firefox
|
||||||
|
|
||||||
** doom emacs
|
** doom emacs
|
||||||
|
|
||||||
first we need to install marked for markdown support
|
first we need to install marked for markdown support
|
||||||
|
|
||||||
#+BEGIN_SRC sh
|
#+BEGIN_SRC sh
|
||||||
sudo npm install -g marked
|
sudo npm install -g marked
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
then install emacs
|
||||||
|
#+begin_src sh
|
||||||
|
sudo dnf install emacs
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
alternatively build emacs with native compilation and pgtk for better compatibility with wayland
|
||||||
|
#+begin_src sh
|
||||||
|
|
||||||
|
## clone the emacs repository
|
||||||
|
git clone git://git.savannah.gnu.org/emacs.git
|
||||||
|
|
||||||
|
## install dependencies
|
||||||
|
sudo dnf install gcc atk-devel cairo-devel freetype-devel fontconfig-devel dbus-devel giflib-devel glibc-devel libgccjit-devel libpng-devel libjpeg-turbo-devel libjpeg-turbo libtiff-devel libX11-devel libXau-devel libXdmcp-devel libXrender-devel libXt-devel libXpm-devel ncurses-devel xorg-x11-proto-devel zlib-devel gnutls-devel librsvg2-devel m17n-lib-devel libotf-devel libselinux-devel alsa-lib-devel gpm-devel liblockfile-devel libxml2-devel autoconf bzip2 cairo texinfo gzip desktop-file-utils libacl-devel harfbuzz-devel jansson-devel systemd-devel lcms2-devel systemd-rpm-macros libtree-sitter-devel gtk3-devel webkit2gtk3-devel gnupg2 sysprof-devel
|
||||||
|
|
||||||
|
## build emacs 29.1
|
||||||
|
cd emacs
|
||||||
|
git checkout emacs-29.1.90
|
||||||
|
./autogen.sh
|
||||||
|
./configure --with-dbus --with-gif --with-jpeg --with-png --with-rsvg \
|
||||||
|
--with-tiff --with-xft --with-xpm --with-gpm=no \
|
||||||
|
--with-xwidgets --with-modules --with-harfbuzz --with-cairo --with-json \
|
||||||
|
--with-tree-sitter --with-pgtk --with-native-compilation
|
||||||
|
make -j$(nproc)
|
||||||
|
sudo make install
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
install doom emacs:
|
||||||
#+BEGIN_SRC sh
|
#+BEGIN_SRC sh
|
||||||
git clone https://github.com/doomemacs/doomemacs ~/.emacs.d
|
git clone https://github.com/doomemacs/doomemacs ~/.emacs.d
|
||||||
~/.emacs.d/bin/doom install
|
~/.emacs.d/bin/doom install
|
||||||
@ -239,18 +275,47 @@ dnf copr enable erikreider/SwayNotificationCenter
|
|||||||
dnf install SwayNotificationCenter
|
dnf install SwayNotificationCenter
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** autotiling in sway
|
** autotiling in sway (optional)
|
||||||
|
|
||||||
#+BEGIN_SRC sh
|
#+BEGIN_SRC sh
|
||||||
pip install i3ipc
|
pip install i3ipc
|
||||||
pip install autotiling==1.8
|
pip install autotiling==1.8
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
** sworkstyle (workspace icons) (optional)
|
||||||
|
|
||||||
|
this is disabled by default within sway config, but compatible with waybar and sway
|
||||||
|
|
||||||
|
installing this needs cargo, to install go here: [[*installing cargo]]
|
||||||
|
this also needs [[install icon fonts (Nerd Fonts)]]
|
||||||
|
#+begin_src sh
|
||||||
|
cargo install sworkstyle
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** install icon fonts (Nerd Fonts)
|
||||||
|
for sworkstyle icons in waybar
|
||||||
|
|
||||||
|
#+begin_src sh
|
||||||
|
mkdir ~/.local/share/fonts
|
||||||
|
curl -LOv https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/NerdFontsSymbolsOnly.tar.xz --output-dir /tmp/
|
||||||
|
tar -xvf /tmp/NerdFontsSymbolsOnly.tar.xz -C ~/.local/share/fonts/
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** uxn
|
||||||
|
installing this just for catclock
|
||||||
|
#+begin_src sh
|
||||||
|
cd Downloads/
|
||||||
|
curl -LOv https://rabbits.srht.site/uxn/uxn-essentials-lin64.tar.gz
|
||||||
|
tar xvf uxn-essentials-lin64.tar.gz
|
||||||
|
mv uxn ~/.local/
|
||||||
|
#+end_src
|
||||||
** sc-im (terminal spreadsheet)
|
** sc-im (terminal spreadsheet)
|
||||||
|
|
||||||
|
I'm using this for sc files
|
||||||
|
|
||||||
from https://github.com/andmarti1424/sc-im/wiki/Installing-on-Fedora-27
|
from https://github.com/andmarti1424/sc-im/wiki/Installing-on-Fedora-27
|
||||||
#+BEGIN_SRC sh
|
#+BEGIN_SRC sh
|
||||||
sudo dnf install libzip-devel libxml2-devel ncurses-devel byacc git gcc gnuplot
|
sudo dnf install libzip libzip-devel libxml2-devel ncurses-devel byacc git gcc gnuplot
|
||||||
git clone https://github.com/andmarti1424/sc-im.git
|
git clone https://github.com/andmarti1424/sc-im.git
|
||||||
cd sc-im/src/
|
cd sc-im/src/
|
||||||
make
|
make
|
||||||
@ -287,7 +352,7 @@ pip install termdown
|
|||||||
** go packages
|
** go packages
|
||||||
*** pup
|
*** pup
|
||||||
|
|
||||||
needed for rssadd RSS scanning to work, it's optional if you don't really need it.
|
needed for rssadd RSS scanning to work
|
||||||
|
|
||||||
#+BEGIN_SRC sh
|
#+BEGIN_SRC sh
|
||||||
go install github.com/ericchiang/pup@latest
|
go install github.com/ericchiang/pup@latest
|
||||||
@ -359,9 +424,9 @@ mv Syncplay-*.AppImage ~/.local/bin/syncplay
|
|||||||
** installing cargo
|
** installing cargo
|
||||||
https://doc.rust-lang.org/cargo/getting-started/installation.html
|
https://doc.rust-lang.org/cargo/getting-started/installation.html
|
||||||
|
|
||||||
|
when asked, choose to customize installation, and then choose `no` when it asks to modify PATH variable. (it's already set in ~~/config/shell/profile~)
|
||||||
#+BEGIN_SRC shell
|
#+BEGIN_SRC shell
|
||||||
curl https://sh.rustup.rs -sSf | sh
|
curl https://sh.rustup.rs -sSf | sh
|
||||||
# choose to customize installation, and choose `no` when it asks to modify PATH variable.
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** setting up flatpak
|
** setting up flatpak
|
||||||
@ -404,9 +469,11 @@ flatpak install flathub com.github.johnfactotum.Foliate
|
|||||||
|
|
||||||
- gamescope
|
- gamescope
|
||||||
- mangohud
|
- mangohud
|
||||||
|
- OBS VkCapture tools
|
||||||
|
- OBS VkCapture plugin
|
||||||
|
|
||||||
#+BEGIN_SRC sh
|
#+BEGIN_SRC sh
|
||||||
flatpak install -y com.valvesoftware.Steam.Utility.gamescope com.usebottles.bottles org.freedesktop.Platform.VulkanLayer.MangoHud
|
flatpak install -y com.valvesoftware.Steam.Utility.gamescope com.usebottles.bottles org.freedesktop.Platform.VulkanLayer.MangoHud org.freedesktop.Platform.VulkanLayer.OBSVkCapture obs-studio-plugin-vkcapture com.obsproject.Studio
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** steam
|
*** steam
|
||||||
@ -464,7 +531,82 @@ power_dpm_state: performance
|
|||||||
power_dpm_force_performance_level: high
|
power_dpm_force_performance_level: high
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
|
||||||
* todos
|
* todos
|
||||||
|
** TODO remove Virtual Box
|
||||||
|
** TODO remove autotiling
|
||||||
** TODO write dependencies and programs to separate files
|
** TODO write dependencies and programs to separate files
|
||||||
** add packages
|
** add packages / other
|
||||||
flatpak install --from https://flathub.org/repo/appstream/com.github.babluboy.bookworm.flatpakref
|
*** installing bubblejail (WIP)
|
||||||
|
|
||||||
|
#+begin_src sh
|
||||||
|
git clone https://github.com/igo95862/bubblejail
|
||||||
|
cd bubblejail
|
||||||
|
git checkout tags/0.8.1
|
||||||
|
sudo dnf install scdoc
|
||||||
|
sudo dnf install python3
|
||||||
|
sudo dnf install python3-jinja2
|
||||||
|
sudo dnf install python3-tomli-w
|
||||||
|
sudo dnf install python3-tomli
|
||||||
|
sudo dnf install libseccomp
|
||||||
|
sudo dnf install python3-pyqt6
|
||||||
|
sudo dnf install python3-pyxdg
|
||||||
|
sudo dnf install bubblewrap
|
||||||
|
sudo dnf install xdg-dbus-proxy
|
||||||
|
meson setup build
|
||||||
|
cd build
|
||||||
|
meson compile
|
||||||
|
sudo meson install
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** setting up termux (WIP)
|
||||||
|
|
||||||
|
1. install termux-api and termux-styling from fdroid
|
||||||
|
2. install these packages
|
||||||
|
#+begin_src sh
|
||||||
|
pkg install termux-api fd ripgrep git emacs neovim shellcheck rsync nodejs lf man ffmpeg jq pup recode python-pip clang fontconfig-utils which
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
3. setup storage
|
||||||
|
#+begin_src sh
|
||||||
|
termux-setup-storage
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
3. install doom emacs
|
||||||
|
|
||||||
|
#+BEGIN_SRC sh
|
||||||
|
sudo npm install -g marked
|
||||||
|
git clone https://github.com/doomemacs/doomemacs ~/.emacs.d
|
||||||
|
~/.emacs.d/bin/doom install
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
4. yt-dlp
|
||||||
|
#+begin_src sh
|
||||||
|
pip install yt-dlp
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ryujinx (WIP)
|
||||||
|
sudo sysctl -w vm.max_map_count=524288
|
||||||
|
** setup flatpak env variable for theme
|
||||||
|
|
||||||
|
#+begin_src
|
||||||
|
flatpak install org.gtk.Gtk3theme.Materia-dark
|
||||||
|
flatpak install org.gtk.Gtk3theme.Materia
|
||||||
|
sudo flatpak override --env GTK_THEME=Materia-dark
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
** wlrobs
|
||||||
|
|
||||||
|
#+begin_src sh
|
||||||
|
sudo dnf install wayland-devel obs-studio-devel pkg-config meson
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src sh
|
||||||
|
hg clone https://hg.sr.ht/~scoopta/wlrobs
|
||||||
|
cd wlrobs
|
||||||
|
meson setup build
|
||||||
|
ninja -C build
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
https://github.com/pystardust/ani-cli#tier-1-support-linux-mac-android
|
||||||
|
30
packages.txt
30
packages.txt
@ -26,6 +26,7 @@ tar
|
|||||||
pip
|
pip
|
||||||
npm
|
npm
|
||||||
polkit
|
polkit
|
||||||
|
polkit-gnome
|
||||||
fontawesome-fonts
|
fontawesome-fonts
|
||||||
chafa
|
chafa
|
||||||
bc
|
bc
|
||||||
@ -71,7 +72,6 @@ task-spooler
|
|||||||
htop
|
htop
|
||||||
waybar
|
waybar
|
||||||
dmenu
|
dmenu
|
||||||
sway
|
|
||||||
swaylock
|
swaylock
|
||||||
swaybg
|
swaybg
|
||||||
swayidle
|
swayidle
|
||||||
@ -125,8 +125,6 @@ tmux
|
|||||||
gamescope
|
gamescope
|
||||||
dotnet
|
dotnet
|
||||||
mono-devel
|
mono-devel
|
||||||
VirtualBox
|
|
||||||
virtualbox-guest-additions
|
|
||||||
@virtualization
|
@virtualization
|
||||||
texlive-scheme-full
|
texlive-scheme-full
|
||||||
texlive-dvipng
|
texlive-dvipng
|
||||||
@ -138,3 +136,29 @@ android-tools
|
|||||||
java-1.8.0-openjdk
|
java-1.8.0-openjdk
|
||||||
java-17-openjdk
|
java-17-openjdk
|
||||||
easyeffects
|
easyeffects
|
||||||
|
java-latest-openjdk-devel
|
||||||
|
picard
|
||||||
|
chromaprint-tools
|
||||||
|
rhythmbox
|
||||||
|
python-sphinx
|
||||||
|
wofi
|
||||||
|
nautilus
|
||||||
|
mpg123
|
||||||
|
highlight
|
||||||
|
clang
|
||||||
|
clang-tools-extra
|
||||||
|
sdcv
|
||||||
|
obs-studio-plugin-vkcapture
|
||||||
|
languagetool
|
||||||
|
android-file-transfer
|
||||||
|
ruby-devel
|
||||||
|
zlib-devel
|
||||||
|
"C Development Tools and Libraries"
|
||||||
|
perl-Image-ExifTool
|
||||||
|
zig
|
||||||
|
minisign
|
||||||
|
wlopm
|
||||||
|
urlscan
|
||||||
|
wlr-randr
|
||||||
|
figlet
|
||||||
|
ledger
|
||||||
|
32
termux.txt
Normal file
32
termux.txt
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
neovim
|
||||||
|
shellcheck
|
||||||
|
nodejs before marked
|
||||||
|
lf
|
||||||
|
fd-find > fd
|
||||||
|
termux-setup-storage
|
||||||
|
sync-*
|
||||||
|
.bashrc
|
||||||
|
.termux
|
||||||
|
rsync
|
||||||
|
df -H | grep -o "/storage/....-...."
|
||||||
|
ln -s /storage/... ~/sdcard
|
||||||
|
ln -s ~/storage/shared/notebook .
|
||||||
|
cp -rv ~/git/cho@gitea.bubbletea.dev/dotfiles/home/default/.config/nvim ~/.config
|
||||||
|
fontconfig-utils
|
||||||
|
which
|
||||||
|
sync-* mkdir
|
||||||
|
clang
|
||||||
|
python-pip
|
||||||
|
yt-dlp
|
||||||
|
ln -s ~/storage...-.../media .
|
||||||
|
man
|
||||||
|
ffmpeg
|
||||||
|
cargo install aio-cli
|
||||||
|
jq pup recode
|
||||||
|
install rustup :
|
||||||
|
ln -s termux.txt
|
||||||
|
ln -s housekeeping
|
||||||
|
ln -s ~/storage/shared/scripts .
|
||||||
|
sc-im
|
||||||
|
exiftool
|
||||||
|
ani-cli
|
543
termux/.doom.d/config.el
Normal file
543
termux/.doom.d/config.el
Normal file
@ -0,0 +1,543 @@
|
|||||||
|
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||||
|
;; sync' after modifying this file!
|
||||||
|
|
||||||
|
|
||||||
|
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||||
|
;; clients, file templates and snippets. It is optional.
|
||||||
|
;; (setq user-full-name "John Doe"
|
||||||
|
;; user-mail-address "john@doe.com")
|
||||||
|
|
||||||
|
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
||||||
|
;;
|
||||||
|
;; - `doom-font' -- the primary font to use
|
||||||
|
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
||||||
|
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||||
|
;; presentations or streaming.
|
||||||
|
;; - `doom-symbol-font' -- for symbols
|
||||||
|
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
||||||
|
;;
|
||||||
|
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||||
|
;; accept. For example:
|
||||||
|
;;
|
||||||
|
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
|
||||||
|
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||||
|
;;
|
||||||
|
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||||
|
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||||
|
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||||
|
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||||
|
|
||||||
|
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||||
|
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||||
|
;; `load-theme' function. This is the default:
|
||||||
|
;(setq doom-theme 'doom-one)
|
||||||
|
|
||||||
|
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||||
|
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||||
|
;(setq display-line-numbers-type t)
|
||||||
|
|
||||||
|
;; If you use `org' and don't want your org files in the default location below,
|
||||||
|
;; change `org-directory'. It must be set before org loads!
|
||||||
|
;(setq org-directory "~/org/")
|
||||||
|
|
||||||
|
|
||||||
|
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||||
|
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||||
|
;;
|
||||||
|
;; (after! PACKAGE
|
||||||
|
;; (setq x y))
|
||||||
|
;;
|
||||||
|
;; The exceptions to this rule:
|
||||||
|
;;
|
||||||
|
;; - Setting file/directory variables (like `org-directory')
|
||||||
|
;; - Setting variables which explicitly tell you to set them before their
|
||||||
|
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
||||||
|
;; - Setting doom variables (which start with 'doom-' or '+').
|
||||||
|
;;
|
||||||
|
;; Here are some additional functions/macros that will help you configure Doom.
|
||||||
|
;;
|
||||||
|
;; - `load!' for loading external *.el files relative to this one
|
||||||
|
;; - `use-package!' for configuring packages
|
||||||
|
;; - `after!' for running code after a package has loaded
|
||||||
|
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||||
|
;; this file. Emacs searches the `load-path' when you load packages with
|
||||||
|
;; `require' or `use-package'.
|
||||||
|
;; - `map!' for binding new keys
|
||||||
|
;;
|
||||||
|
;; To get information about any of these functions/macros, move the cursor over
|
||||||
|
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||||
|
;; This will open documentation for it, including demos of how they are used.
|
||||||
|
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
||||||
|
;; etc).
|
||||||
|
;;
|
||||||
|
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||||
|
;; they are implemented.
|
||||||
|
|
||||||
|
(setq browse-url-browser-function 'browse-url-generic
|
||||||
|
browse-url-generic-program "termux-open"
|
||||||
|
alert-default-style 'termux
|
||||||
|
org-pomodoro-audio-player nil) ;; VERY LOUD! DISABLE.
|
||||||
|
(set-default 'truncate-lines nil)
|
||||||
|
|
||||||
|
(after! org-pomodoro
|
||||||
|
(alert-add-rule :category "org-pomodoro"
|
||||||
|
:style (cond (alert-termux-command
|
||||||
|
'termux)
|
||||||
|
(alert-default-style))))
|
||||||
|
|
||||||
|
;; theme
|
||||||
|
|
||||||
|
(setq doom-theme 'doom-tomorrow-night )
|
||||||
|
;(setq doom-theme 'doom-meltbus )
|
||||||
|
;(setq doom-theme 'doom-plain-dark )
|
||||||
|
;(setq doom-theme 'doom-plain )
|
||||||
|
|
||||||
|
(after! org
|
||||||
|
(setq display-line-numbers-type nil
|
||||||
|
org-hide-emphasis-markers t
|
||||||
|
org-pretty-entities t
|
||||||
|
org-ellipsis "…"
|
||||||
|
org-image-actual-width 600))
|
||||||
|
(setq display-line-numbers-type nil)
|
||||||
|
|
||||||
|
(after! org-journal
|
||||||
|
(setq org-journal-dir "~/diary"
|
||||||
|
org-journal-date-prefix "#+TITLE: "
|
||||||
|
org-journal-time-prefix "+ "
|
||||||
|
org-journal-date-format "%a, %Y-%m-%d"
|
||||||
|
org-journal-file-format "%Y-%m-%d.org"))
|
||||||
|
|
||||||
|
(use-package! org-books
|
||||||
|
:defer t
|
||||||
|
:config
|
||||||
|
(setq org-books-file "~/notebook/readinglist.org"))
|
||||||
|
|
||||||
|
(after! org
|
||||||
|
(setq org-log-done 'time
|
||||||
|
org-log-into-drawer t
|
||||||
|
;About the 2 elisp lines below: If you want to send items without explicit
|
||||||
|
;priorities to the bottom of the list you have to set org-default-priority to the
|
||||||
|
;value of org-lowest-priority). I did this to make recognize that: PRIORITY=0 are
|
||||||
|
;items without explicit priorities (not A, B or C, but just TODO)
|
||||||
|
org-lowest-priority ?E
|
||||||
|
org-default-priority ?E)
|
||||||
|
(defun jethro/org-archive-done-tasks ()
|
||||||
|
"Archive all done tasks."
|
||||||
|
(interactive)
|
||||||
|
(org-map-entries 'org-archive-subtree "/DONE" 'file)))
|
||||||
|
|
||||||
|
(setq org-directory "~/notebook/"
|
||||||
|
bookmark-default-file "~/.doom.d/bookmarks")
|
||||||
|
|
||||||
|
(setq org-agenda-files '("~/housekeeping/calendar.org"
|
||||||
|
"~/notebook/ag/habits.org"
|
||||||
|
"~/notebook/ag/todo.org"
|
||||||
|
"~/notebook/ag/projects.org"
|
||||||
|
"~/notebook/ag/refile.org"
|
||||||
|
"~/notebook/ag/pomodoro.org"
|
||||||
|
"~/notebook/ag/events/birthdays.org"
|
||||||
|
"~/notebook/refile.org"
|
||||||
|
))
|
||||||
|
|
||||||
|
(after! org-agenda
|
||||||
|
(setq org-agenda-sticky t)) ; dont kill agendas
|
||||||
|
|
||||||
|
(use-package! org-super-agenda
|
||||||
|
:after org-agenda
|
||||||
|
:init
|
||||||
|
(setq org-agenda-skip-scheduled-if-done t
|
||||||
|
org-agenda-skip-deadline-if-done t
|
||||||
|
org-agenda-include-deadlines t
|
||||||
|
org-agenda-block-separator nil
|
||||||
|
org-agenda-compact-blocks t
|
||||||
|
org-agenda-start-day nil ;; i.e. today
|
||||||
|
org-agenda-span 1
|
||||||
|
org-agenda-start-on-weekday nil)
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("c" "Super view"
|
||||||
|
((agenda "" ((org-agenda-overriding-header "")
|
||||||
|
(org-super-agenda-groups
|
||||||
|
'((:name "Soon"
|
||||||
|
:deadline future
|
||||||
|
:order 3)
|
||||||
|
(:name "Today"
|
||||||
|
:time-grid t
|
||||||
|
:date today
|
||||||
|
:order 2)
|
||||||
|
(:name "Due today"
|
||||||
|
:deadline today
|
||||||
|
:scheduled today
|
||||||
|
:order 2)
|
||||||
|
(:name "Overdue"
|
||||||
|
:deadline past
|
||||||
|
:scheduled past
|
||||||
|
:order 1)))))
|
||||||
|
(alltodo "" ((org-agenda-overriding-header "")
|
||||||
|
(org-super-agenda-groups
|
||||||
|
'(;(:name "Future"
|
||||||
|
; :scheduled future)
|
||||||
|
(:discard (:anything t)))))))))
|
||||||
|
:config
|
||||||
|
(org-super-agenda-mode))
|
||||||
|
|
||||||
|
(setq org-agenda-prefix-format '(
|
||||||
|
(agenda . " %?-12t% s")
|
||||||
|
(todo . " %i %-12:c")
|
||||||
|
(tags . " %i %-12:c")
|
||||||
|
(search . " %i %-12:c")))
|
||||||
|
|
||||||
|
;; hide tags
|
||||||
|
(after! org-agenda
|
||||||
|
(setq org-agenda-hide-tags-regexp
|
||||||
|
(concat org-agenda-hide-tags-regexp "\\|sometag")))
|
||||||
|
|
||||||
|
;; org-pomodoro
|
||||||
|
(setq org-pomodoro-ask-upon-killing t
|
||||||
|
org-pomodoro-keep-killed-pomodoro-time t
|
||||||
|
org-pomodoro-length 25
|
||||||
|
org-pomodoro-manual-break t)
|
||||||
|
|
||||||
|
(defun +org-pomodoro/3-5 ()
|
||||||
|
"Set Pomodoro intervals to 3-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 3)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 3-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/5-5 ()
|
||||||
|
"Set Pomodoro intervals to 5-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 5)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 3-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/10-5 ()
|
||||||
|
"Set Pomodoro intervals to 10-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 10)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 10-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/15-5 ()
|
||||||
|
"Set Pomodoro intervals to 15-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 15)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 15-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/25-5 ()
|
||||||
|
"Set Pomodoro intervals to 25-5"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 25)
|
||||||
|
(setq org-pomodoro-short-break-length 5)
|
||||||
|
(message "Pomodoro set to 25-5" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/30-10 ()
|
||||||
|
"Set Pomodoro intervals to 30-10"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 30)
|
||||||
|
(setq org-pomodoro-short-break-length 10)
|
||||||
|
(message "Pomodoro set to 30-10" (buffer-name)))
|
||||||
|
(defun +org-pomodoro/50-10 ()
|
||||||
|
"Set Pomodoro intervals to 50-10"
|
||||||
|
(interactive)
|
||||||
|
(setq org-pomodoro-length 50)
|
||||||
|
(setq org-pomodoro-short-break-length 10)
|
||||||
|
(message "Pomodoro set to 50-10" (buffer-name)))
|
||||||
|
|
||||||
|
;; eisenhower matrix
|
||||||
|
(after! org-agenda
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("1" "Eisenhower matrix"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=\"A\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Urgent and important"))))
|
||||||
|
nil))
|
||||||
|
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("2" "Eisenhower matrix"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=\"B\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Important but not urgent"))))
|
||||||
|
nil))
|
||||||
|
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("3" "Eisenhower matrix"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=\"C\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Urgent but not important"))))
|
||||||
|
nil))
|
||||||
|
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("4" "Eisenhower matrix"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=0-PRIORITY=\"A\"-PRIORITY=\"B\"-PRIORITY=\"C\"-habits+todo"
|
||||||
|
;"+PRIORITY=0+PRIORITY=\"D\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Neither important nor urgent"))))
|
||||||
|
nil))
|
||||||
|
|
||||||
|
;;; same but using lists
|
||||||
|
(add-to-list 'org-agenda-custom-commands
|
||||||
|
'("x" "Eisenhower Matrix (list)"
|
||||||
|
((tags-todo
|
||||||
|
"+PRIORITY=\"A\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Urgent and important")))
|
||||||
|
(tags-todo
|
||||||
|
"+PRIORITY=\"B\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Important but not urgent")))
|
||||||
|
(tags-todo
|
||||||
|
"+PRIORITY=\"C\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Urgent but not important")))
|
||||||
|
(tags-todo
|
||||||
|
"+PRIORITY=0-PRIORITY=\"A\"-PRIORITY=\"B\"-PRIORITY=\"C\"-habits+todo"
|
||||||
|
((org-agenda-overriding-header "Neither important nor urgent"))))
|
||||||
|
nil)))
|
||||||
|
|
||||||
|
;; eisenhower matrix grid
|
||||||
|
|
||||||
|
(defun +eisenhower-matrix/agenda-1 () (interactive) (org-agenda nil "1"))
|
||||||
|
(defun +eisenhower-matrix/agenda-2 () (interactive) (org-agenda nil "2"))
|
||||||
|
(defun +eisenhower-matrix/agenda-3 () (interactive) (org-agenda nil "3"))
|
||||||
|
(defun +eisenhower-matrix/agenda-4 () (interactive) (org-agenda nil "4"))
|
||||||
|
(defun split-4-ways () (interactive) (delete-other-windows) (split-window-right) (split-window-below) (windmove-right) (split-window-below) (windmove-left))
|
||||||
|
(defun +eisenhower-matrix/redo-all-agenda-buffers ()
|
||||||
|
(interactive)
|
||||||
|
(dolist (buffer (buffer-list))
|
||||||
|
(with-current-buffer buffer
|
||||||
|
(when (derived-mode-p 'org-agenda-mode)
|
||||||
|
(org-agenda-redo t)))))
|
||||||
|
(defun +eisenhower-matrix/make-agendas ()
|
||||||
|
(interactive)
|
||||||
|
(+eisenhower-matrix/agenda-1)
|
||||||
|
(hide-mode-line-mode)
|
||||||
|
(+eisenhower-matrix/agenda-2)
|
||||||
|
(hide-mode-line-mode)
|
||||||
|
(+eisenhower-matrix/agenda-3)
|
||||||
|
(hide-mode-line-mode)
|
||||||
|
(+eisenhower-matrix/agenda-4)
|
||||||
|
(hide-mode-line-mode)
|
||||||
|
)
|
||||||
|
(defun +eisenhower-matrix/make-eisenhower-matrix ()
|
||||||
|
(interactive)
|
||||||
|
(+eisenhower-matrix/make-agendas)
|
||||||
|
(split-4-ways)
|
||||||
|
(switch-to-buffer "*Org Agenda(1)*")
|
||||||
|
(windmove-right)
|
||||||
|
(switch-to-buffer "*Org Agenda(2)*")
|
||||||
|
(windmove-down)
|
||||||
|
(switch-to-buffer "*Org Agenda(4)*")
|
||||||
|
(windmove-left)
|
||||||
|
(switch-to-buffer "*Org Agenda(3)*")
|
||||||
|
)
|
||||||
|
|
||||||
|
;; workspaces
|
||||||
|
;;; Commentary: provides 2 grid workspaces via function;
|
||||||
|
;;; +todo-workspaces/make-todo-workspace
|
||||||
|
;;; +todo-workspaces/make-todo-workspace-min
|
||||||
|
|
||||||
|
(defun +todo-workspaces/agenda1 () (org-agenda nil "a"))
|
||||||
|
(defun +todo-workspaces/agenda2 () (org-agenda nil "x"))
|
||||||
|
(defun +todo-workspaces/make-todo-agendas () (+todo-workspaces/agenda1) (hide-mode-line-mode) (+todo-workspaces/agenda2) (hide-mode-line-mode))
|
||||||
|
(defun +todo-workspaces/split-todo-workspace ()
|
||||||
|
(delete-other-windows)
|
||||||
|
(split-window-below)
|
||||||
|
(windmove-down)
|
||||||
|
(split-window-right)
|
||||||
|
(windmove-up))
|
||||||
|
(defun +todo-workspaces/split-todo-workspace-min ()
|
||||||
|
(delete-other-windows)
|
||||||
|
(split-window-below))
|
||||||
|
(defun +todo-workspaces/redo-all-agenda-buffers ()
|
||||||
|
(interactive)
|
||||||
|
(dolist (buffer (buffer-list))
|
||||||
|
(with-current-buffer buffer
|
||||||
|
(when (derived-mode-p 'org-agenda-mode)
|
||||||
|
(org-agenda-redo t)))))
|
||||||
|
|
||||||
|
(defun +todo-workspaces/make-todo-workspace ()
|
||||||
|
(interactive)
|
||||||
|
;(+todo-workspaces/redo-all-agenda-buffers)
|
||||||
|
(+todo-workspaces/make-todo-agendas)
|
||||||
|
(+todo-workspaces/split-todo-workspace)
|
||||||
|
(switch-to-buffer "*Org Agenda(a)*")
|
||||||
|
(windmove-down)
|
||||||
|
(switch-to-buffer "*Org Agenda(x)*")
|
||||||
|
(windmove-right)
|
||||||
|
(find-file "~/notebook/ag/todo.org"))
|
||||||
|
|
||||||
|
(defun +todo-workspaces/make-todo-workspace-min ()
|
||||||
|
(interactive)
|
||||||
|
;(+todo-workspaces/redo-all-agenda-buffers)
|
||||||
|
(+todo-workspaces/make-todo-agendas)
|
||||||
|
(+todo-workspaces/split-todo-workspace-min)
|
||||||
|
(switch-to-buffer "*Org Agenda(a)*")
|
||||||
|
(windmove-down)
|
||||||
|
(switch-to-buffer "*Org Agenda(x)*"))
|
||||||
|
|
||||||
|
(map! :leader
|
||||||
|
(:prefix-map ("o" . "open")
|
||||||
|
(:prefix-map ("w" . "workspaces")
|
||||||
|
:desc "Eisenhower Matrix" "e" #'+eisenhower-matrix/make-eisenhower-matrix ;; classic eisenhower matrix
|
||||||
|
:desc "Schedule/Eisenhower-list/todo" "t" #'+todo-workspaces/make-todo-workspace
|
||||||
|
:desc "Schedule/Eisenhower-list" "s" #'+todo-workspaces/make-todo-workspace-min)
|
||||||
|
(:prefix ("a" . "org agenda")
|
||||||
|
:desc "Eisenhower Matrix" "e" #'+eisenhower-matrix/make-eisenhower-matrix ;; classic eisenhower matrix
|
||||||
|
:desc "Rebuild All agendas" "r" #'+eisenhower-matrix/redo-all-agenda-buffers
|
||||||
|
(:prefix-map ("w" . "workspaces")
|
||||||
|
:desc "Eisenhower Matrix" "e" #'+eisenhower-matrix/make-eisenhower-matrix ;; classic eisenhower matrix
|
||||||
|
:desc "Schedule/Eisenhower-list/todo" "t" #'+todo-workspaces/make-todo-workspace
|
||||||
|
:desc "Schedule/Eisenhower-list" "s" #'+todo-workspaces/make-todo-workspace-min)
|
||||||
|
)))
|
||||||
|
|
||||||
|
;; org-roam configurations
|
||||||
|
(use-package! org-roam
|
||||||
|
:init
|
||||||
|
:custom
|
||||||
|
(org-roam-directory "~/notebook/roam/" )
|
||||||
|
(org-roam-dailies-capture-templates
|
||||||
|
'(("d" "default" entry "* %<%I:%M %p>: %?"
|
||||||
|
:if-new (file+head "%<%Y-%m-%d>.org" "#+title: %<%Y-%m-%d>\n")))))
|
||||||
|
|
||||||
|
;; looks
|
||||||
|
(cl-defmethod org-roam-node-type ((node org-roam-node))
|
||||||
|
"Return the TYPE of NODE."
|
||||||
|
(condition-case nil
|
||||||
|
(file-name-nondirectory
|
||||||
|
(directory-file-name
|
||||||
|
(file-name-directory
|
||||||
|
(file-relative-name (org-roam-node-file node) org-roam-directory))))
|
||||||
|
(error "")))
|
||||||
|
|
||||||
|
(setq org-roam-node-display-template
|
||||||
|
(concat "${type:15} ${title:30} " (propertize "${tags:10}" 'face 'org-tag)))
|
||||||
|
|
||||||
|
(setq org-roam-capture-templates
|
||||||
|
'(("d" "default" plain "%?"
|
||||||
|
:target (file+head "%<%Y%m%d%H%M%S>-${slug}.org"
|
||||||
|
"#+title: ${title}\n")
|
||||||
|
:unnarrowed t)
|
||||||
|
; main things
|
||||||
|
("l" "literature" plain "%?"
|
||||||
|
:if-new
|
||||||
|
(file+head "literature/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||||
|
:immediate-finish t
|
||||||
|
:unnarrowed t)
|
||||||
|
("p" "permanent" plain "%?"
|
||||||
|
:if-new
|
||||||
|
(file+head "permanent/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||||
|
:immediate-finish t
|
||||||
|
:unnarrowed t)
|
||||||
|
|
||||||
|
; now using inbox.org via org-capture
|
||||||
|
("f" "fleeting" plain "%?"
|
||||||
|
:if-new
|
||||||
|
(file+head "fleeting/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||||
|
:immediate-finish t
|
||||||
|
:unnarrowed t)
|
||||||
|
|
||||||
|
("s" "school" plain "%?"
|
||||||
|
:if-new
|
||||||
|
(file+head "school/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||||
|
:immediate-finish t
|
||||||
|
:unnarrowed t)))
|
||||||
|
|
||||||
|
;; org-capture
|
||||||
|
(after! org
|
||||||
|
|
||||||
|
;; examples: file:~/.emacs.d/modules/lang/org/config.el
|
||||||
|
;; file:~/.emacs.d/modules/lang/org/autoload/org-capture.el
|
||||||
|
|
||||||
|
;; set locations personal and centralized files
|
||||||
|
|
||||||
|
(defvar +org-capture-refile-file "ag/refile.org")
|
||||||
|
(defun +org-capture-refile-file ()
|
||||||
|
(expand-file-name +org-capture-refile-file org-directory))
|
||||||
|
(defvar +org-capture-todo-custom-file "ag/todo.org")
|
||||||
|
(defun +org-capture-todo-custom-file ()
|
||||||
|
(expand-file-name +org-capture-todo-custom-file org-directory))
|
||||||
|
(defvar +org-capture-custom-projects-file "ag/projects.org")
|
||||||
|
(defun +org-capture-custom-central-project-todo-file ()
|
||||||
|
"TODO"
|
||||||
|
(+org--capture-central-file
|
||||||
|
+org-capture-custom-projects-file (projectile-project-name)))
|
||||||
|
(defun +org-capture-custom-central-project-notes-file ()
|
||||||
|
"TODO"
|
||||||
|
(+org--capture-central-file
|
||||||
|
+org-capture-custom-projects-file (projectile-project-name)))
|
||||||
|
(defun +org-capture-custom-central-project-changelog-file ()
|
||||||
|
"TODO"
|
||||||
|
(+org--capture-central-file
|
||||||
|
+org-capture-custom-projects-file (projectile-project-name)))
|
||||||
|
|
||||||
|
;(add-to-list 'org-capture-templates
|
||||||
|
; '(("s" "Slipbox" entry (file "braindump/org/inbox.org")
|
||||||
|
; "* %?\n")
|
||||||
|
; ("t" "Personal todo" entry
|
||||||
|
; (file+headline +org-capture-todo-file "Inbox")
|
||||||
|
; "* [ ] %?\n%i\n%a" :prepend t)
|
||||||
|
; )
|
||||||
|
|
||||||
|
(setq org-capture-templates
|
||||||
|
'(("t" "Personal todo" entry
|
||||||
|
(file+headline +org-capture-todo-custom-file "todo")
|
||||||
|
"* TODO %?\n%i\n%a" :prepend t)
|
||||||
|
("T" "Personal todo (no link)" entry
|
||||||
|
(file+headline +org-capture-todo-custom-file "todo")
|
||||||
|
"* TODO %?\n" :prepend t)
|
||||||
|
|
||||||
|
;;; i never use this
|
||||||
|
;("n" "Personal notes" entry
|
||||||
|
;(file+headline +org-capture-notes-file "Inbox")
|
||||||
|
;"* %u %?\n%i\n%a" :prepend t)
|
||||||
|
("r" "Personal refile file" entry
|
||||||
|
(file +org-capture-refile-file)
|
||||||
|
"* %u %?\n%i\n%a" :prepend t)
|
||||||
|
|
||||||
|
;; using org-journal atm, i will likely never use this
|
||||||
|
;("j" "Journal" entry
|
||||||
|
;(file+olp+datetree +org-capture-journal-file)
|
||||||
|
;"* %U %?\n%i\n%a" :prepend t)
|
||||||
|
|
||||||
|
;; Will use {project-root}/{todo,notes,changelog}.org, unless a
|
||||||
|
;; {todo,notes,changelog}.org file is found in a parent directory.
|
||||||
|
;; Uses the basename from `+org-capture-todo-file',
|
||||||
|
;; `+org-capture-changelog-file' and `+org-capture-notes-file'.
|
||||||
|
("p" "Templates for projects")
|
||||||
|
("pt" "Project-local todo" entry ; {project-root}/todo.org
|
||||||
|
(file+headline +org-capture-project-todo-file "Inbox")
|
||||||
|
"* TODO %?\n%i\n%a" :prepend t)
|
||||||
|
("pn" "Project-local notes" entry ; {project-root}/notes.org
|
||||||
|
(file+headline +org-capture-project-notes-file "Inbox")
|
||||||
|
"* %U %?\n%i\n%a" :prepend t)
|
||||||
|
("pc" "Project-local changelog" entry ; {project-root}/changelog.org
|
||||||
|
(file+headline +org-capture-project-changelog-file "Unreleased")
|
||||||
|
"* %U %?\n%i\n%a" :prepend t)
|
||||||
|
|
||||||
|
;; reference for function: [[file:~/.emacs.d/modules/lang/org/autoload/org-capture.el::defun +org--capture-central-file (file project]]
|
||||||
|
;; Will use {org-directory}/{+org-capture-projects-file} and store
|
||||||
|
;; these under {ProjectName}/{Tasks,Notes,Changelog} headings. They
|
||||||
|
;; support `:parents' to specify what headings to put them under, e.g.
|
||||||
|
;; :parents ("Projects")
|
||||||
|
("o" "Centralized templates for projects")
|
||||||
|
("ot" "Project todo" entry
|
||||||
|
(function +org-capture-custom-central-project-todo-file)
|
||||||
|
"* TODO %?\n %i\n %a"
|
||||||
|
:heading "Tasks"
|
||||||
|
:prepend nil)
|
||||||
|
("on" "Project notes" entry
|
||||||
|
(function +org-capture-custom-central-project-notes-file)
|
||||||
|
"* %U %?\n %i\n %a"
|
||||||
|
:heading "Notes"
|
||||||
|
:prepend t)
|
||||||
|
("oc" "Project changelog" entry
|
||||||
|
(function +org-capture-custom-central-project-changelog-file)
|
||||||
|
"* %U %?\n %i\n %a"
|
||||||
|
:heading "Changelog"
|
||||||
|
:prepend t)
|
||||||
|
|
||||||
|
;; org books / general logging
|
||||||
|
("b" "Book log / General log (org)" item (function org-books-visit-book-log)
|
||||||
|
"- %U %?" :prepend t)
|
||||||
|
|
||||||
|
;; zettelkasten
|
||||||
|
("s" "Slipbox" entry (file "roam/inbox.org")
|
||||||
|
"* %U %?\n")
|
||||||
|
("S" "Slipbox link" entry (file "roam/inbox.org")
|
||||||
|
"* %U %?\n %i\n %a"))))
|
@ -50,7 +50,7 @@
|
|||||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||||
;;window-select ; visually switch windows
|
;;window-select ; visually switch windows
|
||||||
workspaces ; tab emulation, persistence & separate workspaces
|
workspaces ; tab emulation, persistence & separate workspaces
|
||||||
zen ; distraction-free coding or writing
|
;;zen ; distraction-free coding or writing
|
||||||
|
|
||||||
:editor
|
:editor
|
||||||
(evil +everywhere); come to the dark side, we have cookies
|
(evil +everywhere); come to the dark side, we have cookies
|
||||||
@ -74,19 +74,20 @@
|
|||||||
vc ; version-control and Emacs, sitting in a tree
|
vc ; version-control and Emacs, sitting in a tree
|
||||||
|
|
||||||
:term
|
:term
|
||||||
eshell ; the elisp shell that works everywhere
|
;;eshell ; the elisp shell that works everywhere
|
||||||
;;shell ; simple shell REPL for Emacs
|
;;shell ; simple shell REPL for Emacs
|
||||||
;;term ; basic terminal emulator for Emacs
|
;;term ; basic terminal emulator for Emacs
|
||||||
vterm ; the best terminal emulation in Emacs
|
vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
:checkers
|
:checkers
|
||||||
syntax ; tasing you for every semicolon you forget
|
syntax ; tasing you for every semicolon you forget
|
||||||
(spell +flyspell) ; tasing you for misspelling mispelling
|
;;(spell +flyspell) ; tasing you for misspelling mispelling
|
||||||
grammar ; tasing grammar mistake every you make
|
;;grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
:tools
|
:tools
|
||||||
;;ansible
|
;;ansible
|
||||||
;;biblio ; Writes a PhD for you (citation needed)
|
;;biblio ; Writes a PhD for you (citation needed)
|
||||||
|
;;collab ; buffers with friends
|
||||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||||
;;direnv
|
;;direnv
|
||||||
;;docker
|
;;docker
|
||||||
@ -101,7 +102,7 @@
|
|||||||
;;pass ; password manager for nerds
|
;;pass ; password manager for nerds
|
||||||
;;pdf ; pdf enhancements
|
;;pdf ; pdf enhancements
|
||||||
;;prodigy ; FIXME managing external services & code builders
|
;;prodigy ; FIXME managing external services & code builders
|
||||||
rgb ; creating color strings
|
;;rgb ; creating color strings
|
||||||
;;taskrunner ; taskrunner for all your projects
|
;;taskrunner ; taskrunner for all your projects
|
||||||
;;terraform ; infrastructure as code
|
;;terraform ; infrastructure as code
|
||||||
;;tmux ; an API for interacting with tmux
|
;;tmux ; an API for interacting with tmux
|
||||||
@ -110,7 +111,7 @@
|
|||||||
|
|
||||||
:os
|
:os
|
||||||
(:if IS-MAC macos) ; improve compatibility with macOS
|
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||||
;;tty ; improve the terminal Emacs experience
|
tty ; improve the terminal Emacs experience
|
||||||
|
|
||||||
:lang
|
:lang
|
||||||
;;agda ; types of types of types of types...
|
;;agda ; types of types of types of types...
|
||||||
@ -142,12 +143,13 @@
|
|||||||
;;idris ; a language you can depend on
|
;;idris ; a language you can depend on
|
||||||
;;json ; At least it ain't XML
|
;;json ; At least it ain't XML
|
||||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||||
|
java
|
||||||
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||||
;;julia ; a better, faster MATLAB
|
;;julia ; a better, faster MATLAB
|
||||||
;;kotlin ; a better, slicker Java(Script)
|
;;kotlin ; a better, slicker Java(Script)
|
||||||
;;latex ; writing papers in Emacs has never been so fun
|
;;latex ; writing papers in Emacs has never been so fun
|
||||||
;;lean ; for folks with too much to prove
|
;;lean ; for folks with too much to prove
|
||||||
;;ledger ; be audit you can be
|
ledger ; be audit you can be
|
||||||
;;lua ; one-based indices? one-based indices
|
;;lua ; one-based indices? one-based indices
|
||||||
markdown ; writing docs for people to ignore
|
markdown ; writing docs for people to ignore
|
||||||
;;nim ; python + lisp at the speed of c
|
;;nim ; python + lisp at the speed of c
|
||||||
@ -157,6 +159,8 @@
|
|||||||
+journal
|
+journal
|
||||||
+habit
|
+habit
|
||||||
+roam2
|
+roam2
|
||||||
|
;+dragndrop
|
||||||
|
+pomodoro
|
||||||
) ; organize your plain life in plain text
|
) ; organize your plain life in plain text
|
||||||
;;php ; perl's insecure younger brother
|
;;php ; perl's insecure younger brother
|
||||||
;;plantuml ; diagrams for confusing people more
|
;;plantuml ; diagrams for confusing people more
|
||||||
@ -169,6 +173,7 @@
|
|||||||
;;rst ; ReST in peace
|
;;rst ; ReST in peace
|
||||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||||
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||||
|
rust
|
||||||
;;scala ; java, but good
|
;;scala ; java, but good
|
||||||
;;(scheme +guile) ; a fully conniving family of lisps
|
;;(scheme +guile) ; a fully conniving family of lisps
|
||||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
sh ; she sells {ba,z,fi}sh shells on the C xor
|
54
termux/.doom.d/packages.el
Normal file
54
termux/.doom.d/packages.el
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
;; -*- no-byte-compile: t; -*-
|
||||||
|
;;; $DOOMDIR/packages.el
|
||||||
|
|
||||||
|
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||||
|
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||||
|
;; use 'M-x doom/reload'.
|
||||||
|
|
||||||
|
|
||||||
|
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||||
|
;; (package! some-package)
|
||||||
|
|
||||||
|
;; To install a package directly from a remote git repo, you must specify a
|
||||||
|
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||||
|
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||||
|
;; (package! another-package
|
||||||
|
;; :recipe (:host github :repo "username/repo"))
|
||||||
|
|
||||||
|
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||||
|
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||||
|
;; `:files' in the `:recipe':
|
||||||
|
;; (package! this-package
|
||||||
|
;; :recipe (:host github :repo "username/repo"
|
||||||
|
;; :files ("some-file.el" "src/lisp/*.el")))
|
||||||
|
|
||||||
|
;; If you'd like to disable a package included with Doom, you can do so here
|
||||||
|
;; with the `:disable' property:
|
||||||
|
;; (package! builtin-package :disable t)
|
||||||
|
|
||||||
|
;; You can override the recipe of a built in package without having to specify
|
||||||
|
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||||
|
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||||
|
;; (package! builtin-package :recipe (:nonrecursive t))
|
||||||
|
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||||
|
|
||||||
|
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||||
|
;; This is required for some packages whose default branch isn't 'master' (which
|
||||||
|
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||||
|
;; (package! builtin-package :recipe (:branch "develop"))
|
||||||
|
|
||||||
|
;; Use `:pin' to specify a particular commit to install.
|
||||||
|
;; (package! builtin-package :pin "1a2b3c4d5e")
|
||||||
|
|
||||||
|
|
||||||
|
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||||
|
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||||
|
;; (unpin! pinned-package)
|
||||||
|
;; ...or multiple packages
|
||||||
|
;; (unpin! pinned-package another-pinned-package)
|
||||||
|
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||||
|
;; (unpin! t)
|
||||||
|
|
||||||
|
|
||||||
|
(package! org-books)
|
||||||
|
(package! org-super-agenda)
|
Reference in New Issue
Block a user