mirror of
https://github.com/SqrtMinusOne/dotfiles.git
synced 2025-12-10 19:23:03 +03:00
Compare commits
3 commits
7ec9be8808
...
1861aa7cf8
| Author | SHA1 | Date | |
|---|---|---|---|
| 1861aa7cf8 | |||
| 321aa0c44f | |||
| 4d1a6396e7 |
30 changed files with 232 additions and 273 deletions
|
|
@ -1,24 +1,23 @@
|
|||
# decorations = "none"
|
||||
|
||||
# [[file:../../Console.org::*Alacritty][Alacritty:1]]
|
||||
[colors.bright]
|
||||
black = "#484848"
|
||||
blue = "#cbcfff"
|
||||
cyan = "#88c8ff"
|
||||
green = "#8adf80"
|
||||
magenta = "#df8fff"
|
||||
red = "#ff8f88"
|
||||
red = "#d00000"
|
||||
green = "#008900"
|
||||
yellow = "#808000"
|
||||
blue = "#0000ff"
|
||||
magenta = "#dd22dd"
|
||||
cyan = "#008899"
|
||||
white = "#ffffff"
|
||||
yellow = "#fac200"
|
||||
|
||||
[colors.normal]
|
||||
black = "#222222"
|
||||
blue = "#375cd8"
|
||||
cyan = "#1f6fbf"
|
||||
green = "#217a3c"
|
||||
magenta = "#ba35af"
|
||||
red = "#cc3333"
|
||||
white = "#fff8f0"
|
||||
green = "#217a3c"
|
||||
yellow = "#8a5d00"
|
||||
blue = "#375cd8"
|
||||
magenta = "#ba35af"
|
||||
cyan = "#1f6fbf"
|
||||
white = "#fff8f0"
|
||||
|
||||
[colors.primary]
|
||||
background = "#fff8f0"
|
||||
|
|
@ -150,3 +149,4 @@ x = 0
|
|||
y = 0
|
||||
|
||||
[keyboard]
|
||||
# Alacritty:1 ends here
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
[flags]
|
||||
hide_table_gap = true # Remove space in tables
|
||||
color = "default-light"
|
||||
process_command = true
|
||||
|
||||
[styles]
|
||||
theme = "default-light"
|
||||
|
||||
[processes]
|
||||
columns = ["PID", "State", "Name", "CPU%", "Mem%", "R/s", "W/s", "User"]
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@
|
|||
|
||||
### Misc/Advanced ###
|
||||
dmenu = /usr/bin/dmenu -p dunst:
|
||||
browser = /home/pavel/.guix-extra-profiles/browsers/browsers/bin/firefox
|
||||
browser = /user/bin/firefox
|
||||
always_run_script = true
|
||||
title = Dunst
|
||||
class = Dunst
|
||||
|
|
@ -69,15 +69,16 @@
|
|||
mouse_middle_click = do_action
|
||||
mouse_right_click = close_all
|
||||
|
||||
[experimental]
|
||||
per_monitor_dpi = false
|
||||
|
||||
[shortcuts]
|
||||
### Shortcuts
|
||||
close = ctrl+space
|
||||
close_all = ctrl+shift+space
|
||||
history = ctrl+grave
|
||||
context = ctrl+shift+period
|
||||
|
||||
[experimental]
|
||||
per_monitor_dpi = false
|
||||
|
||||
|
||||
[urgency_low]
|
||||
background = "#f6ece8"
|
||||
frame_color = "#baafba"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
arch = [
|
||||
"firefox-tridactyl",
|
||||
"firefox",
|
||||
"ungoogled-chromium-bin",]
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ arch = [
|
|||
"tmux",
|
||||
"starship",
|
||||
"nushell",
|
||||
"atuin",
|
||||
"shell-color-scripts-git",
|
||||
"fish",
|
||||
"xorg-xhost",
|
||||
|
|
|
|||
|
|
@ -8,12 +8,13 @@ arch = [
|
|||
"libva-intel-driver",
|
||||
"zram-generator",
|
||||
"yadm",
|
||||
"wpa_supplicant",
|
||||
"wireplumber",
|
||||
"wireless_tools",
|
||||
"wget",
|
||||
"xterm",
|
||||
"vim",
|
||||
"smartmontools",
|
||||
"sof-firmware",
|
||||
"pipewire-jack",
|
||||
"pipewire-pulse",
|
||||
"pipewire-alsa",
|
||||
|
|
@ -34,4 +35,5 @@ arch = [
|
|||
"grub",
|
||||
"decman",
|
||||
"base-devel",
|
||||
"base",]
|
||||
"base",
|
||||
"amneziavpn-bin",]
|
||||
|
|
|
|||
|
|
@ -180,11 +180,6 @@ radius = 0.0
|
|||
; Global bar config:2 ends here
|
||||
|
||||
; [[file:../../Desktop.org::*Global bar config][Global bar config:3]]
|
||||
; font-0 = ${env:FONT0:pango:monospace:size=10;1}
|
||||
; font-1 = ${env:FONT1:NotoEmoji:scale=10:antialias=false;0}
|
||||
; font-2 = ${env:FONT2:fontawesome:pixelsize=10;1}
|
||||
; font-3 = ${env:FONT3:JetBrains Mono Nerd Font:monospace:size=10;1}
|
||||
|
||||
font-0 = pango:monospace:size=13;2
|
||||
font-1 = NotoEmoji:scale=10:antialias=false;1
|
||||
font-2 = fontawesome:pixelsize=13;3
|
||||
|
|
|
|||
|
|
@ -39,13 +39,13 @@ palette = {
|
|||
# 'background': '#282a36',
|
||||
'background-alt': "#f6ece8",
|
||||
# 'background-alt': '#282a36',
|
||||
'background-attention': "#ff8f88",
|
||||
'background-attention': "#d00000",
|
||||
# 'background-attention': '#181920',
|
||||
'border': "#baafba",
|
||||
# 'border': '#282a36',
|
||||
'current-line': "#5f5f5f",
|
||||
'current-line': "#9da4b3",
|
||||
# 'current-line': '#44475a',
|
||||
'selection': "#5f5f5f",
|
||||
'selection': "#9da4b3",
|
||||
# 'selection': '#44475a',
|
||||
'foreground': "#222222",
|
||||
# 'foreground': '#f8f8f2',
|
||||
|
|
@ -61,7 +61,7 @@ palette = {
|
|||
# 'green': '#50fa7b',
|
||||
'orange': "#8f5a3a",
|
||||
# 'orange': '#ffb86c',
|
||||
'pink': "#df8fff",
|
||||
'pink': "#dd22dd",
|
||||
# 'pink': '#ff79c6',
|
||||
'purple': "#6052cf",
|
||||
# 'purple': '#bd93f9',
|
||||
|
|
|
|||
|
|
@ -9,12 +9,12 @@
|
|||
cyan: #1f6fbf;
|
||||
white: #fff8f0;
|
||||
light-black: #484848;
|
||||
light-red: #ff8f88;
|
||||
light-green: #8adf80;
|
||||
light-yellow: #fac200;
|
||||
light-blue: #cbcfff;
|
||||
light-magenta: #df8fff;
|
||||
light-cyan: #88c8ff;
|
||||
light-red: #d00000;
|
||||
light-green: #008900;
|
||||
light-yellow: #808000;
|
||||
light-blue: #0000ff;
|
||||
light-magenta: #dd22dd;
|
||||
light-cyan: #008899;
|
||||
light-white: #ffffff;
|
||||
|
||||
|
||||
|
|
@ -25,8 +25,8 @@
|
|||
border-color: #baafba;
|
||||
selected-normal-background: #375cd8;
|
||||
selected-normal-foreground: #fff8f0;
|
||||
selected-active-background: #cbcfff;
|
||||
selected-active-foreground: #222222;
|
||||
selected-active-background: #0000ff;
|
||||
selected-active-foreground: #fff8f0;
|
||||
selected-urgent-background: #cc3333;
|
||||
selected-urgent-foreground: #fff8f0;
|
||||
normal-foreground: @foreground;
|
||||
|
|
@ -37,8 +37,8 @@
|
|||
urgent-background: @background;
|
||||
alternate-normal-background: #f6ece8;
|
||||
alternate-normal-foreground: @foreground;
|
||||
alternate-active-background: #222222;
|
||||
alternate-active-foreground: #cbcfff;
|
||||
alternate-active-background: #fff8f0;
|
||||
alternate-active-foreground: #0000ff;
|
||||
alternate-urgent-background: #fff8f0;
|
||||
alternate-urgent-foreground: #cc3333;
|
||||
spacing: 2;
|
||||
|
|
|
|||
|
|
@ -592,11 +592,12 @@ _d_: Discord
|
|||
(defun my/exwm-init ()
|
||||
(exwm-workspace-switch 1)
|
||||
|
||||
(my/exwm-run-polybar)
|
||||
(my/exwm-set-wallpaper)
|
||||
(my/exwm-run-shepherd)
|
||||
(my/exwm-run-systemd)
|
||||
(my/run-in-background "gpgconf --reload gpg-agent")
|
||||
(my/exwm-run-polybar)
|
||||
(setenv "DBUS_SESSION_BUS_ADDRESS" "unix:path=/run/user/1000/bus")
|
||||
(when (my/is-arch)
|
||||
(my/run-in-background "set_layout")))
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
:key (lambda () (my/password-store-get-field
|
||||
"My_Online/Accounts/openrouter" "api-key"))
|
||||
:stream t
|
||||
:models '("anthropic/claude-sonnet-4"
|
||||
:models '("anthropic/claude-sonnet-4.5"
|
||||
"qwen/qwen3-coder"
|
||||
"qwen/qwen3-coder:free"))
|
||||
(setq gptel--known-backends
|
||||
|
|
|
|||
|
|
@ -137,11 +137,12 @@
|
|||
(t (doom-color color)))))))
|
||||
|
||||
(defun my/modus-get-base (color)
|
||||
(let ((base-value (string-to-number (substring (symbol-name color) 4 5)))
|
||||
(base-start (cadr (assoc 'bg-main (modus-themes-get-theme-palette
|
||||
(or (my/modus-p) (my/ef-p))))))
|
||||
(base-end (cadr (assoc 'fg-dim (modus-themes-get-theme-palette
|
||||
(or (my/modus-p) (my/ef-p)))))))
|
||||
(let* ((base-value (string-to-number (substring (symbol-name color) 4 5)))
|
||||
(palette (modus-themes-get-theme-palette
|
||||
(or (my/modus-p) (my/ef-p))
|
||||
:with-overrides :with-user-palette))
|
||||
(base-start (cadr (assoc 'bg-main palette)))
|
||||
(base-end (cadr (assoc 'fg-dim palette))))
|
||||
(nth base-value (ct-gradient 9 base-start base-end t))))
|
||||
|
||||
(defun my/prot-color (color palette)
|
||||
|
|
@ -181,10 +182,11 @@
|
|||
(t (cadr (assoc color palette))))))
|
||||
|
||||
(defun my/modus-color (color)
|
||||
(my/prot-color color (modus-themes-get-theme-palette (my/modus-p))))
|
||||
(my/prot-color color (modus-themes-get-theme-palette
|
||||
(or (my/modus-p) (my/ef-p))
|
||||
:with-overrides :with-user-palette)))
|
||||
|
||||
(defun my/ef-color (color)
|
||||
(my/prot-color color (modus-themes-get-theme-palette (my/ef-p))))
|
||||
(defalias 'my/ef-color 'my/modus-color)
|
||||
|
||||
(defconst my/test-colors-list
|
||||
'(black red green yellow blue magenta cyan white light-black
|
||||
|
|
|
|||
|
|
@ -408,6 +408,16 @@ def parse_rclone_stats(log_output):
|
|||
return None
|
||||
|
||||
|
||||
def process_output(output):
|
||||
if output is None:
|
||||
print('(empty)')
|
||||
for line in output.splitlines():
|
||||
try:
|
||||
datum = json.loads(line)
|
||||
print(datum['msg'])
|
||||
except Exception:
|
||||
print(line)
|
||||
|
||||
def rclone_run(folder):
|
||||
command = rclone_make_command(
|
||||
folder['local-path'], folder['remote-path'], folder['remote']
|
||||
|
|
@ -418,9 +428,9 @@ def rclone_run(folder):
|
|||
print(f'=== Error syncing {folder['local-path']} ===')
|
||||
print(f'Command: {' '.join(command)}')
|
||||
print(f'--- STDOUT ---')
|
||||
print(e.stdout if e.stdout else '(empty)')
|
||||
process_output(e.stdout)
|
||||
print(f'--- STDERR ---')
|
||||
print(e.stderr if e.stderr else '(empty)')
|
||||
process_output(e.stderr)
|
||||
return {'success': False, 'stats': {}}
|
||||
return {'success': True, 'stats': parse_rclone_stats(result.stderr)}
|
||||
|
||||
|
|
@ -453,21 +463,24 @@ def rclone_run_all(folders):
|
|||
total_transfers += res.get('stats', {}).get('transfers', 0)
|
||||
total_deleted += res.get('stats', {}).get('deletes', 0)
|
||||
total_renamed += res.get('stats', {}).get('renames', 0)
|
||||
|
||||
msg = ''
|
||||
level = 'normal'
|
||||
if total_transfers > 0:
|
||||
msg += f'''Transferred {total_transfers} files ({sizeof_fmt(total_bytes)})\n'''
|
||||
if total_deleted > 0:
|
||||
msg += f'''Deleted {total_transfers} files\n'''
|
||||
if total_renamed > 0:
|
||||
msg += f'''Renamed {total_renamed} files\n'''
|
||||
|
||||
if len(error_folders) > 0:
|
||||
error_msg = f'Sync error for remote {REMOTE}!'
|
||||
msg += '''\nSync errors for the following folders:'''
|
||||
for folder in error_folders:
|
||||
error_msg += '''\n- ''' + folder
|
||||
notify(f'rclone sync {REMOTE}', error_msg, level='error')
|
||||
else:
|
||||
msg = ''
|
||||
if total_transfers > 0:
|
||||
msg += f'''Transferred {total_transfers} files ({sizeof_fmt(total_bytes)})\n'''
|
||||
if total_deleted > 0:
|
||||
msg += f'''Deleted {total_transfers} files\n'''
|
||||
if total_renamed > 0:
|
||||
msg += f'''Renamed {total_renamed} files\n'''
|
||||
if len(msg) > 0:
|
||||
notify(f'rclone sync {REMOTE}', msg)
|
||||
msg += '''\n- ''' + folder
|
||||
level = 'critical'
|
||||
|
||||
if len(msg) > 0:
|
||||
notify(f'rclone sync {REMOTE}', msg, level=level)
|
||||
|
||||
if __name__ == '__main__':
|
||||
rclone_run_all(FOLDERS)
|
||||
|
|
@ -544,7 +557,7 @@ The return value is a list of commands as defined by
|
|||
(list
|
||||
(format "cat <<EOF > %s\n%s\nEOF"
|
||||
(my/index--rclone-script-loc remote)
|
||||
(my/index--rclone-script remote folders))
|
||||
(my/index--rclone-script remote (nreverse folders)))
|
||||
"Update rclone sync script" 10)
|
||||
commands))
|
||||
(nreverse commands)))
|
||||
|
|
@ -573,7 +586,7 @@ The return value is a list of commands as defined by
|
|||
|
||||
E.g. 10.03.R.01 Project Name -> Project Name."
|
||||
(replace-regexp-in-string
|
||||
(rx bos (+ (| num alpha "." "-")) space) "" name))
|
||||
(rx bos (+ num) (? "." (+ (| num alpha "." "-"))) space) "" name))
|
||||
|
||||
(defun my/index--wakatime-escape (string)
|
||||
"Escape STRING for use in a WakaTime config file."
|
||||
|
|
@ -739,12 +752,13 @@ is still valid. Otherwise, it re-parses the index file."
|
|||
(my/index--commands-display (append rclone-commands folder-commands git-commands
|
||||
waka-commands symlink-commands)))))
|
||||
|
||||
(defun my/index--nav-extend (name path)
|
||||
(defun my/index--nav-extend (name path &optional project)
|
||||
"Find all index-related files in PATH.
|
||||
|
||||
NAME is the name of the root index entry, e.g. \"10.01
|
||||
Something\". If PATH containts folders like \"10.01.01
|
||||
Something\", \"10.01.02 ...\", they will be returned.
|
||||
Something\", \"10.01.02 ...\", they will be returned. PROJECT is the
|
||||
project name.
|
||||
|
||||
The return value is a form as defined by `my/index--nav-get'."
|
||||
(when (file-directory-p path)
|
||||
|
|
@ -771,7 +785,7 @@ The return value is a form as defined by `my/index--nav-get'."
|
|||
`(((:names . (,name-1))
|
||||
(:path . ,(concat path-1 "/")))))))))
|
||||
|
||||
(defun my/index--nav-get (tree &optional names)
|
||||
(defun my/index--nav-get (tree &optional names project)
|
||||
"Get the navigation structure from TREE.
|
||||
|
||||
TREE is a form as defined by `my/index--tree-get'. NAMES is a
|
||||
|
|
@ -783,7 +797,7 @@ The result is a list of alists with the following keys:
|
|||
(\"10.01 Something\" \"10.01.01 Something\")
|
||||
- `:path` - path to the folder, e.g.
|
||||
\"/path/10 stuff/10.01 Something/10.01.01 Something/\"
|
||||
- `:child-navs` - list of child navigation structures (optional)"
|
||||
- `:project` - project name."
|
||||
(seq-sort-by
|
||||
(lambda (item) (alist-get :path item))
|
||||
#'string-lessp
|
||||
|
|
@ -791,28 +805,24 @@ The result is a list of alists with the following keys:
|
|||
(lambda (acc elem)
|
||||
(let* ((name (alist-get :name elem))
|
||||
(path (alist-get :path elem)))
|
||||
(cond ((alist-get :project elem)
|
||||
(let ((current-nav `((:names . (,@names ,name))
|
||||
(:path . ,path))))
|
||||
(when-let (child-navs
|
||||
(and (alist-get :children elem)
|
||||
(my/index--nav-get (alist-get :children elem))))
|
||||
(setf (alist-get :child-navs current-nav) child-navs))
|
||||
(push current-nav acc)))
|
||||
((alist-get :children elem)
|
||||
(cond ((alist-get :children elem)
|
||||
(when-let (child-navs (my/index--nav-get
|
||||
(alist-get :children elem)
|
||||
`(,@names ,name)))
|
||||
`(,@names ,name)
|
||||
(or (when (alist-get :project elem)
|
||||
name)
|
||||
project)))
|
||||
(cl-loop for child-nav in child-navs
|
||||
do (push child-nav acc))))
|
||||
(t (if-let ((extended-nav (my/index--nav-extend name path)))
|
||||
(t (if-let ((extended-nav (my/index--nav-extend name path project)))
|
||||
(cl-loop for child-nav in extended-nav
|
||||
do (setf (alist-get :names child-nav)
|
||||
(append names (list name)
|
||||
(alist-get :names child-nav)))
|
||||
do (push child-nav acc))
|
||||
(push `((:names . (,@names ,name))
|
||||
(:path . ,path))
|
||||
(:path . ,path)
|
||||
(:project . ,project))
|
||||
acc))))
|
||||
acc))
|
||||
tree
|
||||
|
|
@ -838,7 +848,10 @@ The return value is a form as defined by `my/index--nav-get'."
|
|||
NAV is a structure as defined by `my/index--nav-get'."
|
||||
(let* ((collection
|
||||
(mapcar (lambda (item)
|
||||
(cons (car (last (alist-get :names item)))
|
||||
(cons (let ((name (car (last (alist-get :names item)))))
|
||||
(if (alist-get :project item)
|
||||
(format "%s / %s" (alist-get :project item) name)
|
||||
name))
|
||||
(alist-get :path item)))
|
||||
nav))
|
||||
(vertico-sort-function nil))
|
||||
|
|
@ -856,36 +869,21 @@ NAV is a structure as defined by `my/index--nav-get'."
|
|||
(string-prefix-p (alist-get :path item) path))
|
||||
nav))
|
||||
|
||||
(defun my/index-nav (arg &optional func)
|
||||
(defun my/index-nav (&optional func)
|
||||
"Navigate the filesystem index.
|
||||
|
||||
If ARG is nil, navigate all levels sequentially from the top one.
|
||||
|
||||
If ARG is '(4), select another directory from the same level.
|
||||
|
||||
FUNC is the function to call with the selected path. It defaults
|
||||
to `dired' if used interactively."
|
||||
(interactive (list current-prefix-arg #'dired))
|
||||
(interactive (list #'dired))
|
||||
(let* ((nav (my/index--nav-retrive))
|
||||
(current-nav (my/index--nav-find-path
|
||||
nav (expand-file-name default-directory)))
|
||||
(current-child-navs (alist-get :child-navs current-nav)))
|
||||
(cond ((null arg)
|
||||
(let ((selected (my/index--nav-find-path
|
||||
nav
|
||||
(my/index--nav-prompt nav))))
|
||||
(if-let (child-navs (alist-get :child-navs selected))
|
||||
(funcall func (my/index--nav-prompt child-navs))
|
||||
(funcall func (alist-get :path selected)))))
|
||||
((and (equal arg '(4)) current-child-navs)
|
||||
(funcall func (my/index--nav-prompt current-child-navs)))
|
||||
((and (equal arg '(4)) (null current-child-navs))
|
||||
(funcall func (my/index--nav-prompt nav))))))
|
||||
(selected (my/index--nav-find-path
|
||||
nav
|
||||
(my/index--nav-prompt nav))))
|
||||
(funcall func (alist-get :path selected))))
|
||||
|
||||
(defun my/index-nav-with-select-file (arg)
|
||||
(interactive (list current-prefix-arg))
|
||||
(defun my/index-nav-with-select-file ()
|
||||
(interactive)
|
||||
(my/index-nav
|
||||
arg
|
||||
(lambda (dir)
|
||||
(let ((default-directory dir))
|
||||
(projectile-find-file)))))
|
||||
|
|
|
|||
|
|
@ -152,6 +152,8 @@
|
|||
(org-element-property :end element))))
|
||||
(with-temp-buffer
|
||||
(insert s)
|
||||
(let (org-mode-hook)
|
||||
(org-mode))
|
||||
(org-clock-sum)
|
||||
org-clock-file-total-minutes)))
|
||||
|
||||
|
|
|
|||
|
|
@ -11,10 +11,8 @@
|
|||
:background (my/color-value 'fg))
|
||||
(telega-entity-type-spoiler :background (my/color-value 'base8)))
|
||||
:config
|
||||
(when (file-exists-p "~/.guix-extra-profiles/emacs/emacs/bin/telega-server")
|
||||
(setq telega-server-command
|
||||
(expand-file-name
|
||||
"~/.guix-extra-profiles/emacs/emacs/bin/telega-server")))
|
||||
(setq telega-server-libs-prefix "/usr")
|
||||
|
||||
(setq telega-emoji-use-images nil)
|
||||
(setq telega-chat-fill-column 80)
|
||||
(setq telega-completing-read-function #'completing-read)
|
||||
|
|
@ -37,15 +35,6 @@
|
|||
telega-image-mode 3 "telega"
|
||||
telega-webpage-mode 3 "telega"))
|
||||
|
||||
(defun my/telega-server-build ()
|
||||
(interactive)
|
||||
(setq telega-server-libs-prefix
|
||||
(if (executable-find "guix")
|
||||
(string-trim
|
||||
(shell-command-to-string "guix build tdlib"))
|
||||
(expand-file-name "~/bin/td/build/res/usr/local")))
|
||||
(telega-server-build "CC=gcc"))
|
||||
|
||||
(add-hook 'telega-load-hook #'telega-mode-line-mode)
|
||||
(setq telega-mode-line-string-format
|
||||
'("["
|
||||
|
|
|
|||
|
|
@ -346,6 +346,7 @@
|
|||
|
||||
(use-package eshell-atuin
|
||||
:straight (:host github :repo "SqrtMinusOne/eshell-atuin")
|
||||
:when (executable-find "atuin")
|
||||
:after eshell
|
||||
:config
|
||||
(eshell-atuin-mode)
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
(advice-add 'wakatime-init :after
|
||||
(lambda ()
|
||||
(setq wakatime-cli-path (or
|
||||
(executable-find "wakatime")
|
||||
(executable-find "wakatime-cli")
|
||||
(expand-file-name "~/bin/wakatime-cli")))))
|
||||
(when (file-exists-p "~/.wakatime.cfg")
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
https://nixos.org/channels/nixpkgs-unstable nixpkgs
|
||||
4
.profile
4
.profile
|
|
@ -46,6 +46,10 @@ export JUPYTER_CONFIG_DIR=$HOME/.config/jupyter
|
|||
export GIO_EXTRA_MODULES=""
|
||||
# Misc settings:2 ends here
|
||||
|
||||
# [[file:Console.org::*Misc settings][Misc settings:3]]
|
||||
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
|
||||
# Misc settings:3 ends here
|
||||
|
||||
# [[file:Console.org::*Other package managers][Other package managers:1]]
|
||||
if [ -d "$HOME/.cask" ]; then
|
||||
export PATH="/home/pavel/.cask/bin:$PATH"
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ set -g status-left-length "100"
|
|||
setw -g window-status-activity-style "none,fg=#375cd8,bg=#f6ece8"
|
||||
setw -g window-status-separator ""
|
||||
setw -g window-status-style "none,fg=#222222,bg=#f6ece8"
|
||||
set -g status-left "#[fg=#fff8f0,bg=#375cd8] #S #[fg=#375cd8,bg=#cbcfff,nobold,nounderscore,noitalics]#[fg=#222222,bg=#cbcfff] #W #[fg=#cbcfff,bg=#f6ece8,nobold,nounderscore,noitalics]"
|
||||
set -g status-right "%-H:%M #[bg=#f6ece8,fg=#cbcfff,nobold,nounderscore,noitalics]#[fg=#222222,bg=#cbcfff] %a, %b %d #[bg=#cbcfff,fg=#375cd8,nobold,nounderscore,noitalics]#[fg=#fff8f0,bg=#375cd8] #H "
|
||||
setw -g window-status-format "#[fg=#f6ece8,bg=#cbcfff,nobold,nounderscore,noitalics]#[fg=#222222,bg=#cbcfff] #I #W #[align=left] #[fg=#cbcfff,bg=#f6ece8,nobold,nounderscore,noitalics]"
|
||||
set -g status-left "#[fg=#fff8f0,bg=#375cd8] #S #[fg=#375cd8,bg=#0000ff,nobold,nounderscore,noitalics]#[fg=#fff8f0,bg=#0000ff] #W #[fg=#0000ff,bg=#f6ece8,nobold,nounderscore,noitalics]"
|
||||
set -g status-right "%-H:%M #[bg=#f6ece8,fg=#0000ff,nobold,nounderscore,noitalics]#[fg=#fff8f0,bg=#0000ff] %a, %b %d #[bg=#0000ff,fg=#375cd8,nobold,nounderscore,noitalics]#[fg=#fff8f0,bg=#375cd8] #H "
|
||||
setw -g window-status-format "#[fg=#f6ece8,bg=#0000ff,nobold,nounderscore,noitalics]#[fg=#fff8f0,bg=#0000ff] #I #W #[align=left] #[fg=#0000ff,bg=#f6ece8,nobold,nounderscore,noitalics]"
|
||||
setw -g window-status-current-format "#[fg=#f6ece8,bg=#375cd8,nobold,nounderscore,noitalics]#[fg=#fff8f0,bg=#375cd8] #I #W #[fg=#375cd8,bg=#f6ece8,nobold,nounderscore,noitalics]"
|
||||
# UI:1 ends here
|
||||
|
|
|
|||
12
Arch.org
12
Arch.org
|
|
@ -110,6 +110,7 @@ api_key = <api-key>
|
|||
Then run =emacs= and make sure it starts. Run:
|
||||
- =M-x nerd-icons-install-fonts=
|
||||
- =M-x all-the-icons-install-fonts=
|
||||
- =M-x treesit-install-language-grammar=
|
||||
|
||||
Run =rclone config=, configure the remotes. Then =M-x my/index-commands-sync=.
|
||||
|
||||
|
|
@ -120,6 +121,11 @@ Create some directories:
|
|||
mkdir -p /home/pavel/Pictures/screenshots/
|
||||
#+end_src
|
||||
|
||||
Also run:
|
||||
#+begin_src bash
|
||||
sudo chmod +s /usr/bin/light
|
||||
#+end_src
|
||||
|
||||
* Metapac configuration
|
||||
[[https://github.com/ripytide/metapac][metapac]] is a declarative wrapper around different package managers, including [[https://wiki.archlinux.org/title/Pacman][pacman]] and [[https://github.com/Morganamilo/paru][paru]]. This means the required packages can be listed in configuration files and checked into version control.
|
||||
|
||||
|
|
@ -179,6 +185,7 @@ package_manager = "paru"
|
|||
Some necessary Arch packages:
|
||||
| Arch dependency |
|
||||
|---------------------|
|
||||
| amneziavpn-bin |
|
||||
| base |
|
||||
| base-devel |
|
||||
| decman |
|
||||
|
|
@ -200,12 +207,13 @@ Some necessary Arch packages:
|
|||
| pipewire-alsa |
|
||||
| pipewire-pulse |
|
||||
| pipewire-jack |
|
||||
| sof-firmware |
|
||||
| smartmontools |
|
||||
| vim |
|
||||
| xterm |
|
||||
| wget |
|
||||
| wireless_tools |
|
||||
| wpa_supplicant |
|
||||
| wireplumber |
|
||||
| yadm |
|
||||
| zram-generator |
|
||||
|
||||
|
|
@ -226,5 +234,5 @@ Various drivers, I'm not sure which I actually need, so...
|
|||
#+end_src
|
||||
|
||||
#+begin_src scheme :tangle .config/metapac/groups/system.toml :noweb yes
|
||||
<<packages()>ger>
|
||||
<<packages()>>
|
||||
#+end_src
|
||||
|
|
|
|||
40
Console.org
40
Console.org
|
|
@ -123,6 +123,13 @@ Somehow LibreOffice doesn't work without the following:
|
|||
#+begin_src sh
|
||||
export GIO_EXTRA_MODULES=""
|
||||
#+end_src
|
||||
|
||||
Not sure why this is necessary.
|
||||
|
||||
#+begin_src sh
|
||||
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
|
||||
#+end_src
|
||||
|
||||
** Other package managers
|
||||
Using other package managers requires some extra work.
|
||||
|
||||
|
|
@ -504,6 +511,11 @@ if type -q direnv
|
|||
end
|
||||
#+end_src
|
||||
** atuin
|
||||
|
||||
| Arch dependency |
|
||||
|-----------------|
|
||||
| atuin |
|
||||
|
||||
#+begin_src fish
|
||||
if type -q atuin
|
||||
set -gx ATUIN_NOBIND "true"
|
||||
|
|
@ -743,8 +755,8 @@ cyan = "<<get-color(name="cyan")>>"
|
|||
white = "<<get-color(name="white")>>"
|
||||
|
||||
[colors.primary]
|
||||
background: "<<get-color(name="bg")>>"
|
||||
foreground: "<<get-color(name="fg")>>"
|
||||
background = "<<get-color(name="bg")>>"
|
||||
foreground = "<<get-color(name="fg")>>"
|
||||
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
|
|
@ -890,9 +902,11 @@ See the [[https://github.com/ClementTsang/bottom/blob/master/sample_configs/defa
|
|||
#+begin_src toml :tangle .config/bottom/bottom.toml :noweb yes
|
||||
[flags]
|
||||
hide_table_gap = true # Remove space in tables
|
||||
color = "<<bottom-theme()>>"
|
||||
process_command = true
|
||||
|
||||
[styles]
|
||||
theme = "<<bottom-theme()>>"
|
||||
|
||||
[processes]
|
||||
columns = ["PID", "State", "Name", "CPU%", "Mem%", "R/s", "W/s", "User"]
|
||||
#+end_src
|
||||
|
|
@ -1061,6 +1075,26 @@ fi
|
|||
(job "0 * * * *" "autocommit /home/pavel/30-39\\ Life/32\\ org-mode/")
|
||||
(job "0,15,30,45 * * * *" "autocommit ~/.password-store")
|
||||
#+end_src
|
||||
|
||||
Systemd timers:
|
||||
#+begin_src conf :tangle .config/systemd/user/autocommit-org-mode.service
|
||||
[Unit]
|
||||
Description=Autocommit org-mode
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/bash /home/pavel/bin/scripts/autocommit "/home/pavel/30-39 Life/32 org-mode"
|
||||
#+end_src
|
||||
|
||||
#+begin_src conf :tangle .config/systemd/user/autocommit-password-store.service
|
||||
[Unit]
|
||||
Description=Autocommit .password-store
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/bash /home/pavel/bin/scripts/autocommit "/home/pavel/.password-store"
|
||||
#+end_src
|
||||
|
||||
* Arch settings
|
||||
#+NAME: packages
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
|
|
|
|||
|
|
@ -1217,11 +1217,12 @@ And the EXWM config itself.
|
|||
(defun my/exwm-init ()
|
||||
(exwm-workspace-switch 1)
|
||||
|
||||
(my/exwm-run-polybar)
|
||||
(my/exwm-set-wallpaper)
|
||||
(my/exwm-run-shepherd)
|
||||
(my/exwm-run-systemd)
|
||||
(my/run-in-background "gpgconf --reload gpg-agent")
|
||||
(my/exwm-run-polybar)
|
||||
(setenv "DBUS_SESSION_BUS_ADDRESS" "unix:path=/run/user/1000/bus")
|
||||
(when (my/is-arch)
|
||||
(my/run-in-background "set_layout")))
|
||||
|
||||
|
|
@ -2815,7 +2816,7 @@ afk_event=$(curl -s -X GET "http://localhost:5600/api/0/buckets/aw-watcher-afk_$
|
|||
status=$(echo ${afk_event} | jq -r '.[0].data.status')
|
||||
afk_time=$(echo "${afk_event}" | jq -r '.[0].duration' | xargs -I ! date -u -d @! +"%H:%M")
|
||||
|
||||
uptime=$(uptime | awk '{ print substr($3, 0, length($3) - 1) }' | xargs -I ! date -d ! +"%H:%M")
|
||||
uptime=$(date -ud @$(uptime -r | awk '{print $2}') +%H:%M)
|
||||
res="${afk_time} / ${uptime}"
|
||||
if [[ $status == 'afk' ]]; then
|
||||
# echo "%{u<<get-color(name="red")>>}%{+u} [AFK] $res %{u-}"
|
||||
|
|
@ -4225,6 +4226,7 @@ This section generates manifests for various desktop software that I'm using.
|
|||
|----------+------------------------|
|
||||
| browsers | ungoogled-chromium-bin |
|
||||
| browsers | firefox |
|
||||
| browsers | firefox-tridactyl |
|
||||
** Office & Multimedia
|
||||
| Category | Arch dependency |
|
||||
|----------+-----------------|
|
||||
|
|
|
|||
126
Emacs.org
126
Emacs.org
|
|
@ -2435,11 +2435,12 @@ Now, let's get the current color from =doom=. =doom-themes= provide =doom-color=
|
|||
And the same for =modus-themes=. =my/modus-color= has to accept the same arguments as I use for =my/doom-color= for backward compatibility, which requires a bit more tuning.
|
||||
#+begin_src emacs-lisp
|
||||
(defun my/modus-get-base (color)
|
||||
(let ((base-value (string-to-number (substring (symbol-name color) 4 5)))
|
||||
(base-start (cadr (assoc 'bg-main (modus-themes-get-theme-palette
|
||||
(or (my/modus-p) (my/ef-p))))))
|
||||
(base-end (cadr (assoc 'fg-dim (modus-themes-get-theme-palette
|
||||
(or (my/modus-p) (my/ef-p)))))))
|
||||
(let* ((base-value (string-to-number (substring (symbol-name color) 4 5)))
|
||||
(palette (modus-themes-get-theme-palette
|
||||
(or (my/modus-p) (my/ef-p))
|
||||
:with-overrides :with-user-palette))
|
||||
(base-start (cadr (assoc 'bg-main palette)))
|
||||
(base-end (cadr (assoc 'fg-dim palette))))
|
||||
(nth base-value (ct-gradient 9 base-start base-end t))))
|
||||
|
||||
(defun my/prot-color (color palette)
|
||||
|
|
@ -2479,10 +2480,11 @@ And the same for =modus-themes=. =my/modus-color= has to accept the same argumen
|
|||
(t (cadr (assoc color palette))))))
|
||||
|
||||
(defun my/modus-color (color)
|
||||
(my/prot-color color (modus-themes-get-theme-palette (my/modus-p))))
|
||||
(my/prot-color color (modus-themes-get-theme-palette
|
||||
(or (my/modus-p) (my/ef-p))
|
||||
:with-overrides :with-user-palette)))
|
||||
|
||||
(defun my/ef-color (color)
|
||||
(my/prot-color color (modus-themes-get-theme-palette (my/ef-p))))
|
||||
(defalias 'my/ef-color 'my/modus-color)
|
||||
#+end_src
|
||||
|
||||
Test the three functions.
|
||||
|
|
@ -6163,6 +6165,8 @@ We can get the clocked value in minutes with =org-clock-sum=. This weird functio
|
|||
(org-element-property :end element))))
|
||||
(with-temp-buffer
|
||||
(insert s)
|
||||
(let (org-mode-hook)
|
||||
(org-mode))
|
||||
(org-clock-sum)
|
||||
org-clock-file-total-minutes)))
|
||||
#+end_src
|
||||
|
|
@ -11742,7 +11746,7 @@ I don't have access to any proprietary APIs, but LLaMA 3.1 8b with [[https://oll
|
|||
:key (lambda () (my/password-store-get-field
|
||||
"My_Online/Accounts/openrouter" "api-key"))
|
||||
:stream t
|
||||
:models '("anthropic/claude-sonnet-4"
|
||||
:models '("anthropic/claude-sonnet-4.5"
|
||||
"qwen/qwen3-coder"
|
||||
"qwen/qwen3-coder:free"))
|
||||
(setq gptel--known-backends
|
||||
|
|
@ -12955,21 +12959,24 @@ def rclone_run_all(folders):
|
|||
total_transfers += res.get('stats', {}).get('transfers', 0)
|
||||
total_deleted += res.get('stats', {}).get('deletes', 0)
|
||||
total_renamed += res.get('stats', {}).get('renames', 0)
|
||||
|
||||
msg = ''
|
||||
level = 'normal'
|
||||
if total_transfers > 0:
|
||||
msg += f'''Transferred {total_transfers} files ({sizeof_fmt(total_bytes)})\n'''
|
||||
if total_deleted > 0:
|
||||
msg += f'''Deleted {total_transfers} files\n'''
|
||||
if total_renamed > 0:
|
||||
msg += f'''Renamed {total_renamed} files\n'''
|
||||
|
||||
if len(error_folders) > 0:
|
||||
error_msg = f'Sync error for remote {REMOTE}!'
|
||||
msg += '''\nSync errors for the following folders:'''
|
||||
for folder in error_folders:
|
||||
error_msg += '''\n- ''' + folder
|
||||
notify(f'rclone sync {REMOTE}', error_msg, level='critical')
|
||||
else:
|
||||
msg = ''
|
||||
if total_transfers > 0:
|
||||
msg += f'''Transferred {total_transfers} files ({sizeof_fmt(total_bytes)})\n'''
|
||||
if total_deleted > 0:
|
||||
msg += f'''Deleted {total_transfers} files\n'''
|
||||
if total_renamed > 0:
|
||||
msg += f'''Renamed {total_renamed} files\n'''
|
||||
if len(msg) > 0:
|
||||
notify(f'rclone sync {REMOTE}', msg)
|
||||
msg += '''\n- ''' + folder
|
||||
level = 'critical'
|
||||
|
||||
if len(msg) > 0:
|
||||
notify(f'rclone sync {REMOTE}', msg, level=level)
|
||||
|
||||
if __name__ == '__main__':
|
||||
rclone_run_all(FOLDERS)
|
||||
|
|
@ -13102,7 +13109,7 @@ I use [[https://wakatime.com/][WakaTime]] to track my coding activity, and I don
|
|||
|
||||
E.g. 10.03.R.01 Project Name -> Project Name."
|
||||
(replace-regexp-in-string
|
||||
(rx bos (+ (| num alpha "." "-")) space) "" name))
|
||||
(rx bos (+ num) (? "." (+ (| num alpha "." "-"))) space) "" name))
|
||||
|
||||
(defun my/index--wakatime-escape (string)
|
||||
"Escape STRING for use in a WakaTime config file."
|
||||
|
|
@ -13305,20 +13312,17 @@ The last piece is the navigation interface.
|
|||
Of course, plain dired does the job fine, thanks to the relatively low-depth filesystem structure. But I still want a navigation interface like =M-x projectile-switch-project=.
|
||||
|
||||
**** Navigation data
|
||||
There are two slight problems with that.
|
||||
One problem is that the index tree does not always have the full info. E.g., I have the =10.03.A Artifacts= folder, which I sync with MEGA and which has child folders like =10.03.A.01 smth= and so on. Names of the latter are not stored anywhere because I don't see the point, which means we have to extract that from the filesystem.
|
||||
|
||||
First, the index tree does not always have the full info. For instance, I have the =10.03.A Artifacts= folder, which I sync with MEGA and which has child folders like =10.03.A.01 smth= and so on. Names of the latter are not stored anywhere because I don't see the point, which means we have to extract that from the filesystem.
|
||||
|
||||
Second, as it turns out, there have to be two levels for navigation, which are delimited by the =project= property. I'm not sure if that the optimal way to implement Jonny.Decimal, but it works for me.
|
||||
|
||||
So, a function to tackle the first problem:
|
||||
So, a function to tackle this:
|
||||
#+begin_src emacs-lisp
|
||||
(defun my/index--nav-extend (name path)
|
||||
(defun my/index--nav-extend (name path &optional project)
|
||||
"Find all index-related files in PATH.
|
||||
|
||||
NAME is the name of the root index entry, e.g. \"10.01
|
||||
Something\". If PATH containts folders like \"10.01.01
|
||||
Something\", \"10.01.02 ...\", they will be returned.
|
||||
Something\", \"10.01.02 ...\", they will be returned. PROJECT is the
|
||||
project name.
|
||||
|
||||
The return value is a form as defined by `my/index--nav-get'."
|
||||
(when (file-directory-p path)
|
||||
|
|
@ -13348,7 +13352,7 @@ The return value is a form as defined by `my/index--nav-get'."
|
|||
|
||||
And one to get the navigation data structure.
|
||||
#+begin_src emacs-lisp
|
||||
(defun my/index--nav-get (tree &optional names)
|
||||
(defun my/index--nav-get (tree &optional names project)
|
||||
"Get the navigation structure from TREE.
|
||||
|
||||
TREE is a form as defined by `my/index--tree-get'. NAMES is a
|
||||
|
|
@ -13360,7 +13364,7 @@ The result is a list of alists with the following keys:
|
|||
(\"10.01 Something\" \"10.01.01 Something\")
|
||||
- `:path` - path to the folder, e.g.
|
||||
\"/path/10 stuff/10.01 Something/10.01.01 Something/\"
|
||||
- `:child-navs` - list of child navigation structures (optional)"
|
||||
- `:project` - project name."
|
||||
(seq-sort-by
|
||||
(lambda (item) (alist-get :path item))
|
||||
#'string-lessp
|
||||
|
|
@ -13368,28 +13372,24 @@ The result is a list of alists with the following keys:
|
|||
(lambda (acc elem)
|
||||
(let* ((name (alist-get :name elem))
|
||||
(path (alist-get :path elem)))
|
||||
(cond ((alist-get :project elem)
|
||||
(let ((current-nav `((:names . (,@names ,name))
|
||||
(:path . ,path))))
|
||||
(when-let (child-navs
|
||||
(and (alist-get :children elem)
|
||||
(my/index--nav-get (alist-get :children elem))))
|
||||
(setf (alist-get :child-navs current-nav) child-navs))
|
||||
(push current-nav acc)))
|
||||
((alist-get :children elem)
|
||||
(cond ((alist-get :children elem)
|
||||
(when-let (child-navs (my/index--nav-get
|
||||
(alist-get :children elem)
|
||||
`(,@names ,name)))
|
||||
`(,@names ,name)
|
||||
(or (when (alist-get :project elem)
|
||||
name)
|
||||
project)))
|
||||
(cl-loop for child-nav in child-navs
|
||||
do (push child-nav acc))))
|
||||
(t (if-let ((extended-nav (my/index--nav-extend name path)))
|
||||
(t (if-let ((extended-nav (my/index--nav-extend name path project)))
|
||||
(cl-loop for child-nav in extended-nav
|
||||
do (setf (alist-get :names child-nav)
|
||||
(append names (list name)
|
||||
(alist-get :names child-nav)))
|
||||
do (push child-nav acc))
|
||||
(push `((:names . (,@names ,name))
|
||||
(:path . ,path))
|
||||
(:path . ,path)
|
||||
(:project . ,project))
|
||||
acc))))
|
||||
acc))
|
||||
tree
|
||||
|
|
@ -13422,7 +13422,10 @@ As for Emacs interface, =completing-read= is sufficient, except that I don't wan
|
|||
NAV is a structure as defined by `my/index--nav-get'."
|
||||
(let* ((collection
|
||||
(mapcar (lambda (item)
|
||||
(cons (car (last (alist-get :names item)))
|
||||
(cons (let ((name (car (last (alist-get :names item)))))
|
||||
(if (alist-get :project item)
|
||||
(format "%s / %s" (alist-get :project item) name)
|
||||
name))
|
||||
(alist-get :path item)))
|
||||
nav))
|
||||
(vertico-sort-function nil))
|
||||
|
|
@ -13440,39 +13443,24 @@ NAV is a structure as defined by `my/index--nav-get'."
|
|||
(string-prefix-p (alist-get :path item) path))
|
||||
nav))
|
||||
|
||||
(defun my/index-nav (arg &optional func)
|
||||
(defun my/index-nav (&optional func)
|
||||
"Navigate the filesystem index.
|
||||
|
||||
If ARG is nil, navigate all levels sequentially from the top one.
|
||||
|
||||
If ARG is '(4), select another directory from the same level.
|
||||
|
||||
FUNC is the function to call with the selected path. It defaults
|
||||
to `dired' if used interactively."
|
||||
(interactive (list current-prefix-arg #'dired))
|
||||
(interactive (list #'dired))
|
||||
(let* ((nav (my/index--nav-retrive))
|
||||
(current-nav (my/index--nav-find-path
|
||||
nav (expand-file-name default-directory)))
|
||||
(current-child-navs (alist-get :child-navs current-nav)))
|
||||
(cond ((null arg)
|
||||
(let ((selected (my/index--nav-find-path
|
||||
nav
|
||||
(my/index--nav-prompt nav))))
|
||||
(if-let (child-navs (alist-get :child-navs selected))
|
||||
(funcall func (my/index--nav-prompt child-navs))
|
||||
(funcall func (alist-get :path selected)))))
|
||||
((and (equal arg '(4)) current-child-navs)
|
||||
(funcall func (my/index--nav-prompt current-child-navs)))
|
||||
((and (equal arg '(4)) (null current-child-navs))
|
||||
(funcall func (my/index--nav-prompt nav))))))
|
||||
(selected (my/index--nav-find-path
|
||||
nav
|
||||
(my/index--nav-prompt nav))))
|
||||
(funcall func (alist-get :path selected))))
|
||||
#+end_src
|
||||
|
||||
Finally, something that I can bind to a key.
|
||||
#+begin_src emacs-lisp
|
||||
(defun my/index-nav-with-select-file (arg)
|
||||
(interactive (list current-prefix-arg))
|
||||
(defun my/index-nav-with-select-file ()
|
||||
(interactive)
|
||||
(my/index-nav
|
||||
arg
|
||||
(lambda (dir)
|
||||
(let ((default-directory dir))
|
||||
(projectile-find-file)))))
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
# [[file:../../Mail.org::*DavMail][DavMail:1]]
|
||||
davmail.server=true
|
||||
davmail.mode=Auto
|
||||
davmail.url=https://mail.etu.ru/owa/
|
||||
|
||||
davmail.server.certificate.hash=0C:9E:CF:D3:62:26:DB:FA:F1:EE:36:9D:60:E7:31:71:CF:1F:92:85
|
||||
|
||||
davmail.caldavPort=1080
|
||||
davmail.imapPort=1143
|
||||
davmail.ldapPort=1389
|
||||
davmail.popPort=1110
|
||||
davmail.smtpPort=1025
|
||||
|
||||
davmail.imapAutoExpunge=false
|
||||
davmail.enableKeepalive=false
|
||||
# DavMail:1 ends here
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# [[file:../../Guix.org::*Slack][Slack:2]]
|
||||
echo "LSB Version: Hey. I spent an hour figuring out why Slack doesn't launch."
|
||||
echo "Distributor ID: It seems like it requires an lsb_release."
|
||||
echo "Description: But GNU Guix doesn't have one."
|
||||
echo "Release: 42.2"
|
||||
echo "Codename: n/a"
|
||||
# Slack:2 ends here
|
||||
|
|
@ -4,7 +4,7 @@ afk_event=$(curl -s -X GET "http://localhost:5600/api/0/buckets/aw-watcher-afk_$
|
|||
status=$(echo ${afk_event} | jq -r '.[0].data.status')
|
||||
afk_time=$(echo "${afk_event}" | jq -r '.[0].duration' | xargs -I ! date -u -d @! +"%H:%M")
|
||||
|
||||
uptime=$(uptime | awk '{ print substr($3, 0, length($3) - 1) }' | xargs -I ! date -d ! +"%H:%M")
|
||||
uptime=$(date -ud @$(uptime -r | awk '{print $2}') +%H:%M)
|
||||
res="${afk_time} / ${uptime}"
|
||||
if [[ $status == 'afk' ]]; then
|
||||
# echo "%{u#cc3333}%{+u} [AFK] $res %{u-}"
|
||||
|
|
|
|||
|
|
@ -1,39 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# [[file:../../Guix.org::*Activate profiles][Activate profiles:1]]
|
||||
GREEN='\033[1;32m'
|
||||
RED='\033[1;30m'
|
||||
NC='\033[0m'
|
||||
GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles
|
||||
|
||||
profiles=$*
|
||||
if [[ $# -eq 0 ]]; then
|
||||
profiles="$HOME/.config/guix/manifests/*.scm";
|
||||
fi
|
||||
|
||||
for profile in $profiles; do
|
||||
# Remove the path and file extension, if any
|
||||
profileName=$(basename $profile)
|
||||
profileName="${profileName%.*}"
|
||||
profilePath="$GUIX_EXTRA_PROFILES/$profileName"
|
||||
manifestPath=$HOME/.config/guix/manifests/$profileName.scm
|
||||
|
||||
if [ -f $manifestPath ]; then
|
||||
echo
|
||||
echo -e "${GREEN}Activating profile:" $manifestPath "${NC}"
|
||||
echo
|
||||
|
||||
mkdir -p $profilePath
|
||||
guix package --manifest=$manifestPath --profile="$profilePath/$profileName"
|
||||
|
||||
# Source the new profile
|
||||
GUIX_PROFILE="$profilePath/$profileName"
|
||||
if [ -f $GUIX_PROFILE/etc/profile ]; then
|
||||
. "$GUIX_PROFILE"/etc/profile
|
||||
else
|
||||
echo -e "${RED}Couldn't find profile:" $GUIX_PROFILE/etc/profile "${NC}"
|
||||
fi
|
||||
else
|
||||
echo "No profile found at path" $profilePath
|
||||
fi
|
||||
done
|
||||
# Activate profiles:1 ends here
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# [[file:../../Desktop.org::*ActivityWatch][ActivityWatch:2]]
|
||||
sleep 5
|
||||
aw-watcher-afk
|
||||
# ActivityWatch:2 ends here
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# [[file:../../Guix.org::*Turn off Guix profiles][Turn off Guix profiles:1]]
|
||||
export PATH=$(echo $PATH | tr ":" "\n" | grep -vE "guix|nix|gnu" | tr "\n" ":")
|
||||
# Turn off Guix profiles:1 ends here
|
||||
Loading…
Add table
Reference in a new issue