Compare commits
33 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 59f815002f | |||
| db517a0759 | |||
| b382e491b8 | |||
| 5492a527c0 | |||
| c6ef708071 | |||
| 0f063a4e58 | |||
| a8e907de50 | |||
| 9b921046cf | |||
| 327d13992e | |||
| 19e1e133e3 | |||
| c7fe0235bf | |||
| dab8e342aa | |||
| 897490b10b | |||
| cb2490baae | |||
| 7c9c25f09d | |||
| 064d6f6a3b | |||
| 64d731775f | |||
| 943ad74f4a | |||
| 2f4b1b8fed | |||
| a4484f61e7 | |||
| 11deb87570 | |||
| fe4cf2905a | |||
| ebf47c763d | |||
| 1c284fc34b | |||
| 8bfb4d86bf | |||
| ba5e462587 | |||
| 304d81bf4b | |||
| d1f2ecbc14 | |||
| 23d686908d | |||
| e9c0ca90a6 | |||
| 24737b5d6e | |||
| 53917e3ddb | |||
| 753ef8d1e6 |
@@ -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"
|
||||
|
||||
+1
-1
@@ -4,4 +4,4 @@ if [ -f ~/.bash_env ]; then
|
||||
. "$HOME"/.bash_env
|
||||
fi
|
||||
|
||||
[ "$(tty)" = "/dev/tty1" ] && exec sway
|
||||
# [ "$(tty)" = "/dev/tty1" ] && exec sway
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
# If not running interactively, don't do anything
|
||||
export TERM=xterm-256color
|
||||
|
||||
#If not running interactively, don't do anything
|
||||
[ -z "$PS1" ] && return
|
||||
|
||||
#Source global definitions
|
||||
@@ -55,7 +57,7 @@ export LESS_TERMCAP_us=$'\E[01;32m'
|
||||
#######################################################
|
||||
|
||||
# Ensure gopass autocompletion is sourced
|
||||
source <(gopass completion bash)
|
||||
#source <(gopass completion bash)
|
||||
|
||||
# Gopass aliases
|
||||
alias gpi='gopass insert --multiline'
|
||||
@@ -71,16 +73,15 @@ alias gpe='gopass edit'
|
||||
# To temporarily bypass an alias, we preceed the command with a \
|
||||
# EG: the ls command is aliased, but to use the normal ls command you would type \ls
|
||||
|
||||
alias v='nvim'
|
||||
alias vim='nvim'
|
||||
alias vi='nvim'
|
||||
#alias v='nvim'
|
||||
#alias vim='nvim'
|
||||
#alias vi='nvim'
|
||||
|
||||
# DNF
|
||||
alias dnf='dnf5'
|
||||
alias din='sudo dnf5 install'
|
||||
alias dre='sudo dnf5 remove'
|
||||
alias dup='sudo dnf5 update'
|
||||
alias dse='dnf5 search'
|
||||
# APT
|
||||
alias ain='sudo apt install'
|
||||
alias are='sudo apt remove'
|
||||
alias aup='sudo apt update && sudo apt upgrade'
|
||||
alias ase='apt search'
|
||||
|
||||
# alias to show the date
|
||||
alias da='date "+%Y-%m-%d %A %T %Z"'
|
||||
@@ -107,9 +108,6 @@ alias .....='cd ../../../..'
|
||||
# cd into the old directory
|
||||
alias bd='cd "$OLDPWD"'
|
||||
|
||||
# ls -> exa
|
||||
alias ls='exa'
|
||||
|
||||
# Search command line history
|
||||
alias h="history | grep "
|
||||
|
||||
@@ -138,7 +136,6 @@ alias wget='wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"'
|
||||
# Translate
|
||||
alias tbr='trans :pt-BR'
|
||||
|
||||
|
||||
#######################################################
|
||||
# WORK
|
||||
#######################################################
|
||||
@@ -189,3 +186,4 @@ PS1="${CYAN}[\u@\h ${YELLOW}\w${GREEN}\$(parse_git_branch)${CYAN}]${WHITE}${RESE
|
||||
#######################################################
|
||||
eval $(keychain --eval --quiet ry_ecdsa)
|
||||
eval $(keychain --eval --quiet id_rsa)
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import = ["/home/opal/.config/alacritty/theme.toml"]
|
||||
import = ["/home/opal/.config/alacritty/gruvbox-light.toml"]
|
||||
|
||||
[env]
|
||||
TERM = "alacritty"
|
||||
TERM = "xterm-256color"
|
||||
|
||||
[font]
|
||||
size = 18
|
||||
|
||||
[font.normal]
|
||||
family = "Terminus"
|
||||
style = "Regular"
|
||||
style = "Bold"
|
||||
|
||||
[font.offset]
|
||||
x = 0
|
||||
@@ -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"
|
||||
@@ -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
|
||||
+202
-58
@@ -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 "Monospace" :height 190)
|
||||
(set-face-attribute 'fixed-pitch nil :font "Monospace" :height 190)
|
||||
(set-face-attribute 'variable-pitch nil :font "ETBembo" :height 190)
|
||||
|
||||
(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)" "|" "CANC(k@)")))
|
||||
|
||||
(setq org-todo-keyword-faces
|
||||
'(("NEXT" . "red") ("TODO" . "orange") ("WAIT" . "yellow") ("DONE" . "green")))
|
||||
@@ -95,39 +112,45 @@
|
||||
|
||||
(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
|
||||
;; 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 +176,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 +186,134 @@
|
||||
(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)
|
||||
|
||||
(setq browse-url-browser-function 'browse-url-generic
|
||||
browse-url-generic-program "/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community")
|
||||
|
||||
;; Elfeed
|
||||
(defun opal/elfeed-open-in-browser ()
|
||||
"Open the current Elfeed entry link in browser (LibreWolf)."
|
||||
(interactive)
|
||||
(let ((link (elfeed-entry-link (elfeed-search-selected :single))))
|
||||
(if link
|
||||
(browse-url link)
|
||||
(message "No link to open."))))
|
||||
|
||||
(defun opal/elfeed-open-in-eww()
|
||||
"Open the current Elfeed entry link in eww."
|
||||
(interactive)
|
||||
(let ((link (elfeed-entry-link (elfeed-search-selected :single))))
|
||||
(if link
|
||||
(eww-browse-url 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
|
||||
"f" 'opal/elfeed-open-in-browser ;; Open link in Browser
|
||||
"e" 'opal/elfeed-open-in-eww ;; Open link in eww
|
||||
"r" 'opal/elfeed-mark-all-read ;; Marks all feeds as read
|
||||
"gr" 'elfeed-update ;; Refresh feeds
|
||||
"q" 'quit-window)) ;; Quit Elfeed
|
||||
|
||||
(setq create-lockfiles nil)
|
||||
|
||||
;; Make sure eww opens in it's own buffer
|
||||
(after! eww
|
||||
(set-popup-rule! "^\\*eww\\*" :ignore t))
|
||||
|
||||
(after! osm
|
||||
(set-popup-rule! "^\\*osm\\*" :ignore t))
|
||||
|
||||
;; eww
|
||||
(defun opal/eww-reddit-redirect(url)
|
||||
"Redirect reddit.com to custom URL."
|
||||
(replace-regexp-in-string "https://www.reddit.com" "https://eddrit.com" 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 geiser-guile-binary "/usr/bin/guile3.0")
|
||||
|
||||
(defun opal/nov-mode-setup ()
|
||||
"Configure fonts for nov.el."
|
||||
(variable-pitch-mode 1) ; Enable variable-pitch-mode
|
||||
(visual-line-mode 1) ; Enable line wrapping at word boundaries
|
||||
(setq visual-fill-column-width 150
|
||||
visual-fill-column-center-text t
|
||||
line-spacing 0.2)
|
||||
(visual-fill-column-mode 1))
|
||||
|
||||
(add-hook 'nov-mode-hook 'opal/nov-mode-setup)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
|
||||
|
||||
(setq +lookup-dictionary-prefer-offline t)
|
||||
(setq dictionary-server "dict.org")
|
||||
|
||||
+14
-2
@@ -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
|
||||
@@ -50,4 +50,16 @@
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
)
|
||||
'(org-agenda-date ((t (:inherit fixed-pitch))))
|
||||
'(org-agenda-date-today ((t (:inherit fixed-pitch :weight bold))))
|
||||
'(org-agenda-date-weekend ((t (:inherit fixed-pitch :weight bold))))
|
||||
'(org-agenda-dimmed-todo-face ((t (:inherit fixed-pitch))))
|
||||
'(org-agenda-done ((t (:inherit fixed-pitch :strike-through t))))
|
||||
'(org-agenda-structure ((t (:inherit fixed-pitch))))
|
||||
'(org-deadline-announce ((t (:inherit fixed-pitch))))
|
||||
'(org-scheduled ((t (:inherit fixed-pitch))))
|
||||
'(org-scheduled-previously ((t (:inherit fixed-pitch))))
|
||||
'(org-scheduled-today ((t (:inherit fixed-pitch))))
|
||||
'(org-time-grid ((t (:inherit fixed-pitch))))
|
||||
'(org-upcoming-deadline ((t (:inherit fixed-pitch))))
|
||||
'(variable-pitch ((t (:slant normal :weight regular :height 200 :width normal :foundry "PfEd" :family "ETBembo")))))
|
||||
|
||||
@@ -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
|
||||
@@ -74,7 +74,7 @@
|
||||
;;grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
ansible
|
||||
;;ansible
|
||||
;;biblio ; Writes a PhD for you (citation needed)
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
@@ -83,7 +83,7 @@
|
||||
;;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
|
||||
(lookup +dictionary) ; navigate your code and its documentation
|
||||
lsp ; M-x vscode
|
||||
magit ; a git porcelain for Emacs
|
||||
;;make ; run make tasks from Emacs
|
||||
@@ -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,15 @@
|
||||
;; 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)
|
||||
(package! nov)
|
||||
(package! osm)
|
||||
|
||||
;; Remove
|
||||
(package! dirvish :disable t)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
[global]
|
||||
geometry = "300x50-10+50"
|
||||
monitor = 0
|
||||
follow = keyboard
|
||||
indicate_hidden = yes
|
||||
@@ -23,7 +24,7 @@ show_indicators = no
|
||||
icon_position = off
|
||||
sticky_history = yes
|
||||
history_length = 20
|
||||
browser = /usr/bin/icecat -new-tab
|
||||
browser = /usr/bin/abrowser -new-tab
|
||||
always_run_script = true
|
||||
title = Dunst
|
||||
class = Dunst
|
||||
|
||||
@@ -0,0 +1,254 @@
|
||||
# -*- conf -*-
|
||||
|
||||
# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
|
||||
#term=xterm-256color (or xterm-256color if built with -Dterminfo=disabled)
|
||||
|
||||
# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode
|
||||
# title=foot
|
||||
# locked-title=no
|
||||
|
||||
font=Monospace:size=11
|
||||
# font-bold=<bold variant of regular font>
|
||||
# font-italic=<italic variant of regular font>
|
||||
# font-bold-italic=<bold+italic variant of regular font>
|
||||
# font-size-adjustment=0.5
|
||||
# line-height=<font metrics>
|
||||
# letter-spacing=0
|
||||
# horizontal-letter-offset=0
|
||||
# vertical-letter-offset=0
|
||||
# underline-offset=<font metrics>
|
||||
# underline-thickness=<font underline thickness>
|
||||
# strikeout-thickness=<font strikeout thickness>
|
||||
# box-drawings-uses-font-glyphs=no
|
||||
# dpi-aware=no
|
||||
|
||||
# initial-window-size-pixels=700x500 # Or,
|
||||
# initial-window-size-chars=<COLSxROWS>
|
||||
# initial-window-mode=windowed
|
||||
# pad=0x0 # optionally append 'center'
|
||||
# resize-by-cells=yes
|
||||
# resize-keep-grid=yes
|
||||
# resize-delay-ms=100
|
||||
|
||||
# bold-text-in-bright=no
|
||||
# word-delimiters=,│`|:"'()[]{}<>
|
||||
# selection-target=primary
|
||||
# workers=<number of logical CPUs>
|
||||
# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is ‘libutempter’ (Linux)
|
||||
# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ‘ulog’ (FreeBSD)
|
||||
|
||||
[bell]
|
||||
# urgent=no
|
||||
# notify=no
|
||||
# visual=no
|
||||
# command=
|
||||
# command-focused=no
|
||||
|
||||
[scrollback]
|
||||
lines=1000
|
||||
# multiplier=3.0
|
||||
# indicator-position=relative
|
||||
# indicator-format=""
|
||||
|
||||
[url]
|
||||
# launch=xdg-open ${url}
|
||||
# label-letters=sadfjklewcmpgh
|
||||
# osc8-underline=url-mode
|
||||
# protocols=http, https, ftp, ftps, file, gemini, gopher
|
||||
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
|
||||
|
||||
[cursor]
|
||||
# style=block
|
||||
# color=<inverse foreground/background>
|
||||
# blink=no
|
||||
# blink-rate=500
|
||||
# beam-thickness=1.5
|
||||
# underline-thickness=<font underline thickness>
|
||||
|
||||
[mouse]
|
||||
# hide-when-typing=no
|
||||
# alternate-scroll-mode=yes
|
||||
|
||||
|
||||
[colors]
|
||||
|
||||
# Background and Foreground
|
||||
background=E8D8B0 # Match Gruvbox light background
|
||||
foreground=3c3836 # Match Gruvbox light foreground
|
||||
|
||||
## Normal/regular colors (color palette 0-7)
|
||||
regular0=fbf1c7 # black
|
||||
regular1=cc241d # red
|
||||
regular2=98971a # green
|
||||
regular3=d79921 # yellow
|
||||
regular4=458588 # blue
|
||||
regular5=7c6f64 # magenta (desaturated brownish-gray)
|
||||
regular6=689d6a # cyan
|
||||
regular7=7c6f64 # white
|
||||
|
||||
## Bright colors (color palette 8-15)
|
||||
bright0=928374 # bright black
|
||||
bright1=9d0006 # bright red
|
||||
bright2=79740e # bright green
|
||||
bright3=b57614 # bright yellow
|
||||
bright4=076678 # bright blue
|
||||
bright5=7c6f64 # bright magenta (neutral/desaturated tone)
|
||||
bright6=427b58 # bright cyan
|
||||
bright7=3c3836 # bright white
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# alpha=1.0
|
||||
# background=242424
|
||||
# foreground=ffffff
|
||||
# flash=7f7f00
|
||||
# flash-alpha=0.5
|
||||
|
||||
## Normal/regular colors (color palette 0-7)
|
||||
# regular0=242424 # black
|
||||
# regular1=f62b5a # red
|
||||
# regular2=47b413 # green
|
||||
# regular3=e3c401 # yellow
|
||||
# regular4=24acd4 # blue
|
||||
# regular5=f2affd # magenta
|
||||
# regular6=13c299 # cyan
|
||||
# regular7=e6e6e6 # white
|
||||
|
||||
## Bright colors (color palette 8-15)
|
||||
# bright0=616161 # bright black
|
||||
# bright1=ff4d51 # bright red
|
||||
# bright2=35d450 # bright green
|
||||
# bright3=e9e836 # bright yellow
|
||||
# bright4=5dc5f8 # bright blue
|
||||
# bright5=feabf2 # bright magenta
|
||||
# bright6=24dfc4 # bright cyan
|
||||
# bright7=ffffff # bright white
|
||||
|
||||
## dimmed colors (see foot.ini(5) man page)
|
||||
# dim0=<not set>
|
||||
# ...
|
||||
# dim7=<not-set>
|
||||
|
||||
## The remaining 256-color palette
|
||||
# 16 = <256-color palette #16>
|
||||
# ...
|
||||
# 255 = <256-color palette #255>
|
||||
|
||||
## Misc colors
|
||||
# selection-foreground=<inverse foreground/background>
|
||||
# selection-background=<inverse foreground/background>
|
||||
# jump-labels=<regular0> <regular3> # black-on-yellow
|
||||
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
|
||||
# search-box-no-match=<regular0> <regular1> # black-on-red
|
||||
# search-box-match=<regular0> <regular3> # black-on-yellow
|
||||
# urls=<regular3>
|
||||
|
||||
[csd]
|
||||
# preferred=server
|
||||
# size=26
|
||||
# font=<primary font>
|
||||
# color=<foreground color>
|
||||
# hide-when-maximized=no
|
||||
# double-click-to-maximize=yes
|
||||
# border-width=0
|
||||
# border-color=<csd.color>
|
||||
# button-width=26
|
||||
# button-color=<background color>
|
||||
# button-minimize-color=<regular4>
|
||||
# button-maximize-color=<regular2>
|
||||
# button-close-color=<regular1>
|
||||
|
||||
[key-bindings]
|
||||
# scrollback-up-page=Shift+Page_Up
|
||||
# scrollback-up-half-page=none
|
||||
# scrollback-up-line=none
|
||||
# scrollback-down-page=Shift+Page_Down
|
||||
# scrollback-down-half-page=none
|
||||
# scrollback-down-line=none
|
||||
# scrollback-home=none
|
||||
# scrollback-end=none
|
||||
# clipboard-copy=Control+Shift+c XF86Copy
|
||||
# clipboard-paste=Control+Shift+v XF86Paste
|
||||
# primary-paste=Shift+Insert
|
||||
# search-start=Control+Shift+r
|
||||
# font-increase=Control+plus Control+equal Control+KP_Add
|
||||
# font-decrease=Control+minus Control+KP_Subtract
|
||||
# font-reset=Control+0 Control+KP_0
|
||||
# spawn-terminal=Control+Shift+n
|
||||
# minimize=none
|
||||
# maximize=none
|
||||
# fullscreen=none
|
||||
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
|
||||
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
|
||||
# pipe-selected=[xargs -r firefox] none
|
||||
# pipe-command-output=[wl-copy] none # Copy last command's output to the clipboard
|
||||
# show-urls-launch=Control+Shift+o
|
||||
# show-urls-copy=none
|
||||
# show-urls-persistent=none
|
||||
# prompt-prev=Control+Shift+z
|
||||
# prompt-next=Control+Shift+x
|
||||
# unicode-input=Control+Shift+u
|
||||
# noop=none
|
||||
|
||||
[search-bindings]
|
||||
# cancel=Control+g Control+c Escape
|
||||
# commit=Return
|
||||
# find-prev=Control+r
|
||||
# find-next=Control+s
|
||||
# cursor-left=Left Control+b
|
||||
# cursor-left-word=Control+Left Mod1+b
|
||||
# cursor-right=Right Control+f
|
||||
# cursor-right-word=Control+Right Mod1+f
|
||||
# cursor-home=Home Control+a
|
||||
# cursor-end=End Control+e
|
||||
# delete-prev=BackSpace
|
||||
# delete-prev-word=Mod1+BackSpace Control+BackSpace
|
||||
# delete-next=Delete
|
||||
# delete-next-word=Mod1+d Control+Delete
|
||||
# extend-char=Shift+Right
|
||||
# extend-to-word-boundary=Control+w Control+Shift+Right
|
||||
# extend-to-next-whitespace=Control+Shift+w
|
||||
# extend-line-down=Shift+Down
|
||||
# extend-backward-char=Shift+Left
|
||||
# extend-backward-to-word-boundary=Control+Shift+Left
|
||||
# extend-backward-to-next-whitespace=none
|
||||
# extend-line-up=Shift+Up
|
||||
# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
|
||||
# primary-paste=Shift+Insert
|
||||
# unicode-input=none
|
||||
# quit=none
|
||||
# scrollback-up-page=Shift+Page_Up
|
||||
# scrollback-up-half-page=none
|
||||
# scrollback-up-line=none
|
||||
# scrollback-down-page=Shift+Page_Down
|
||||
# scrollback-down-half-page=none
|
||||
# scrollback-down-line=none
|
||||
# scrollback-home=none
|
||||
# scrollback-end=none
|
||||
|
||||
[url-bindings]
|
||||
# cancel=Control+g Control+c Control+d Escape
|
||||
# toggle-url-visible=t
|
||||
|
||||
|
||||
[mouse-bindings]
|
||||
# scrollback-up-mouse=BTN_WHEEL_BACK
|
||||
# scrollback-down-mouse=BTN_WHEEL_FORWARD
|
||||
# font-increase=Control+BTN_WHEEL_BACK
|
||||
# font-decrease=Control+BTN_WHEEL_FORWARD
|
||||
# selection-override-modifiers=Shift
|
||||
# primary-paste=BTN_MIDDLE
|
||||
# select-begin=BTN_LEFT
|
||||
# select-begin-block=Control+BTN_LEFT
|
||||
# select-extend=BTN_RIGHT
|
||||
# select-extend-character-wise=Control+BTN_RIGHT
|
||||
# select-word=BTN_LEFT-2
|
||||
# select-word-whitespace=Control+BTN_LEFT-2
|
||||
# select-quote = BTN_LEFT-3
|
||||
# select-row=BTN_LEFT-4
|
||||
|
||||
# vim: ft=dosini
|
||||
|
||||
|
||||
+18
-18
@@ -1,22 +1,22 @@
|
||||
[Added Associations]
|
||||
video/mp4=org.videolan.VLC.desktop;org.kde.dragonplayer.desktop;mpv.desktop;
|
||||
video/quicktime=org.videolan.VLC.desktop;org.kde.dragonplayer.desktop;mpv.desktop;
|
||||
video/mp4=mpv.desktop;
|
||||
video/quicktime=mpv.desktop;
|
||||
|
||||
[Default Applications]
|
||||
inode/directory=pcmanfm-qt
|
||||
video/mp4=org.videolan.VLC.desktop;
|
||||
video/quicktime=org.videolan.VLC.desktop
|
||||
inode/directory=thunar
|
||||
video/mp4=mpv.desktop;
|
||||
video/quicktime=mpv.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=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
application/xhtml+xml=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
application/xml=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
text/xml=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
text/xsl=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
application/rss+xml=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
application/atom+xml=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
x-scheme-handler/http=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
x-scheme-handler/https=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
x-scheme-handler/ftp=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
x-scheme-handler/chrome=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
x-scheme-handler/about=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
x-scheme-handler/mailto=/var/lib/flatpak/exports/bin/io.gitlab.librewolf-community
|
||||
|
||||
@@ -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
|
||||
},
|
||||
},
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
(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
|
||||
|
||||
Submodule .config/qutebrowser/dracula deleted from 791de19ce6
+70
-44
@@ -11,11 +11,11 @@ set $right l
|
||||
set $mod Mod4
|
||||
|
||||
# Terminal
|
||||
set $term alacritty
|
||||
set $term foot
|
||||
|
||||
# Application Launcher
|
||||
set $menu bemenu-run -p Run: -l 10 -c -M 500 --fn 'Terminus 17' --tf '#ff4e00' --ff '#dbc077' --hf '#ff4e00'
|
||||
#set $menu rofi -show
|
||||
#set $menu bemenu-run -p Run: -l 10 -c -M 500 --fn 'Terminus 17' --tf '#ff4e00' --ff '#dbc077' --hf '#ff4e00'
|
||||
set $menu rofi -show
|
||||
|
||||
#######################
|
||||
# GENERAL KEYBINDS
|
||||
@@ -24,7 +24,7 @@ set $menu bemenu-run -p Run: -l 10 -c -M 500 --fn 'Terminus 17' --tf '#ff4e00' -
|
||||
# Start a terminal
|
||||
bindsym $mod+Return exec $term
|
||||
|
||||
# Start wofi
|
||||
# Start rofi
|
||||
bindsym $mod+d exec $menu
|
||||
|
||||
# Kill focused window
|
||||
@@ -41,18 +41,16 @@ 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
|
||||
|
||||
# Reload the configuration file
|
||||
bindsym $mod+Shift+comma exec /usr/bin/keepassxc
|
||||
|
||||
## 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
|
||||
@@ -168,35 +166,43 @@ bindsym $mod+Ctrl+g exec grimshot save window
|
||||
#bindsym $mod+Shift+e exec wlogout -p layer-shell
|
||||
|
||||
# Bookmarks
|
||||
bindsym $mod+Insert exec wtype $(grep -v '^#' ~/.local/share/bookmarks/bookmarks | bemenu -p Bookmark: -l 50 -c -M 500 --fn 'Terminus 16' --tf '#ff4e00' --ff '#dbc077' --hf '#ff4e00' | cut -d ' ' -f1)
|
||||
# bindsym $mod+Insert exec wtype $(grep -v '^#' ~/.local/share/bookmarks/bookmarks | bemenu -p Bookmark: -l 50 -c -M 500 --fn 'Terminus 16' --tf '#ff4e00' --ff '#dbc077' --hf '#ff4e00' | cut -d ' ' -f1)
|
||||
|
||||
bindsym $mod+Shift+Insert exec ~/.local/bin/bookmark_insert
|
||||
# bindsym $mod+Shift+Insert exec ~/.local/bin/bookmark_insert
|
||||
|
||||
# Emojis
|
||||
bindsym $mod+Shift+e exec wtype $(awk '{print $1, $0}' ~/.local/share/chars/emojis* | bemenu -p Emoji: -l 25 -c -M 500 --fn 'Noto Color Emoji,Terminus 16' --tf '#ff4e00' --ff '#dbc077' --hf '#ff4e00' | awk '{print $1}')
|
||||
# bindsym $mod+Shift+e exec wtype $(awk '{print $1, $0}' ~/.local/share/chars/emojis* | bemenu -p Emoji: -l 25 -c -M 500 --fn 'Noto Color Emoji,Terminus 16' --tf '#ff4e00' --ff '#dbc077' --hf '#ff4e00' | awk '{print $1}')
|
||||
|
||||
|
||||
#######################
|
||||
# EXECS
|
||||
#######################
|
||||
# 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'
|
||||
|
||||
set $gnome-schema org.gnome.desktop.interface
|
||||
|
||||
# Set GTK/icon theme
|
||||
exec {
|
||||
gsettings set $gnome-schema gtk-theme 'Arc-Darker'
|
||||
gsettings set $gnome-schema icon-theme 'Papirus'
|
||||
gsettings set $gnome-schema cursor-theme 'breeze_cursors'
|
||||
gsettings set $gnome-schema cursor-size 30
|
||||
gsettings set $schema gtk-application-prefer-dark-theme true
|
||||
}
|
||||
|
||||
# Syncthing
|
||||
exec /usr/bin/syncthing &
|
||||
|
||||
# Notifications
|
||||
exec_always dunst
|
||||
exec pgrep -x dunst > /dev/null || dunst
|
||||
|
||||
# Wlsunset (Night Light)
|
||||
exec wlsunset -l 47.6 -L -122.3 -t 3000 -T 3500
|
||||
# Gammastep until wlsunset becomes a thing again:
|
||||
exec_always sleep 2 && pgrep -x gammastep > /dev/null || gammastep -l 47.6062:-122.3321 -t 3000:2500
|
||||
|
||||
# udiskie - auto usb mounting
|
||||
exec /usr/bin/udiskie &
|
||||
|
||||
# Network Manager tray applet
|
||||
exec_always /usr/bin/nm-applet
|
||||
exec pgrep -x nm-tray || /usr/bin/nm-tray
|
||||
|
||||
# Bluetooth manager tray applet
|
||||
exec /usr/bin/blueman-applet
|
||||
@@ -208,6 +214,9 @@ exec /usr/lib/x86_64-linux-gnu/libexec/polkit-kde-authentication-agent-1
|
||||
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
||||
exec hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
|
||||
|
||||
# Weather script (runs every 900 seconds, updates /tmp/weather.txt for swaybar to read from).
|
||||
exec_always sleep 2 && ~/.config/sway/scripts/weather_swaybar.scm &
|
||||
|
||||
# Idle configuration
|
||||
#exec swayidle -w \
|
||||
# timeout 3200 'swaymsg "output * dpms off"' \
|
||||
@@ -215,28 +224,30 @@ 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
|
||||
#######################
|
||||
|
||||
# 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
|
||||
for_window [app_id="emacs"] opacity $opacity
|
||||
set $opacity 0.9
|
||||
for_window [class="Emacs"] opacity $opacity
|
||||
for_window [app_id="foot"] opacity $opacity
|
||||
for_window [app_id="strawberry"] opacity $opacity
|
||||
for_window [app_id="pcmanfm-qt"] opacity $opacity
|
||||
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
|
||||
for_window [class="KeePassXC"] opacity $opacity
|
||||
for_window [class="KeePassXC"] floating enable
|
||||
#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 +280,8 @@ input "1241:1031:USB-HID_Keyboard_Mouse" {
|
||||
accel_profile "flat"
|
||||
}
|
||||
|
||||
seat seat0 xcursor_theme breeze_cursors 30
|
||||
|
||||
# Hide mouse cursor after inactivity
|
||||
seat * hide_cursor 10000
|
||||
|
||||
@@ -286,10 +299,10 @@ bindswitch --reload --locked lid:on output $laptop disable
|
||||
bindswitch --reload --locked lid:off output $laptop enable
|
||||
|
||||
# Monitors
|
||||
output HDMI-A-1 scale 2.0
|
||||
#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 +314,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
|
||||
@@ -332,7 +345,20 @@ bindsym $mod+Shift+0 move container to workspace $ws7
|
||||
# BAR
|
||||
#######################
|
||||
|
||||
# Status Bar:
|
||||
bar {
|
||||
swaybar_command waybar
|
||||
position top
|
||||
font "ETBembo 17"
|
||||
height 40
|
||||
icon_theme "Papirus"
|
||||
strip_workspace_numbers yes
|
||||
status_command ~/.config/sway/scripts/bar.sh
|
||||
|
||||
colors {
|
||||
statusline #ffffff
|
||||
background #000000AA
|
||||
inactive_workspace #323232AA #323232AA #5c5c5cAA
|
||||
focused_workspace #323232AA #5c5c5cAA #FFFFFFAA
|
||||
}
|
||||
|
||||
#swaybar_command waybar
|
||||
}
|
||||
|
||||
Executable
+109
@@ -0,0 +1,109 @@
|
||||
#!/bin/bash
|
||||
|
||||
get_date() {
|
||||
echo -n " $(date '+%a %d/%m/%y %H:%M')"
|
||||
}
|
||||
|
||||
get_battery() {
|
||||
BATTERY_PATH="/sys/class/power_supply/BAT0"
|
||||
|
||||
if [ -f "$BATTERY_PATH/capacity" ]; then
|
||||
BAT_PERCENT=$(cat "$BATTERY_PATH/capacity")
|
||||
BAT_STATUS=$(cat "$BATTERY_PATH/status")
|
||||
|
||||
# Determine battery icon based on percentage
|
||||
case $BAT_PERCENT in
|
||||
9[5-9]|100)
|
||||
ICON="" # Full battery (95%-100%)
|
||||
;;
|
||||
9[0-4])
|
||||
ICON="" # 90%-94% battery
|
||||
;;
|
||||
8[0-9])
|
||||
ICON="" # 80% battery
|
||||
;;
|
||||
7[0-9])
|
||||
ICON="" # 70% battery
|
||||
;;
|
||||
6[0-9])
|
||||
ICON="" # 60% battery
|
||||
;;
|
||||
5[0-9])
|
||||
ICON="" # 50% battery
|
||||
;;
|
||||
4[0-9])
|
||||
ICON="" # 40% battery
|
||||
;;
|
||||
3[0-9])
|
||||
ICON="" # 30% battery
|
||||
;;
|
||||
2[0-9])
|
||||
ICON="" # 20% battery
|
||||
;;
|
||||
1[0-9])
|
||||
ICON="" # 10% battery
|
||||
;;
|
||||
*)
|
||||
ICON="" # Critical battery (less than 10%)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Display charging icon if the battery is charging
|
||||
if [ "$BAT_STATUS" == "Charging" ] || [ "$BAT_STATUS" == "Unknown" ]; then
|
||||
echo -n " $BAT_PERCENT%"
|
||||
else
|
||||
echo -n "$ICON $BAT_PERCENT%"
|
||||
fi
|
||||
|
||||
# Send notifications at critical levels
|
||||
case $BAT_PERCENT in
|
||||
30)
|
||||
notify-send -u normal "Battery at 30%" "Consider plugging in."
|
||||
;;
|
||||
20)
|
||||
notify-send -u normal "Battery at 20%" "Battery is getting low."
|
||||
;;
|
||||
10)
|
||||
notify-send -u critical "Battery at 10%" "Battery is critically low!"
|
||||
;;
|
||||
[5])
|
||||
notify-send -u critical "Battery at 5%" "Battery is about to die!"
|
||||
;;
|
||||
esac
|
||||
|
||||
else
|
||||
echo -n "Battery not found"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
get_volume() {
|
||||
# Get the default sink (output device)
|
||||
SINK=$(pactl info | awk -F': ' '/Default Sink/ {print $2}')
|
||||
|
||||
# Get the volume percentage
|
||||
VOLUME=$(pactl get-sink-volume "$SINK" | awk '{print $5}' | head -n1)
|
||||
|
||||
# Get the mute status
|
||||
MUTE_STATUS=$(pactl get-sink-mute "$SINK" | awk '{print $2}')
|
||||
|
||||
# Check if the output is muted
|
||||
if [ "$MUTE_STATUS" == "no" ]; then
|
||||
# Volume is not muted, display the volume percentage
|
||||
echo -n " $VOLUME"
|
||||
else
|
||||
# Volume is muted, display mute icon
|
||||
echo -n " Muted"
|
||||
fi
|
||||
}
|
||||
|
||||
get_weather() {
|
||||
temp=$(cat /tmp/weather.txt)
|
||||
echo "$temp"
|
||||
}
|
||||
|
||||
|
||||
while true; do
|
||||
echo "$(get_weather) $(get_volume) $(get_date) $(get_battery)"
|
||||
sleep 1
|
||||
done
|
||||
Executable
+91
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env guile-3.0
|
||||
!#
|
||||
|
||||
(use-modules (web client)
|
||||
(json)
|
||||
(rnrs bytevectors)
|
||||
(ice-9 receive)
|
||||
(srfi srfi-18)) ;; For sleep functionality
|
||||
|
||||
(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 to a file
|
||||
(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)
|
||||
;; Open file for writing
|
||||
(call-with-output-file "/tmp/weather.txt"
|
||||
(lambda (port)
|
||||
;; Write the weather information to the file
|
||||
(if temp-c
|
||||
(format port "~a ~d°C / ~d°F~%" icon temp-c temp-f)
|
||||
(format port "Error: Temperature data not available.\n")))))))))
|
||||
|
||||
;; Run the script indefinitely, fetching weather every 900 seconds (15 minutes)
|
||||
(define (run-indefinitely)
|
||||
(let loop ()
|
||||
(get-weather)
|
||||
(sleep 900) ;; Sleep for 900 seconds (15 minutes)
|
||||
(loop)))
|
||||
|
||||
(run-indefinitely)
|
||||
@@ -1,5 +1,5 @@
|
||||
# Image
|
||||
image=~/.config/wallpapers/exterminator.png
|
||||
image=~/.config/wallpapers/greek-ruins.jpg
|
||||
scaling=fill
|
||||
|
||||
# Indicator
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.9 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.2 MiB |
+13
-14
@@ -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
|
||||
},
|
||||
@@ -41,12 +40,12 @@
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"full-at": "99",
|
||||
"full-at": "100",
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-icons": ["","", "","", ""],
|
||||
"format-good": " {capacity}%", // An empty format will hide the module
|
||||
"format-full": " Full",
|
||||
"format-charging": " {capacity}% "
|
||||
"format-icons": ["","", "","", "", "", "", "", "", ""],
|
||||
"format-good": " %", // An empty format will hide the module
|
||||
"format-full": "",
|
||||
"format-charging": " {capacity}% "
|
||||
},
|
||||
"custom/wlsunset": {
|
||||
"format": "{icon}",
|
||||
@@ -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
|
||||
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env guile-3.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 "")))
|
||||
Executable
+86
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env guile-3.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,3 +3,6 @@
|
||||
.config/beets/beets-library.db
|
||||
*.swp
|
||||
lazy-lock.json
|
||||
*.sync-conflict*
|
||||
.stfolder
|
||||
flycheck-packages.el
|
||||
|
||||
@@ -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:
|
||||
@@ -0,0 +1,152 @@
|
||||
// Config //
|
||||
configuration {
|
||||
modi: "drun,filebrowser,window";
|
||||
show-icons: true;
|
||||
display-drun: "";
|
||||
display-run: "";
|
||||
display-filebrowser: "";
|
||||
display-window: "";
|
||||
drun-display-format: "{name}";
|
||||
window-format: "{w}{t}";
|
||||
font: "Hack Font 10";
|
||||
icon-theme: "Papirus";
|
||||
}
|
||||
|
||||
@theme "~/.config/rofi/graphite-mono.rasi"
|
||||
|
||||
|
||||
// Main //
|
||||
window {
|
||||
height: 200px;
|
||||
width: 600px;
|
||||
transparency: "real";
|
||||
fullscreen: false;
|
||||
enabled: true;
|
||||
cursor: "default";
|
||||
spacing: 0px;
|
||||
padding: 0px;
|
||||
border: 2px;
|
||||
border-radius: 40px;
|
||||
border-color: @main-br;
|
||||
background-color: transparent;
|
||||
}
|
||||
mainbox {
|
||||
enabled: true;
|
||||
spacing: 0px;
|
||||
padding: 0px;
|
||||
orientation: vertical;
|
||||
children: [ "listbox" , "inputmode" ];
|
||||
background-color: rgba(32, 32, 32, 0.88);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Lists //
|
||||
listbox {
|
||||
padding: 0px;
|
||||
spacing: 0px;
|
||||
orientation: horizontal;
|
||||
children: [ "listview" ];
|
||||
background-color: transparent;
|
||||
}
|
||||
listview {
|
||||
padding: 10px;
|
||||
spacing: 0px;
|
||||
enabled: true;
|
||||
columns: 5;
|
||||
cycle: true;
|
||||
dynamic: true;
|
||||
scrollbar: false;
|
||||
layout: vertical;
|
||||
reverse: false;
|
||||
fixed-height: true;
|
||||
fixed-columns: true;
|
||||
cursor: "default";
|
||||
background-color: @main-bg;
|
||||
text-color: @main-fg;
|
||||
}
|
||||
|
||||
|
||||
// Inputs //
|
||||
inputmode {
|
||||
padding: 0px;
|
||||
spacing: 0px;
|
||||
orientation: horizontal;
|
||||
children: [ "inputbar" , "mode-switcher" ];
|
||||
background-color: transparent;
|
||||
}
|
||||
inputbar {
|
||||
enabled: true;
|
||||
width: 400px;
|
||||
height: 0px;
|
||||
spacing: 0px;
|
||||
padding: 30px 10px 30px 65px;
|
||||
children: [ "entry" ];
|
||||
background-color: transparent;
|
||||
}
|
||||
entry {
|
||||
vertical-align: 0.5;
|
||||
border-radius: 50px;
|
||||
enabled: true;
|
||||
spacing: 0px;
|
||||
padding: 10px;
|
||||
text-color: @main-fg;
|
||||
background-color: @main-bg;
|
||||
}
|
||||
|
||||
|
||||
// Modes //
|
||||
mode-switcher {
|
||||
width: 200px;
|
||||
orientation: horizontal;
|
||||
enabled: true;
|
||||
padding: 30px 65px 30px 0px;
|
||||
spacing: 10px;
|
||||
background-color: transparent;
|
||||
}
|
||||
button {
|
||||
cursor: pointer;
|
||||
padding: 0px;
|
||||
border-radius: 50px;
|
||||
background-color: @main-bg;
|
||||
text-color: @main-fg;
|
||||
}
|
||||
button selected {
|
||||
background-color: @main-fg;
|
||||
text-color: @main-bg;
|
||||
}
|
||||
|
||||
|
||||
// Elements //
|
||||
element {
|
||||
orientation: vertical;
|
||||
enabled: true;
|
||||
spacing: 0px;
|
||||
padding: 10px;
|
||||
border-radius: 25px;
|
||||
cursor: pointer;
|
||||
background-color: transparent;
|
||||
text-color: @main-fg;
|
||||
}
|
||||
@media(max-aspect-ratio: 1.8) {
|
||||
element {
|
||||
orientation: vertical;
|
||||
}
|
||||
}
|
||||
element selected.normal {
|
||||
background-color: @select-bg;
|
||||
text-color: @select-fg;
|
||||
}
|
||||
element-icon {
|
||||
size: 38px;
|
||||
cursor: inherit;
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
}
|
||||
element-text {
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.5;
|
||||
cursor: inherit;
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
* {
|
||||
main-bg: #262626e6;
|
||||
main-fg: #d9d9d9ff;
|
||||
main-br: #a6a6a6ff;
|
||||
main-ex: #595959cc;
|
||||
select-bg: #a6a6a6ff;
|
||||
select-fg: #262626ff;
|
||||
separatorcolor: transparent;
|
||||
border-color: transparent;
|
||||
}
|
||||
Reference in New Issue
Block a user