Compare commits
22 Commits
workstatio
...
dab8e342aa
| Author | SHA1 | Date | |
|---|---|---|---|
| dab8e342aa | |||
| 897490b10b | |||
| cb2490baae | |||
| 7c9c25f09d | |||
| 064d6f6a3b | |||
| 64d731775f | |||
| 943ad74f4a | |||
| 2f4b1b8fed | |||
| a4484f61e7 | |||
| 11deb87570 | |||
| fe4cf2905a | |||
| ebf47c763d | |||
| 1c284fc34b | |||
| 8bfb4d86bf | |||
| ba5e462587 | |||
| 304d81bf4b | |||
| d1f2ecbc14 | |||
| 23d686908d | |||
| e9c0ca90a6 | |||
| 24737b5d6e | |||
| 53917e3ddb | |||
| 753ef8d1e6 |
12
.bash_env
12
.bash_env
@@ -5,18 +5,15 @@ export MOZ_ENABLE_WAYLAND=1
|
||||
export XDG_CONFIG_HOME=~/.config
|
||||
export XDG_CACHE_HOME=~/.cache
|
||||
export XDG_DATA_HOME=~/.local/share
|
||||
export BROWSER=/usr/bin/brave-browser
|
||||
export VISUAL=nvim
|
||||
export EDITOR=nvim
|
||||
export BROWSER=/usr/bin/firefox
|
||||
export VISUAL=emacsclient
|
||||
export EDITOR=emacsclient
|
||||
export QT_QPA_PLATFORMTHEME=qt5ct
|
||||
export DESKTOP_SESSION=sway
|
||||
export GOPATH="$HOME"/go
|
||||
|
||||
# Scripts Path
|
||||
PATH=$PATH:~/.local/bin
|
||||
PATH=$PATH:~/bin
|
||||
PATH=$PATH:/usr/local/go/bin
|
||||
PATH=$PATH:$HOME/go/bin
|
||||
|
||||
# Doom Path
|
||||
PATH=$PATH:~/.config/emacs/bin/
|
||||
@@ -24,3 +21,6 @@ PATH=$PATH:~/.config/emacs/bin/
|
||||
# Flatpak path
|
||||
PATH=$PATH:/var/lib/flatpak/exports/bin
|
||||
PATH=$PATH:/var/lib/flatpak/app
|
||||
|
||||
# Guile Load Path
|
||||
export GUILE_LOAD_PATH="/usr/local/share/guile/site/3.0"
|
||||
|
||||
@@ -4,4 +4,4 @@ if [ -f ~/.bash_env ]; then
|
||||
. "$HOME"/.bash_env
|
||||
fi
|
||||
|
||||
[ "$(tty)" = "/dev/tty1" ] && exec sway
|
||||
# [ "$(tty)" = "/dev/tty1" ] && exec sway
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import = ["/home/opal/.config/alacritty/theme.toml"]
|
||||
import = ["/home/opal/.config/alacritty/gruvbox-light.toml"]
|
||||
|
||||
[env]
|
||||
TERM = "alacritty"
|
||||
|
||||
[font]
|
||||
size = 18
|
||||
size = 22
|
||||
|
||||
[font.normal]
|
||||
family = "Terminus"
|
||||
@@ -16,3 +16,4 @@ y = 0
|
||||
|
||||
[window]
|
||||
opacity = 0.9
|
||||
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
# Dracula theme for Alacritty
|
||||
# https://draculatheme.com/alacritty
|
||||
#
|
||||
# Color palette
|
||||
# https://spec.draculatheme.com
|
||||
#
|
||||
# Template
|
||||
# https://github.com/alacritty/alacritty/blob/master/alacritty.yml
|
||||
|
||||
colors:
|
||||
primary:
|
||||
background: "#282a36"
|
||||
foreground: "#f8f8f2"
|
||||
bright_foreground: "#ffffff"
|
||||
cursor:
|
||||
text: CellBackground
|
||||
cursor: CellForeground
|
||||
vi_mode_cursor:
|
||||
text: CellBackground
|
||||
cursor: CellForeground
|
||||
search:
|
||||
matches:
|
||||
foreground: "#44475a"
|
||||
background: "#50fa7b"
|
||||
focused_match:
|
||||
foreground: "#44475a"
|
||||
background: "#ffb86c"
|
||||
footer_bar:
|
||||
background: "#282a36"
|
||||
foreground: "#f8f8f2"
|
||||
hints:
|
||||
start:
|
||||
foreground: "#282a36"
|
||||
background: "#f1fa8c"
|
||||
end:
|
||||
foreground: "#f1fa8c"
|
||||
background: "#282a36"
|
||||
line_indicator:
|
||||
foreground: None
|
||||
background: None
|
||||
selection:
|
||||
text: CellForeground
|
||||
background: "#44475a"
|
||||
normal:
|
||||
black: "#21222c"
|
||||
red: "#ff5555"
|
||||
green: "#50fa7b"
|
||||
yellow: "#f1fa8c"
|
||||
blue: "#bd93f9"
|
||||
magenta: "#ff79c6"
|
||||
cyan: "#8be9fd"
|
||||
white: "#f8f8f2"
|
||||
bright:
|
||||
black: "#6272a4"
|
||||
red: "#ff6e6e"
|
||||
green: "#69ff94"
|
||||
yellow: "#ffffa5"
|
||||
blue: "#d6acff"
|
||||
magenta: "#ff92df"
|
||||
cyan: "#a4ffff"
|
||||
white: "#ffffff"
|
||||
30
.config/alacritty/gruvbox-light.toml
Normal file
30
.config/alacritty/gruvbox-light.toml
Normal file
@@ -0,0 +1,30 @@
|
||||
# Colors (Gruvbox light)
|
||||
|
||||
# Default colors
|
||||
[colors.primary]
|
||||
# hard contrast background = = '#f9f5d7'
|
||||
background = '#E8D8B0'
|
||||
# soft contrast background = = '#f2e5bc'
|
||||
foreground = '#3c3836'
|
||||
|
||||
# Normal colors
|
||||
[colors.normal]
|
||||
black = '#fbf1c7'
|
||||
red = '#cc241d'
|
||||
green = '#98971a'
|
||||
yellow = '#d79921'
|
||||
blue = '#458588'
|
||||
magenta = '#b16286'
|
||||
cyan = '#689d6a'
|
||||
white = '#7c6f64'
|
||||
|
||||
# Bright colors
|
||||
[colors.bright]
|
||||
black = '#928374'
|
||||
red = '#9d0006'
|
||||
green = '#79740e'
|
||||
yellow = '#b57614'
|
||||
blue = '#076678'
|
||||
magenta = '#8f3f71'
|
||||
cyan = '#427b58'
|
||||
white = '#3c3836'
|
||||
@@ -1,30 +0,0 @@
|
||||
# Colors (Gruvbox dark)
|
||||
|
||||
# Default colors
|
||||
[colors.primary]
|
||||
# hard contrast background = = '#1d2021'
|
||||
background = '#282828'
|
||||
# soft contrast background = = '#32302f'
|
||||
foreground = '#ebdbb2'
|
||||
|
||||
# Normal colors
|
||||
[colors.normal]
|
||||
black = '#282828'
|
||||
red = '#cc241d'
|
||||
green = '#98971a'
|
||||
yellow = '#d79921'
|
||||
blue = '#458588'
|
||||
magenta = '#b16286'
|
||||
cyan = '#689d6a'
|
||||
white = '#a89984'
|
||||
|
||||
# Bright colors
|
||||
[colors.bright]
|
||||
black = '#928374'
|
||||
red = '#fb4934'
|
||||
green = '#b8bb26'
|
||||
yellow = '#fabd2f'
|
||||
blue = '#83a598'
|
||||
magenta = '#d3869b'
|
||||
cyan = '#8ec07c'
|
||||
white = '#ebdbb2'
|
||||
@@ -1,60 +0,0 @@
|
||||
[colors.bright]
|
||||
black = "#1c1f24"
|
||||
blue = "#dbc077"
|
||||
cyan = "#dbc077"
|
||||
green = "#7cb518"
|
||||
magenta = "#d72638"
|
||||
red = "#ff7000"
|
||||
white = "#dfdfdf"
|
||||
yellow = "#ffbf00"
|
||||
|
||||
[colors.cursor]
|
||||
cursor = "CellForeground"
|
||||
text = "CellBackground"
|
||||
|
||||
[colors.footer_bar]
|
||||
background = "#1c1408"
|
||||
foreground = "#7cb518"
|
||||
|
||||
[colors.hints.end]
|
||||
background = "#1c1408"
|
||||
foreground = "#ffbf00"
|
||||
|
||||
[colors.hints.start]
|
||||
background = "#ffbf00"
|
||||
foreground = "#1c1408"
|
||||
|
||||
[colors.line_indicator]
|
||||
background = "None"
|
||||
foreground = "None"
|
||||
|
||||
[colors.normal]
|
||||
black = "#1B2229"
|
||||
blue = "#dbc077"
|
||||
cyan = "#dbc077"
|
||||
green = "#7cb518"
|
||||
magenta = "#d72638"
|
||||
red = "#ff4e00"
|
||||
white = "#dfdfdf"
|
||||
yellow = "#ffbf00"
|
||||
|
||||
[colors.primary]
|
||||
background = "#1c1408"
|
||||
bright_foreground = "#dfdfdf"
|
||||
foreground = "#7cb518"
|
||||
|
||||
[colors.search.focused_match]
|
||||
background = "#ffbf00"
|
||||
foreground = "#3f444a"
|
||||
|
||||
[colors.search.matches]
|
||||
background = "#7cb518"
|
||||
foreground = "#3f444a"
|
||||
|
||||
[colors.selection]
|
||||
background = "#3f444a"
|
||||
text = "CellForeground"
|
||||
|
||||
[colors.vi_mode_cursor]
|
||||
cursor = "CellForeground"
|
||||
text = "CellBackground"
|
||||
@@ -1,52 +0,0 @@
|
||||
colors:
|
||||
primary:
|
||||
background: "#1c1408" # -bg
|
||||
foreground: "#7cb518" # green, adjusted for better visibility
|
||||
bright_foreground: "#dfdfdf" # base8
|
||||
cursor:
|
||||
text: CellBackground
|
||||
cursor: CellForeground
|
||||
vi_mode_cursor:
|
||||
text: CellBackground
|
||||
cursor: CellForeground
|
||||
search:
|
||||
matches:
|
||||
foreground: "#3f444a" # base4
|
||||
background: "#7cb518" # green
|
||||
focused_match:
|
||||
foreground: "#3f444a" # base4
|
||||
background: "#ffbf00" # yellow
|
||||
footer_bar:
|
||||
background: "#1c1408" # -bg
|
||||
foreground: "#7cb518" # green
|
||||
hints:
|
||||
start:
|
||||
foreground: "#1c1408" # -bg
|
||||
background: "#ffbf00" # yellow
|
||||
end:
|
||||
foreground: "#ffbf00" # yellow
|
||||
background: "#1c1408" # -bg
|
||||
line_indicator:
|
||||
foreground: None
|
||||
background: None
|
||||
selection:
|
||||
text: CellForeground
|
||||
background: "#3f444a" # base4
|
||||
normal:
|
||||
black: "#1B2229" # base0
|
||||
red: "#ff4e00" # red
|
||||
green: "#7cb518" # green
|
||||
yellow: "#ffbf00" # yellow
|
||||
blue: "#dbc077" # teal, lightened umber
|
||||
magenta: "#d72638" # magenta
|
||||
cyan: "#dbc077" # teal (sand/beige)
|
||||
white: "#dfdfdf" # base8
|
||||
bright:
|
||||
black: "#1c1f24" # base1
|
||||
red: "#ff7000" # orange
|
||||
green: "#7cb518" # green
|
||||
yellow: "#ffbf00" # yellow
|
||||
blue: "#dbc077" # teal, lightened umber
|
||||
magenta: "#d72638" # magenta
|
||||
cyan: "#dbc077" # teal (sand/beige)
|
||||
white: "#dfdfdf" # base8
|
||||
@@ -1,30 +1,35 @@
|
||||
(setq fancy-splash-image "~/.config/doom/splash.png")
|
||||
;;(setq fancy-splash-image "~/.config/doom/splash.png")
|
||||
|
||||
;; Clean up starting screen
|
||||
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-shortmenu)
|
||||
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-banner)
|
||||
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-footer)
|
||||
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-loaded)
|
||||
(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))
|
||||
|
||||
;; Set name & e-mail
|
||||
(setq user-full-name "opal"
|
||||
user-mail-address "ry.orlando@proton.me")
|
||||
|
||||
;; (setq doom-theme 'doom-dracula)
|
||||
(load-theme 'doom-gruvbox t)
|
||||
;;(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
|
||||
;; Theme & background color
|
||||
(load-theme 'ef-eagle t)
|
||||
(set-face-background 'default "#E8D8B0")
|
||||
|
||||
;; Lockfiles
|
||||
(setq create-lockfiles nil)
|
||||
|
||||
;; Remove line numbers from specific modes
|
||||
(dolist (mode '(org-mode-hook
|
||||
term-mode-hook
|
||||
shell-mode-hook
|
||||
eshell-mode-hook))
|
||||
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
||||
|
||||
(setq browse-url-browser-function 'browse-url-generic
|
||||
browse-url-generic-program "qutebrowser")
|
||||
|
||||
(set-face-attribute 'default nil :font "Terminus" :height 130 :weight 'regular)
|
||||
(set-face-attribute 'fixed-pitch nil :font "Terminus" :height 1.0 :weight 'regular)
|
||||
(set-face-attribute 'variable-pitch nil :font "Terminus" :height 1.0 :weight 'bold)
|
||||
;; Font configuration
|
||||
(set-face-attribute 'default nil :font "Terminus" :height 200)
|
||||
(set-face-attribute 'fixed-pitch nil :font "Terminus" :height 200)
|
||||
(set-face-attribute 'variable-pitch nil :font "ETBembo" :height 200)
|
||||
|
||||
(defun opal/org-font-setup ()
|
||||
;; Replace list hyphen with dot
|
||||
@@ -42,26 +47,36 @@
|
||||
(org-level-6 . 1.1)
|
||||
(org-level-7 . 1.1)
|
||||
(org-level-8 . 1.1)))
|
||||
(set-face-attribute (car face) nil :font "Terminus" :weight 'regular :height (cdr face)))
|
||||
(set-face-attribute (car face) nil :font "ETBembo" :weight 'regular :height (cdr face)))
|
||||
|
||||
;; Ensure that anything that should be fixed-pitch in Org files appears that way
|
||||
(set-face-attribute 'org-block nil :foreground nil :inherit 'fixed-pitch)
|
||||
(set-face-attribute 'org-table nil :inherit 'fixed-pitch)
|
||||
(set-face-attribute 'org-formula nil :inherit 'fixed-pitch)
|
||||
(set-face-attribute 'org-code nil :inherit '(shadow fixed-pitch))
|
||||
(set-face-attribute 'org-table nil :inherit '(shadow fixed-pitch))
|
||||
(set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch))
|
||||
(set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch))
|
||||
(set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch))
|
||||
(set-face-attribute 'org-checkbox nil :inherit 'fixed-pitch)
|
||||
(set-face-attribute 'line-number nil :inherit 'fixed-pitch)
|
||||
(set-face-attribute 'line-number-current-line nil :inherit 'fixed-pitch))
|
||||
;; Set properties and scheduling faces to inherit variable-pitch and be smaller
|
||||
;; Comment out these lines because mixed-pitch-mode will handle these.
|
||||
(set-face-attribute 'org-property-value nil :inherit 'variable-pitch :height 150)
|
||||
(set-face-attribute 'org-special-keyword nil :inherit 'variable-pitch :height 150)
|
||||
(set-face-attribute 'org-scheduled-today nil :inherit 'variable-pitch :height 150)
|
||||
(set-face-attribute 'org-drawer nil :inherit 'variable-pitch :height 150)
|
||||
(set-face-attribute 'org-date nil :inherit 'variable-pitch :height 150)
|
||||
|
||||
;; Ensure that all agenda items use fixed-pitch font
|
||||
(custom-set-faces
|
||||
'(org-agenda-date-today ((t (:inherit fixed-pitch :weight bold))))
|
||||
'(org-agenda-date ((t (:inherit fixed-pitch))))
|
||||
'(org-agenda-date-weekend ((t (:inherit fixed-pitch :weight bold))))
|
||||
'(org-agenda-done ((t (:inherit fixed-pitch :strike-through t))))
|
||||
'(org-agenda-dimmed-todo-face ((t (:inherit fixed-pitch))))
|
||||
'(org-agenda-structure ((t (:inherit fixed-pitch))))
|
||||
'(org-scheduled ((t (:inherit fixed-pitch))))
|
||||
'(org-scheduled-today ((t (:inherit fixed-pitch))))
|
||||
'(org-scheduled-previously ((t (:inherit fixed-pitch))))
|
||||
'(org-upcoming-deadline ((t (:inherit fixed-pitch))))
|
||||
'(org-deadline-announce ((t (:inherit fixed-pitch))))
|
||||
'(org-time-grid ((t (:inherit fixed-pitch)))))
|
||||
)
|
||||
|
||||
(defun opal/org-mode-setup ()
|
||||
(org-indent-mode)
|
||||
(variable-pitch-mode 1)
|
||||
(visual-line-mode 1))
|
||||
(visual-line-mode 1)
|
||||
(mixed-pitch-mode 1))
|
||||
|
||||
(use-package org
|
||||
:commands (org-capture org-agenda)
|
||||
@@ -72,8 +87,10 @@
|
||||
(setq org-log-done 'time)
|
||||
(setq org-log-into-drawer t)
|
||||
(setq org-startup-folded t)
|
||||
(setq org-indent-indentation-per-level 2)
|
||||
(setq org-hide-emphasis-markers t)
|
||||
(setq org-agenda-files
|
||||
'("~/work/work.org"))
|
||||
'("~/documents/org/agenda/todo.org"))
|
||||
|
||||
(require 'org-habit)
|
||||
(add-to-list 'org-modules 'org-habit)
|
||||
@@ -81,7 +98,7 @@
|
||||
|
||||
(setq org-todo-keywords
|
||||
'((sequence "NEXT(n)" "TODO(t)" "|" "DONE(d!)")
|
||||
(sequence "ACTIVE(a)" "PROJ(p)" "READY(r)" "WAIT(w@/!)" "HOLD(h)" "BACKLOG(b)" "DOC(u)" "|" "COMPLETED(c)" "CANC(k@)")))
|
||||
(sequence "ACTIVE(a)" "PROJ(p)" "READY(r)" "HOLD(h)" "BACKLOG(b)" "WORKOUT(w)" "|" "CANC(k@)")))
|
||||
|
||||
(setq org-todo-keyword-faces
|
||||
'(("NEXT" . "red") ("TODO" . "orange") ("WAIT" . "yellow") ("DONE" . "green")))
|
||||
@@ -95,39 +112,48 @@
|
||||
|
||||
(add-hook 'org-mode-hook #'org-make-toc-mode)
|
||||
|
||||
;; Configure custom agenda views
|
||||
(setq org-agenda-custom-commands
|
||||
'(("d" "Dashboard"
|
||||
((agenda "" ((org-deadline-warning-days 7)))
|
||||
(todo "NEXT"
|
||||
((org-agenda-overriding-header "Next Tasks")))
|
||||
(tags-todo "agenda/ACTIVE" ((org-agenda-overriding-header "Active Projects")))))
|
||||
|
||||
("n" "Next Tasks"
|
||||
((todo "NEXT"
|
||||
((org-agenda-overriding-header "Next Tasks")))))
|
||||
|
||||
;; Low-effort next actions
|
||||
("e" tags-todo "+TODO=\"NEXT\"+Effort<15&+Effort>0"
|
||||
((org-agenda-overriding-header "Low Effort Tasks")
|
||||
(org-agenda-max-todos 20)
|
||||
(org-agenda-files org-agenda-files)))))
|
||||
'(("d" "Custom Dashboard"
|
||||
;; NEXT items for today
|
||||
((tags "+TODO=\"NEXT\"+SCHEDULED=\"<+0d>\"|+DEADLINE=\"<+0d>\""
|
||||
((org-agenda-overriding-header "\nNEXT Items for Today\n"))) ; Show NEXT items scheduled or due today
|
||||
;; TODO items for today
|
||||
(tags "+TODO=\"TODO\"+SCHEDULED=\"<+0d>\"|+DEADLINE=\"<+0d>\""
|
||||
((org-agenda-overriding-header "\nTODO Items for Today\n"))) ; Show TODO items scheduled or due today
|
||||
;; WORKOUT items for today
|
||||
(tags "+TODO=\"WORKOUT\"+SCHEDULED=\"<+0d>\""
|
||||
((org-agenda-overriding-header "\nToday's Workout\n"))) ; Show WORKOUT scheduled for today
|
||||
;; DONE items for today
|
||||
(tags "+TODO=\"DONE\"+CLOSED>=\"<-3d>\""
|
||||
((org-agenda-overriding-header "\nDone Items for Today\n"))) ; Show DONE items closed today
|
||||
;; Agenda for today
|
||||
(agenda ""
|
||||
((org-agenda-span 1) ; Show only today
|
||||
(org-agenda-start-day "0d") ; Start from today
|
||||
(org-agenda-show-all-dates t) ; Ensure all dates are shown
|
||||
(org-agenda-overriding-header "\nAgenda (Today)\n")))
|
||||
;; Agenda for next 3 days (no time grid)
|
||||
(agenda ""
|
||||
((org-agenda-span 3) ; Show the next 3 days
|
||||
(org-agenda-start-day "+1d") ; Start from tomorrow
|
||||
(org-agenda-overriding-header "\nAgenda (Next 3 Days)\n")
|
||||
(org-agenda-time-grid nil))))))) ; Remove time grid
|
||||
|
||||
;; Create capture templates
|
||||
(setq org-capture-templates
|
||||
`(("t" "Tasks")
|
||||
("tt" "Task" entry (file+olp "~/work/work.org" "Inbox")
|
||||
"* TODO %?\n %U\n %a\n %i" :empty-lines 1)))
|
||||
("tw" "Work Task" entry (file+headline "~/documents/org/agenda/todo.org" "Work")
|
||||
"* TODO %?\n %U\n %i" :empty-lines 1)
|
||||
("tp" "Personal Task" entry (file+headline "~/documents/org/agenda/todo.org" "Personal")
|
||||
"* TODO %?\n %U\n %i" :empty-lines 1)
|
||||
("tb" "Backlog Task" entry (file+headline "~/documents/org/agenda/todo.org" "Backlog")
|
||||
"* BACKLOG %?\n %U\n %i" :empty-lines 1)))
|
||||
|
||||
;; Tell Org to stop indenting inside of org source blocks.
|
||||
(setq org-edit-src-content-indentation 0)
|
||||
|
||||
;; Set org agenda dir
|
||||
(setq org-directory "~/org/")
|
||||
|
||||
;; Open links in browser
|
||||
(setq browse-url-browser-function 'browse-url-generic
|
||||
browse-url-generic-program "firefox")
|
||||
(setq org-directory "~/documents/org/")
|
||||
|
||||
;; Init org font setup
|
||||
(opal/org-font-setup))
|
||||
@@ -153,8 +179,7 @@
|
||||
'((emacs-lisp . t)
|
||||
(lisp . t)
|
||||
(python . t)
|
||||
(sql . t)
|
||||
(clojure . t)))
|
||||
(sql . t)))
|
||||
|
||||
(push '("conf-unix" . conf-unix) org-src-lang-modes))
|
||||
|
||||
@@ -164,12 +189,97 @@
|
||||
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
|
||||
(add-to-list 'org-structure-template-alist '("cl" . "src lisp"))
|
||||
(add-to-list 'org-structure-template-alist '("sql" . "src sql"))
|
||||
(add-to-list 'org-structure-template-alist '("py" . "src python"))
|
||||
(add-to-list 'org-structure-template-alist '("clj" . "src clojure")))
|
||||
(add-to-list 'org-structure-template-alist '("py" . "src python")))
|
||||
|
||||
(setq rmh-elfeed-org-files (list "~/sync/elfeed/feeds.org"))
|
||||
(add-hook! 'elfeed-search-mode-hook 'elfeed-update)
|
||||
(after! elfeed
|
||||
(setq elfeed-search-filter "@1-month-ago +unread"))
|
||||
;; Programming
|
||||
(setq geiser-guile-binary "/usr/bin/guile3.0")
|
||||
|
||||
;; Playing youtube videos via mpv/yt-dlp/emms
|
||||
(defun opal/play-yt-url-at-point ()
|
||||
"Play YT link under point with EMMS/MPV/yt-dlp."
|
||||
(interactive)
|
||||
(let ((url (thing-at-point 'url t)))
|
||||
(if url
|
||||
(emms-play-url url)
|
||||
(message "No URL found at point."))))
|
||||
|
||||
(global-set-key (kbd "C-c y") 'opal/play-yt-url-at-point)
|
||||
|
||||
;; Elfeed
|
||||
(defun opal/elfeed-open-in-firefox ()
|
||||
"Open the current Elfeed entry link in Firefox."
|
||||
(interactive)
|
||||
(let ((link (elfeed-entry-link (elfeed-search-selected :single))))
|
||||
(if link
|
||||
(browse-url-firefox link)
|
||||
(message "No link to open."))))
|
||||
|
||||
(defun opal/elfeed-mark-all-read ()
|
||||
"Marks all feeds in *elfeed-search* as read."
|
||||
(interactive)
|
||||
(elfeed-untag elfeed-search-entries 'unread)
|
||||
(elfeed-search-update :force)) ; redraw
|
||||
|
||||
(use-package elfeed
|
||||
:bind
|
||||
(("C-c e" . elfeed))
|
||||
:config
|
||||
;; Ensure faces are set after elfeed has loaded
|
||||
(with-eval-after-load 'elfeed
|
||||
(set-face-attribute 'elfeed-search-filter-face nil :inherit 'variable-pitch :height 200)
|
||||
;; Monospace fonts are necessary for text/column alignment in the *elfeed-search* buffer
|
||||
(set-face-attribute 'elfeed-search-title-face nil :inherit 'fixed-pitch :height 200)
|
||||
(set-face-attribute 'elfeed-search-feed-face nil :inherit 'fixed-pitch :height 200))
|
||||
|
||||
;; Set variable-pitch face for article fonts in the *elfeed-entry* buffer
|
||||
(add-hook 'elfeed-show-mode-hook
|
||||
(lambda () (buffer-face-set 'variable-pitch)))
|
||||
|
||||
;; Set default search filter
|
||||
(setq elfeed-search-filter "@2-weeks-ago +unread")
|
||||
|
||||
;; Update feeds automatically when entering Elfeed search mode
|
||||
(add-hook 'elfeed-search-mode-hook 'elfeed-update)
|
||||
|
||||
;; Evil keybindings for Elfeed
|
||||
(evil-define-key 'normal elfeed-search-mode-map
|
||||
"o" 'opal/elfeed-open-in-firefox ;; Open link in Firefox
|
||||
"r" 'opal/elfeed-mark-all-read ;; Marks all feeds as read
|
||||
"gr" 'elfeed-update ;; Refresh feeds
|
||||
"q" 'quit-window)) ;; Quit Elfeed
|
||||
|
||||
|
||||
;; eww
|
||||
(defun opal/eww-reddit-redirect(url)
|
||||
"Redirect reddit.com to custom URL."
|
||||
(replace-regexp-in-string "https://www.reddit.com" reddit-proxy url))
|
||||
|
||||
(use-package eww
|
||||
:config
|
||||
(setq browse-url-browser-function 'eww-browse-url)
|
||||
|
||||
;; Set eww webpage title in the modeline bar instead of just *eww*
|
||||
(setq eww-auto-rename-buffer 'title)
|
||||
|
||||
;; Set privacy respecting proxies
|
||||
(setq reddit-proxy "https://eddrit.com")
|
||||
|
||||
;; Redirect reddit links to privacy respecting frontends.
|
||||
(setq eww-url-transformers '(eww-remove-tracking opal/eww-reddit-redirect))
|
||||
|
||||
;; Make sure eww opens in it's own buffer
|
||||
(after! eww
|
||||
(set-popup-rule! "^\\*eww\\*" :ignore t)))
|
||||
|
||||
;; Since I sometimes write notes in two languages, guess-language will allow for multiple language
|
||||
;; spelling checks to be done in a single buffer.
|
||||
(use-package guess-language
|
||||
:defer t
|
||||
:init (add-hook 'text-mode-hook #'guess-language-mode)
|
||||
:config
|
||||
(setq guess-language-langcodes '((en . ("en_US" "English"))
|
||||
(pt_BR . ("pt_BR" "Brazilian Portuguese")))
|
||||
guess-language-languages '(en pt_BR)
|
||||
guess-language-min-paragraph-length 45)
|
||||
:diminish guess-language-mode)
|
||||
|
||||
(setq create-lockfiles nil)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
["#282c34" "#ff6c6b" "#98be65" "#ECBE7B" "#51afef" "#c678dd" "#46D9FF" "#bbc2cf"])
|
||||
'(auth-source-save-behavior nil)
|
||||
'(custom-safe-themes
|
||||
'("13096a9a6e75c7330c1bc500f30a8f4407bd618431c94aeab55c9855731a95e1" "48042425e84cd92184837e01d0b4fe9f912d875c43021c3bcb7eeb51f1be5710" "c5878086e65614424a84ad5c758b07e9edcf4c513e08a1c5b1533f313d1b17f1" "10e5d4cc0f67ed5cafac0f4252093d2119ee8b8cb449e7053273453c1a1eb7cc" "ffafb0e9f63935183713b204c11d22225008559fa62133a69848835f4f4a758c" "7964b513f8a2bb14803e717e0ac0123f100fb92160dcf4a467f530868ebaae3e" "f053f92735d6d238461da8512b9c071a5ce3b9d972501f7a5e6682a90bf29725" "944d52450c57b7cbba08f9b3d08095eb7a5541b0ecfb3a0a9ecd4a18f3c28948" "dad40020beea412623b04507a4c185079bff4dcea20a93d8f8451acb6afc8358" "a0415d8fc6aeec455376f0cbcc1bee5f8c408295d1c2b9a1336db6947b89dd98" "a9a67b318b7417adbedaab02f05fa679973e9718d9d26075c6235b1f0db703c8" "1704976a1797342a1b4ea7a75bdbb3be1569f4619134341bd5a4c1cfb16abad4" "b5803dfb0e4b6b71f309606587dd88651efe0972a5be16ece6a958b197caeed8" default))
|
||||
'("b00cb300c114f3b971370c9ef9b6b8a347fa02b1af2aa4c02dab47eaa0ad930b" "d6d4e0512dcaae663f7bd304557d6bc8b78c576be5af9c0b62b8447fb79b5fde" "13096a9a6e75c7330c1bc500f30a8f4407bd618431c94aeab55c9855731a95e1" "48042425e84cd92184837e01d0b4fe9f912d875c43021c3bcb7eeb51f1be5710" "c5878086e65614424a84ad5c758b07e9edcf4c513e08a1c5b1533f313d1b17f1" "10e5d4cc0f67ed5cafac0f4252093d2119ee8b8cb449e7053273453c1a1eb7cc" "ffafb0e9f63935183713b204c11d22225008559fa62133a69848835f4f4a758c" "7964b513f8a2bb14803e717e0ac0123f100fb92160dcf4a467f530868ebaae3e" "f053f92735d6d238461da8512b9c071a5ce3b9d972501f7a5e6682a90bf29725" "944d52450c57b7cbba08f9b3d08095eb7a5541b0ecfb3a0a9ecd4a18f3c28948" "dad40020beea412623b04507a4c185079bff4dcea20a93d8f8451acb6afc8358" "a0415d8fc6aeec455376f0cbcc1bee5f8c408295d1c2b9a1336db6947b89dd98" "a9a67b318b7417adbedaab02f05fa679973e9718d9d26075c6235b1f0db703c8" "1704976a1797342a1b4ea7a75bdbb3be1569f4619134341bd5a4c1cfb16abad4" "b5803dfb0e4b6b71f309606587dd88651efe0972a5be16ece6a958b197caeed8" default))
|
||||
'(exwm-floating-border-color "#191b20")
|
||||
'(fci-rule-color "#5B6268")
|
||||
'(highlight-tail-colors
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
(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
|
||||
;;unicode ; extended unicode support for various languages
|
||||
vc-gutter ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
@@ -125,7 +125,7 @@
|
||||
;;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
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(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
|
||||
@@ -155,7 +155,7 @@
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;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
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
@@ -171,11 +171,11 @@
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
:app
|
||||
;;calendar
|
||||
;;emms
|
||||
calendar
|
||||
emms
|
||||
;;everywhere ; *leave* Emacs!? You must be joking
|
||||
;;irc ; how neckbeards socialize
|
||||
;;(rss +org) ; emacs as an RSS reader
|
||||
irc ; how neckbeards socialize
|
||||
(rss +org) ; emacs as an RSS reader
|
||||
;;twitter ; twitter client https://twitter.com/vnought
|
||||
|
||||
:config
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
;; Include
|
||||
(package! org-bullets)
|
||||
(package! visual-fill-column)
|
||||
(package! org-make-toc)
|
||||
(package! modus-themes)
|
||||
(package! ef-themes)
|
||||
(package! org-drill)
|
||||
(package! pomm)
|
||||
(package! mixed-pitch)
|
||||
(package! guess-language)
|
||||
(package! sicp)
|
||||
|
||||
;; Remove
|
||||
(package! dirvish :disable t)
|
||||
|
||||
@@ -7,16 +7,16 @@ inode/directory=pcmanfm-qt
|
||||
video/mp4=org.videolan.VLC.desktop;
|
||||
video/quicktime=org.videolan.VLC.desktop
|
||||
|
||||
text/html=brave-browser.desktop
|
||||
application/xhtml+xml=brave-browser.desktop
|
||||
application/xml=brave-browser.desktop
|
||||
text/xml=brave-browser.desktop
|
||||
text/xsl=brave-browser.desktop
|
||||
application/rss+xml=brave-browser.desktop
|
||||
application/atom+xml=brave-browser.desktop
|
||||
x-scheme-handler/http=brave-browser.desktop
|
||||
x-scheme-handler/https=brave-browser.desktop
|
||||
x-scheme-handler/ftp=brave-browser.desktop
|
||||
x-scheme-handler/chrome=brave-browser.desktop
|
||||
x-scheme-handler/about=brave-browser.desktop
|
||||
x-scheme-handler/mailto=brave-browser.desktop
|
||||
text/html=/usr/bin/firefox
|
||||
application/xhtml+xml=/usr/bin/firefox
|
||||
application/xml=/usr/bin/firefox
|
||||
text/xml=/usr/bin/firefox
|
||||
text/xsl=/usr/bin/firefox
|
||||
application/rss+xml=/usr/bin/firefox
|
||||
application/atom+xml=/usr/bin/firefox
|
||||
x-scheme-handler/http=/usr/bin/firefox
|
||||
x-scheme-handler/https=/usr/bin/firefox
|
||||
x-scheme-handler/ftp=/usr/bin/firefox
|
||||
x-scheme-handler/chrome=/usr/bin/firefox
|
||||
x-scheme-handler/about=/usr/bin/firefox
|
||||
x-scheme-handler/mailto=/usr/bin/firefox
|
||||
|
||||
@@ -40,7 +40,7 @@ highlight article ":.*\\(link\\)$" cyan default
|
||||
highlight article ":.*\\(image\\)$" blue default
|
||||
highlight article ":.*\\(embedded flash\\)$" magenta default
|
||||
|
||||
urls-source "ttrss"
|
||||
ttrss-url "https://rss.opal.sh/tt-rss/"
|
||||
ttrss-login "ryan"
|
||||
ttrss-passwordeval "gopass show -o self-hosted/rss.opal.sh"
|
||||
#urls-source "ttrss"
|
||||
#ttrss-url "https://rss.opal.sh/tt-rss/"
|
||||
#ttrss-login "ryan"
|
||||
#ttrss-passwordeval "gopass show -o self-hosted/rss.opal.sh"
|
||||
|
||||
@@ -49,3 +49,5 @@ vim.api.nvim_set_keymap('n', '<C-j>', '<C-w>j', { noremap = true })
|
||||
vim.api.nvim_set_keymap('n', '<C-k>', '<C-w>k', { noremap = true })
|
||||
vim.api.nvim_set_keymap('n', '<C-l>', '<C-w>l', { noremap = true })
|
||||
|
||||
vim.cmd("colorscheme gruvbox")
|
||||
vim.o.background = "light" -- or "light" for light mode
|
||||
|
||||
@@ -38,8 +38,8 @@ require("lazy").setup({
|
||||
overrides = {
|
||||
SignColumn = { bg = "#1e2021" },
|
||||
},
|
||||
transparent_mode = true,
|
||||
})
|
||||
vim.cmd("colorscheme gruvbox")
|
||||
end
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
;; vi keybindings
|
||||
(define-configuration buffer
|
||||
((default-modes
|
||||
(pushnew 'nyxt/mode/vi:vi-normal-mode %slot-value%))))
|
||||
(pushnew 'nyxt/mode/vi:vi-normal-mode %slot-value%))))
|
||||
|
||||
;; Vi-insert mode for prompt-buffer (minibuffer)
|
||||
(define-configuration prompt-buffer
|
||||
@@ -9,11 +9,11 @@
|
||||
|
||||
(defvar *my-search-engines*
|
||||
(list
|
||||
'("ddg" "https://duckduckgo.com/search?q=~a" "https://duckduckgo.com"))
|
||||
'("ddg" "https://duckduckgo.com/?q=~a" "https://duckduckgo.com"))
|
||||
"List of search engines.")
|
||||
|
||||
(define-configuration context-buffer
|
||||
"Set DuckDuckGo as the default search engine."
|
||||
"Set DuckDuckGo as the default search engine."
|
||||
((search-engines
|
||||
(append %slot-default%
|
||||
(mapcar
|
||||
|
||||
Submodule .config/qutebrowser/dracula deleted from 791de19ce6
@@ -41,18 +41,13 @@ floating_modifier $mod normal
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
# Exit sway (logs you out of your Wayland session)
|
||||
#bindsym $mod+Shift+x exec swaymsg -r exit
|
||||
# bindsym $mod+Shift+x exec swaymsg -r exit
|
||||
|
||||
## Volume
|
||||
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +2%
|
||||
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -2%
|
||||
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
|
||||
## Volume for non-media button keyboards
|
||||
#bindsym $mod+Shift+n exec pactl set-sink-volume @DEFAULT_SINK@ +5%
|
||||
#bindsym $mod+Shift+b exec pactl set-sink-volume @DEFAULT_SINK@ -5%
|
||||
#bindsym $mod+Shift+m exec pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
|
||||
# Media playerctl
|
||||
bindsym XF86AudioNext exec playerctl next
|
||||
bindsym XF86AudioPrev exec playerctl previous
|
||||
@@ -179,18 +174,25 @@ bindsym $mod+Shift+e exec wtype $(awk '{print $1, $0}' ~/.local/share/chars/emoj
|
||||
#######################
|
||||
# EXECS
|
||||
#######################
|
||||
|
||||
set $gnome-schema org.gnome.desktop.interface
|
||||
|
||||
# Set GTK/icon theme
|
||||
exec_always {
|
||||
gsettings set org.gnome.desktop.interface gtk-theme 'Arc-Darker'
|
||||
gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark'
|
||||
gsettings set $gnome-schema gtk-theme 'ArcDarker'
|
||||
gsettings set $gnome-schema icon-theme 'Papirus-Dark'
|
||||
gsettings set $gnome-schema cursor-theme 'Breeze_Light'
|
||||
gsettings set $gnome-schema cursor-size 30
|
||||
}
|
||||
|
||||
# Syncthing
|
||||
exec /usr/bin/syncthing
|
||||
|
||||
# Notifications
|
||||
exec_always dunst
|
||||
|
||||
# Wlsunset (Night Light)
|
||||
exec wlsunset -l 47.6 -L -122.3 -t 3000 -T 3500
|
||||
exec_always wlsunset -l 47.6 -L -122.3 -t 2000 -T 3000
|
||||
|
||||
# udiskie - auto usb mounting
|
||||
exec /usr/bin/udiskie &
|
||||
@@ -215,17 +217,28 @@ exec hash dbus-update-activation-environment 2>/dev/null && dbus-update-activati
|
||||
# before-sleep 'swaylock -f'
|
||||
# timeout 15 'if pgrep -x swaylock; then swaymsg "output * dpms off"; fi' \
|
||||
|
||||
|
||||
#######################
|
||||
# DECORATIONS
|
||||
#######################
|
||||
|
||||
# SwayFX specific directions
|
||||
corner_radius 3
|
||||
shadows enable
|
||||
#default_dim_inactive 0.1
|
||||
blur enable
|
||||
blur_xray disable
|
||||
|
||||
# Gaps
|
||||
smart_gaps off
|
||||
gaps inner 5
|
||||
gaps outer 5
|
||||
|
||||
# Window Borders
|
||||
default_border pixel 3
|
||||
default_floating_border none
|
||||
client.focused "#38761d" "#38761d" "#ffffff" "#38761d"
|
||||
client.focused "#D27A31" "#5F9EA0" "#000000" "#D27A31"
|
||||
|
||||
set $opacity 0.90
|
||||
set $opacity 0.9
|
||||
for_window [app_id="emacs"] opacity $opacity
|
||||
for_window [app_id="strawberry"] opacity $opacity
|
||||
for_window [app_id="pcmanfm-qt"] opacity $opacity
|
||||
@@ -233,10 +246,6 @@ for_window [app_id="org.kde.polkit-kde-authentication-agent-1"] floating enable
|
||||
for_window [app_id="bemenu"] floating enable
|
||||
for_window [app_id="bemenu"] layer top
|
||||
|
||||
# Gaps
|
||||
smart_gaps on
|
||||
gaps inner 5
|
||||
gaps outer 2
|
||||
|
||||
#######################
|
||||
# INPUTS
|
||||
@@ -269,6 +278,8 @@ input "1241:1031:USB-HID_Keyboard_Mouse" {
|
||||
accel_profile "flat"
|
||||
}
|
||||
|
||||
seat seat0 xcursor_theme Breeze_Light 30
|
||||
|
||||
# Hide mouse cursor after inactivity
|
||||
seat * hide_cursor 10000
|
||||
|
||||
@@ -289,7 +300,7 @@ bindswitch --reload --locked lid:off output $laptop enable
|
||||
output HDMI-A-1 scale 2.0
|
||||
|
||||
# Wallpaper
|
||||
output * bg ~/.config/wallpapers/exterminator.png fill
|
||||
output * bg ~/.config/wallpapers/greek-ruins.jpg fill
|
||||
|
||||
# Enable/Disable extra HDMI screens
|
||||
bindsym $mod+Shift+m output "HDMI-A-1" enable
|
||||
@@ -301,13 +312,13 @@ bindsym $mod+Shift+n output "HDMI-A-1" disable
|
||||
#######################
|
||||
|
||||
# Assign workspaces to numbers
|
||||
set $ws1 number "1"
|
||||
set $ws2 number "2"
|
||||
set $ws3 number "3"
|
||||
set $ws4 number "4"
|
||||
set $ws5 number "5"
|
||||
set $ws6 number "6"
|
||||
set $ws7 number "0"
|
||||
set $ws1 "1:I"
|
||||
set $ws2 "2:II"
|
||||
set $ws3 "3:III"
|
||||
set $ws4 "4:IV"
|
||||
set $ws5 "5:V"
|
||||
set $ws6 "6:VI"
|
||||
set $ws7 "7:VII"
|
||||
|
||||
# Switch to workspace
|
||||
bindsym $mod+1 workspace $ws1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Image
|
||||
image=~/.config/wallpapers/exterminator.png
|
||||
image=~/.config/wallpapers/greek-ruins.jpg
|
||||
scaling=fill
|
||||
|
||||
# Indicator
|
||||
|
||||
BIN
.config/wallpapers/greek-ruins.jpg
Normal file
BIN
.config/wallpapers/greek-ruins.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.2 MiB |
@@ -4,13 +4,12 @@
|
||||
"height": 44,
|
||||
"modules-left": ["sway/workspaces"],
|
||||
"modules-center": ["clock","custom/padd","custom/weather"],
|
||||
"modules-right": ["custom/l_end","custom/music","custom/padd","pulseaudio","custom/padd","network", "custom/padd","battery","custom/padd","custom/wlsunset","custom/padd", "tray","custom/power","custom/padd"],
|
||||
"modules-right": ["custom/l_end","custom/music","custom/padd","pulseaudio","custom/padd","network", "custom/padd","battery","custom/padd", "tray","custom/power","custom/padd"],
|
||||
"sway/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"all-outputs": true,
|
||||
"format": "<span size='large'>{icon}</span>",
|
||||
"format": "{name}",
|
||||
},
|
||||
|
||||
"sway/mode": {
|
||||
"format": "<span style='italic'>{}</span>"
|
||||
},
|
||||
@@ -21,16 +20,16 @@
|
||||
},
|
||||
|
||||
"clock": {
|
||||
"format": " {:%H:%M %a %B %d}",
|
||||
"format": " {:%H:%M %D}",
|
||||
"tooltip-format": "<tt><big>{calendar}</big></tt>"
|
||||
},
|
||||
"custom/music": {
|
||||
"exec": "~/.config/waybar/scripts/music.py",
|
||||
"exec": "~/.config/waybar/scripts/music.scm",
|
||||
"interval": 3,
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/weather": {
|
||||
"exec": "~/.config/waybar/scripts/weather.py",
|
||||
"exec": "~/.config/waybar/scripts/weather.scm",
|
||||
"interval": 600,
|
||||
"tooltip": false
|
||||
},
|
||||
@@ -43,9 +42,9 @@
|
||||
},
|
||||
"full-at": "99",
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-icons": ["","", "","", ""],
|
||||
"format-good": " {capacity}%", // An empty format will hide the module
|
||||
"format-full": " Full",
|
||||
"format-icons": [" ","", "","", ""],
|
||||
"format-good": " %", // An empty format will hide the module
|
||||
"format-full": "",
|
||||
"format-charging": " {capacity}% "
|
||||
},
|
||||
"custom/wlsunset": {
|
||||
@@ -55,8 +54,8 @@
|
||||
},
|
||||
"network": {
|
||||
"interval": 5,
|
||||
"format-wifi": " {essid}",
|
||||
"format-ethernet": " {ifname}",
|
||||
"format-wifi": "",
|
||||
"format-ethernet": "",
|
||||
"format-disconnected": " ",
|
||||
"tooltip-format-wifi": "{essid}:{signalStrength}\nSpeed:{bandwidthDownBits} \n{ipaddr}",
|
||||
"on-click": "alacritty -e nmtui"
|
||||
@@ -77,7 +76,7 @@
|
||||
},
|
||||
|
||||
"custom/power": {
|
||||
"format": "{}",
|
||||
"format": "",
|
||||
//"exec": "echo ; echo logout",
|
||||
"on-click": "wlogout -p layer-shell",
|
||||
"interval" : 86400, // once every day
|
||||
|
||||
36
.config/waybar/scripts/music.scm
Executable file
36
.config/waybar/scripts/music.scm
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env guile3.0
|
||||
!#
|
||||
|
||||
(use-modules (ice-9 popen)
|
||||
(ice-9 rdelim))
|
||||
|
||||
;; Function to get playerctl metadata
|
||||
(define (get-playerctl-metadata field)
|
||||
(let* ((command (string-append "playerctl --player=strawberry metadata " field))
|
||||
(port (open-input-pipe command))
|
||||
(output (read-line port)))
|
||||
(close-pipe port)
|
||||
output))
|
||||
|
||||
;; Function to abbreviate a string if it's longer than max-length
|
||||
(define (abbreviate text max-length)
|
||||
(if (> (string-length text) max-length)
|
||||
(string-append (substring text 0 (- max-length 3)) "...")
|
||||
text))
|
||||
|
||||
(define music-note "🎵")
|
||||
|
||||
;; Main logic to display artist and title
|
||||
(let* ((artist (get-playerctl-metadata "artist"))
|
||||
(title (get-playerctl-metadata "title"))
|
||||
(display-text
|
||||
(if (and (string? artist) (string? title))
|
||||
(abbreviate (string-append artist " - " title) 30)
|
||||
#f))) ;; Set to #f if artist or title is not available
|
||||
(if display-text
|
||||
(begin
|
||||
(display music-note) ;; Display the music note icon
|
||||
(display " ")
|
||||
(display display-text)
|
||||
(newline))
|
||||
(display "")))
|
||||
86
.config/waybar/scripts/weather.scm
Executable file
86
.config/waybar/scripts/weather.scm
Executable file
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env guile3.0
|
||||
!#
|
||||
|
||||
(use-modules (web client)
|
||||
(json)
|
||||
(rnrs bytevectors)
|
||||
(ice-9 receive))
|
||||
|
||||
(define api-key "99631af2d6db903d1f689c7d2cb13764")
|
||||
(define city-id "5809844")
|
||||
(define units "metric")
|
||||
|
||||
;; Construct the openweathermap URL with API token, city ID, and unit of measurement
|
||||
(define weather-url
|
||||
(format #f "http://api.openweathermap.org/data/2.5/weather?id=~a&units=~a&appid=~a"
|
||||
city-id units api-key))
|
||||
|
||||
;; Define weather icons as an association list
|
||||
(define weather-icons
|
||||
'(("clear sky" . "☀️")
|
||||
("few clouds" . "🌤️")
|
||||
("scattered clouds" . "🌥️")
|
||||
("broken clouds" . "☁️")
|
||||
("overcast clouds" . "☁️")
|
||||
("shower rain" . "🌦️")
|
||||
("light rain" . "🌧️")
|
||||
("light intensity drizzle" . "🌧️")
|
||||
("rain" . "🌧️")
|
||||
("moderate rain" . "🌧️")
|
||||
("thunderstorm" . "⛈️")
|
||||
("snow" . "❄️")
|
||||
("mist" . "🌫️")
|
||||
("haze" . "🌫️")
|
||||
("smoke" . "🌫️")
|
||||
("fog" . "🌫️")))
|
||||
|
||||
;; Convert Celsius to Fahrenheit
|
||||
(define (celsius-to-fahrenheit celsius)
|
||||
(+ (* celsius (/ 9 5)) 32))
|
||||
|
||||
;; Get weather icon based on description
|
||||
(define (get-weather-icon description)
|
||||
(or (assoc-ref weather-icons description) "❓"))
|
||||
|
||||
;; Parse and extract weather data from JSON
|
||||
(define (extract-weather-data json-data)
|
||||
(let* ((main (assoc "main" json-data))
|
||||
(temp-c (and main
|
||||
(cdr (assoc "temp" (cdr main)))))
|
||||
|
||||
;; Round and convert to exact integer
|
||||
(temp-c-value (and temp-c
|
||||
(inexact->exact
|
||||
(round temp-c))))
|
||||
(weather-description
|
||||
(cdr (assoc "description"
|
||||
(vector-ref (cdr (assoc "weather" json-data)) 0)))))
|
||||
|
||||
;; Return temperature (C, F), description, and icon
|
||||
(values temp-c-value
|
||||
(and temp-c-value
|
||||
(inexact->exact
|
||||
(round (celsius-to-fahrenheit temp-c-value))))
|
||||
weather-description
|
||||
(get-weather-icon weather-description))))
|
||||
|
||||
;; Fetch and display weather data
|
||||
(define (get-weather)
|
||||
;; Request and parse the data
|
||||
(receive (response-status response-body)
|
||||
(http-request weather-url)
|
||||
(let ((json-data (json-string->scm
|
||||
(utf8->string response-body))))
|
||||
(call-with-values
|
||||
(lambda () (extract-weather-data json-data))
|
||||
(lambda (temp-c temp-f description icon)
|
||||
;; For debugging
|
||||
;;(format #t "Description: ~a ~%" description)
|
||||
|
||||
;; Display the weather information
|
||||
(if temp-c
|
||||
(format #t "~a ~d°C / ~d°F~%"
|
||||
icon temp-c temp-f)
|
||||
(display "Error: Temperature data not available.\n")))))))
|
||||
|
||||
(get-weather)
|
||||
@@ -2,8 +2,8 @@
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: "Terminus", "Font Awesome 6 Free";
|
||||
font-size: 15px;
|
||||
font-family: "ETBembo", "Font Awesome 6 Free";
|
||||
font-size: 20px;
|
||||
min-height: 0;
|
||||
color: #bebebe;
|
||||
}
|
||||
@@ -32,7 +32,6 @@ window#waybar {
|
||||
}
|
||||
|
||||
#mode {
|
||||
font-family: "Terminus";
|
||||
color: black;
|
||||
background: white;
|
||||
}
|
||||
@@ -72,20 +71,13 @@ window#waybar {
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#clock {
|
||||
font-family: Terminus;
|
||||
}
|
||||
#clock {}
|
||||
|
||||
#custom-weather {
|
||||
font-family: Terminus;
|
||||
}
|
||||
#custom-weather {}
|
||||
|
||||
#custom-music {
|
||||
font-family: Terminus;
|
||||
}
|
||||
#custom-music {}
|
||||
|
||||
#custom-wlsunset {}
|
||||
|
||||
#pulseaudio {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -3,3 +3,6 @@
|
||||
.config/beets/beets-library.db
|
||||
*.swp
|
||||
lazy-lock.json
|
||||
*.sync-conflict*
|
||||
.stfolder
|
||||
flycheck-packages.el
|
||||
|
||||
31
archive/elfeed/elfeed.org
Normal file
31
archive/elfeed/elfeed.org
Normal file
@@ -0,0 +1,31 @@
|
||||
* Feeds
|
||||
** Emacs
|
||||
*** https://sachachua.com/blog/feed/index.xml :tech: :emacs:
|
||||
*** https://protesilaos.com/master.xml :tech: :emacs: :philosophy:
|
||||
*** https://systemcrafters.net/rss/news.xml :tech: :emacs:
|
||||
|
||||
** Reddit
|
||||
*** https://www.reddit.com/r/stupidpol/.rss :reddit: :politics:
|
||||
|
||||
** News
|
||||
*** https://thegrayzone.com/rss :news: :politics:
|
||||
*** https://multipolarista.com/rss :news: :politics:
|
||||
*** https://www.telesurenglish.net/feed/ :news: :politics:
|
||||
*** https://theintercept.com/feed/ :news: :politics:
|
||||
*** https://www.dropsitenews.com/feed :news: :politics:
|
||||
|
||||
** Tech
|
||||
*** https://landchad.net/rss.xml :tech:
|
||||
*** https://videos.lukesmith.xyz/feeds/videos.xml?videoChannelId=2 :tech: :linux:
|
||||
*** https://pluralistic.net/feed/ :tech: :privacy:
|
||||
*** https://blog.privacyguides.org/feed_rss_created.xml :tech: :privacy:
|
||||
|
||||
** Podcasts
|
||||
*** https://feeds.simplecast.com/dCXMIpJz :podcast: :history:
|
||||
*** http://feeds.soundcloud.com/users/soundcloud:users:572119410/sounds.rss :podcast: :music:
|
||||
*** https://feeds.feedburner.com/dancarlin/history?format=xml :podcast: :history:
|
||||
|
||||
** Youtube
|
||||
*** https://www.youtube.com/channel/UC_bOcLgDdfE1whPDIwx3M_g :youtube: :travel:
|
||||
*** https://www.youtube.com/feeds/videos.xml?channel_id=UC8uT9cgJorJPWu7ITLGo9Ww :youtube: :tech: :retro:
|
||||
*** https://www.youtube.com/feeds/videos.xml?channel_id=UC0aanx5rpr7D1M7KCFYzrLQ :youtube: :commentary: :politics:
|
||||
Reference in New Issue
Block a user