Compare commits
47 Commits
42f33547a4
...
main
Author | SHA1 | Date | |
---|---|---|---|
4d04b14349 | |||
f93d2a6558 | |||
cd7428e975 | |||
914a103b10 | |||
0b8154037e | |||
cf31104779 | |||
e21550bc6f | |||
9ceb9dbd33 | |||
0e6199ab8b | |||
6c35aed2c6 | |||
50bd201ece | |||
e088ea533f | |||
8a62c5280c | |||
79225406e8 | |||
25665457f4 | |||
f2aa8f935c | |||
8a61a535b9 | |||
d9b03108b1 | |||
8bdd17332f | |||
3aa5120c24 | |||
186f9af806 | |||
a83355aa32 | |||
e01793f1bf | |||
5547096020 | |||
46a97e6543 | |||
b3eb87f5ac | |||
35d490e7fb | |||
a542cb199b | |||
20e21fbc3a | |||
3ff0f1ecb2 | |||
8104fbe6a6 | |||
f88f04c58e | |||
db21668969 | |||
0e1adcd65d | |||
ffa5843046 | |||
f88cda4a67 | |||
d917cec616 | |||
264eec4c48 | |||
5523e74082 | |||
29d0270e76 | |||
a557035b41 | |||
6203f3833a | |||
2f977782b5 | |||
2edfb81c35 | |||
5b6224fa8f | |||
08d5de8ada | |||
7a8a14bb1c |
21
.gitignore
vendored
Normal file
21
.gitignore
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
home/default/.config/shell/zshnameddirrc
|
||||
home/default/.config/shell/shortcutrc
|
||||
home/default/.config/shell/privrc
|
||||
*.log
|
||||
notes.org
|
||||
home/default/.config/mpd/mpd.db
|
||||
home/default/.config/mpd/mpd.pid
|
||||
home/default/.config/mpd/sticker.sql
|
||||
home/default/.config/mpd/mpd.state
|
||||
home/default/.config/gtk-3.0/bookmarks
|
||||
home/default/.config/zsh/.zcompdump
|
||||
home/default/.local/bin/start-tasks
|
||||
home/default/.local/sec
|
||||
home/default/.config/newsboat/urls
|
||||
home/default/.config/doom/bookmarks
|
||||
home/default/.config/doom/custom.el
|
||||
home/default/.config/doom/config/+priv-config.el
|
||||
home/default/.config/sway/priv
|
||||
home/default/.config/river/init-priv
|
||||
home/default/.doom.d/bookmarks
|
||||
home/default/.doom.d/custom.el
|
1252
docs/instructions.html
Normal file
1252
docs/instructions.html
Normal file
File diff suppressed because it is too large
Load Diff
14
etc/interception/dual-function-keys/keyboard.yaml
Normal file
14
etc/interception/dual-function-keys/keyboard.yaml
Normal file
@ -0,0 +1,14 @@
|
||||
# lives under /etc/interception/dual-function-keys/keyboard.yaml
|
||||
|
||||
|
||||
TIMING:
|
||||
TAP_MILLISEC: 200
|
||||
DOUBLE_TAP_MILLISEC: 100
|
||||
|
||||
MAPPINGS:
|
||||
- KEY: KEY_CAPSLOCK
|
||||
TAP: KEY_ESC
|
||||
HOLD: KEY_RIGHTMETA
|
||||
- KEY: KEY_ESC
|
||||
TAP: KEY_CAPSLOCK
|
||||
HOLD: KEY_CAPSLOCK
|
9
etc/interception/udevmon.yaml
Normal file
9
etc/interception/udevmon.yaml
Normal file
@ -0,0 +1,9 @@
|
||||
# lives under /etc/interception/udevmon.yaml
|
||||
#
|
||||
# Keyboard configuration. Important parts are `NAME:` and `EV_KEY`. Get the name of the devices you want this to apply to by using the command `evtest`, you should see the name of your keyboard somewhere, type the number and follow the instructions.
|
||||
|
||||
- JOB: "intercept -g $DEVNODE | dual-function-keys -c /etc/interception/dual-function-keys/keyboard.yaml | uinput -d $DEVNODE"
|
||||
DEVICE:
|
||||
NAME: .*[Kk]eyboard.*
|
||||
EVENTS:
|
||||
EV_KEY: [KEY_CAPSLOCK, KEY_ENTER, KEY_LEFTSHIFT, KEY_RIGHTSHIFT, KEY_LEFTCTRL, KEY_RIGHTCTRL, KEY_TAB]
|
12
etc/systemd/system/radcard.service
Normal file
12
etc/systemd/system/radcard.service
Normal file
@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Control Radeon Card
|
||||
After=getty.target
|
||||
|
||||
[Service]
|
||||
Restart=on-failure
|
||||
Type=simple
|
||||
RestartSec=10
|
||||
ExecStart=/usr/local/bin/radcard-autoset.sh
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
10
etc/systemd/system/udevmon.service
Normal file
10
etc/systemd/system/udevmon.service
Normal file
@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
Description=udevmon
|
||||
Wants=systemd-udev-settle.service
|
||||
After=systemd-udev-settle.service
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/nice -n 20 udevmon -c /etc/interception/udevmon.yaml
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
@ -4,14 +4,22 @@
|
||||
<alias>
|
||||
<family>monospace</family>
|
||||
<prefer>
|
||||
<family>Terminus</family>
|
||||
<family>DejaVu Sans Mono</family>
|
||||
<family>Noto Sans Mono</family>
|
||||
<family>Unifont-JP</family>
|
||||
<family>Unifont Upper</family>
|
||||
<family>Unifont CSUR</family>
|
||||
<family>Noto Sans Mono</family>
|
||||
<family>Terminus</family>
|
||||
<family>Liberation Mono</family>
|
||||
<family>FontAwesome</family>
|
||||
<family>Braille</family>
|
||||
<family>Symbols Nerd Font Mono</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>sans-serif</family>
|
||||
<prefer>
|
||||
<family>Symbols Nerd Font</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
</fontconfig>
|
||||
|
@ -1,188 +1,125 @@
|
||||
# -*- conf -*-
|
||||
|
||||
# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
|
||||
# term=foot (or xterm-256color if built with -Dterminfo=disabled)
|
||||
# login-shell=no
|
||||
|
||||
# app-id=foot
|
||||
# title=foot
|
||||
# locked-title=no
|
||||
|
||||
font=monospace:size=12
|
||||
# font-bold=<bold variant of regular font>
|
||||
# font-italic=<italic variant of regular font>
|
||||
# font-bold-italic=<bold+italic variant of regular font>
|
||||
# line-height=<font metrics>
|
||||
# letter-spacing=0
|
||||
# horizontal-letter-offset=0
|
||||
# vertical-letter-offset=0
|
||||
# underline-offset=<font metrics>
|
||||
# box-drawings-uses-font-glyphs=yes
|
||||
font=monospace:size=10
|
||||
dpi-aware=no
|
||||
|
||||
# initial-window-size-pixels=700x500 # Or,
|
||||
# initial-window-size-chars=<COLSxROWS>
|
||||
# initial-window-mode=windowed
|
||||
pad= 8x8 # optionally append 'center'
|
||||
# resize-delay-ms=100
|
||||
|
||||
# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}
|
||||
|
||||
# bold-text-in-bright=no
|
||||
# word-delimiters=,│`|:"'()[]{}<>
|
||||
# selection-target=primary
|
||||
# workers=<number of logical CPUs>
|
||||
|
||||
[environment]
|
||||
# name=value
|
||||
|
||||
[bell]
|
||||
# urgent=no
|
||||
# notify=no
|
||||
# command=
|
||||
# command-focused=no
|
||||
|
||||
[scrollback]
|
||||
# lines=1000
|
||||
# multiplier=3.0
|
||||
# indicator-position=relative
|
||||
# indicator-format=
|
||||
|
||||
pad= 8x8
|
||||
pad= 16x16
|
||||
[url]
|
||||
launch=xdg-open ${url}
|
||||
# label-letters=sadfjklewcmpgh
|
||||
# osc8-underline=url-mode
|
||||
# protocols=http, https, ftp, ftps, file, gemini, gopher
|
||||
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
|
||||
|
||||
# Tomorrow Light
|
||||
##[cursor]
|
||||
##color=373b41
|
||||
|
||||
|
||||
## dimmed colors (see foot.ini(5) man page)
|
||||
# dim0=<not set>
|
||||
# ...
|
||||
# dim7=<not-set>
|
||||
#[colors]
|
||||
#foreground=373b41
|
||||
#background=ffffff
|
||||
#regular0=1d1f21
|
||||
#regular1=cc6666
|
||||
#regular2=b5bd68
|
||||
#regular3=f0c674
|
||||
#regular4=81a2be
|
||||
#regular5=b294bb
|
||||
#regular6=8abeb7
|
||||
#regular7=c5c8c6
|
||||
#bright0=969896
|
||||
#bright1=cc6666
|
||||
#bright2=b5bd68
|
||||
#bright3=f0c674
|
||||
#bright4=81a2be
|
||||
#bright5=b294bb
|
||||
#bright6=8abeb7
|
||||
#bright7=ffffff
|
||||
#
|
||||
#color16=#de935f
|
||||
#color17=#a3685a
|
||||
#color18=#282a2e
|
||||
#color19=#373b41
|
||||
#color20=#b4b7b4
|
||||
#color21=#e0e0e0
|
||||
|
||||
## 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-typing=no
|
||||
# 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
|
||||
# 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
|
||||
# show-urls-launch=Control+Shift+u
|
||||
# show-urls-copy=none
|
||||
# show-urls-persistent=none
|
||||
# prompt-prev=Control+Shift+z
|
||||
# prompt-next=Control+Shift+x
|
||||
# unicode-input=none
|
||||
# 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-to-word-boundary=Control+w
|
||||
# extend-to-next-whitespace=Control+Shift+w
|
||||
# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
|
||||
# primary-paste=Shift+Insert
|
||||
# unicode-input=none
|
||||
|
||||
[url-bindings]
|
||||
# cancel=Control+g Control+c Control+d Escape
|
||||
# toggle-url-visible=t
|
||||
|
||||
[text-bindings]
|
||||
# \x03=Mod4+c # Map Super+c -> Ctrl+c
|
||||
|
||||
[mouse-bindings]
|
||||
# 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-row=BTN_LEFT-3
|
||||
|
||||
# vim: ft=dosini
|
||||
|
||||
# -*- conf -*-
|
||||
# Rose-Piné (with black background)
|
||||
# Tomorrow Night (grey background)
|
||||
|
||||
[cursor]
|
||||
color=191724 e0def4
|
||||
#color=c5c8c6
|
||||
|
||||
[colors]
|
||||
background=000000
|
||||
foreground=e0def4
|
||||
regular0=26233a # black
|
||||
regular1=eb6f92 # red
|
||||
regular2=31748f # green
|
||||
regular3=f6c177 # yellow
|
||||
regular4=9ccfd8 # blue
|
||||
regular5=c4a7e7 # magenta
|
||||
regular6=ebbcba # cyan
|
||||
regular7=e0def4 # white
|
||||
#alpha=0.80
|
||||
# tomorrow night default
|
||||
background=1d1f21
|
||||
#background=000000
|
||||
# grey
|
||||
#background=161616
|
||||
foreground=c5c8c6
|
||||
|
||||
bright0=6e6a86 # bright black
|
||||
bright1=eb6f92 # bright red
|
||||
bright2=31748f # bright green
|
||||
bright3=f6c177 # bright yellow
|
||||
bright4=9ccfd8 # bright blue
|
||||
bright5=c4a7e7 # bright magenta
|
||||
bright6=ebbcba # bright cyan
|
||||
bright7=e0def4 # bright white
|
||||
alpha=0.9
|
||||
regular0=1d1f21
|
||||
regular1=cc6666
|
||||
regular2=b5bd68
|
||||
regular3=f0c674
|
||||
regular4=81a2be
|
||||
regular5=b294bb
|
||||
regular6=8abeb7
|
||||
regular7=c5c8c6
|
||||
bright0=969896
|
||||
bright1=cc6666
|
||||
bright2=b5bd68
|
||||
bright3=f0c674
|
||||
bright4=81a2be
|
||||
bright5=b294bb
|
||||
bright6=8abeb7
|
||||
bright7=ffffff
|
||||
|
||||
|
||||
# Catpuccin (with grey background)
|
||||
#[cursor]
|
||||
#color=1A1826 D9E0EE
|
||||
#
|
||||
#[colors]
|
||||
##alpha=0.85
|
||||
#foreground=ffffff
|
||||
##background=000000
|
||||
#background=222222
|
||||
#regular0=6E6C7E # black
|
||||
#regular1=F28FAD # red
|
||||
#regular2=ABE9B3 # green
|
||||
#regular3=FAE3B0 # yellow
|
||||
#regular4=96CDFB # blue
|
||||
#regular5=F5C2E7 # magenta
|
||||
#regular6=89DCEB # cyan
|
||||
#regular7=D9E0EE # white
|
||||
#bright0=988BA2 # bright black
|
||||
#bright1=F28FAD # bright red
|
||||
#bright2=ABE9B3 # bright green
|
||||
#bright3=FAE3B0 # bright yellow
|
||||
#bright4=96CDFB # bright blue
|
||||
#bright5=F5C2E7 # bright magenta
|
||||
#bright6=89DCEB # bright cyan
|
||||
#bright7=D9E0EE # bright white
|
||||
|
||||
# PaperColorDark
|
||||
# Palette based on https://github.com/NLKNguyen/papercolor-theme
|
||||
|
||||
#[cursor]
|
||||
# color=1c1c1c eeeeee
|
||||
#
|
||||
#[colors]
|
||||
##alpha=0.80
|
||||
# background=1c1c1c
|
||||
# foreground=eeeeee
|
||||
# regular0=1c1c1c # black
|
||||
# regular1=af005f # red
|
||||
# regular2=5faf00 # green
|
||||
# regular3=d7af5f # yellow
|
||||
# regular4=5fafd7 # blue
|
||||
# regular5=808080 # magenta
|
||||
# regular6=d7875f # cyan
|
||||
# regular7=d0d0d0 # white
|
||||
# bright0=bcbcbc # bright black
|
||||
# bright1=5faf5f # bright red
|
||||
# bright2=afd700 # bright green
|
||||
# bright3=af87d7 # bright yellow
|
||||
# bright4=ffaf00 # bright blue
|
||||
# bright5=ff5faf # bright magenta
|
||||
# bright6=00afaf # bright cyan
|
||||
# bright7=5f8787 # bright white
|
||||
|
22
home/default/.config/gtk-3.0/gtk.css
Normal file
22
home/default/.config/gtk-3.0/gtk.css
Normal file
@ -0,0 +1,22 @@
|
||||
/* No (default) titlebar on wayland */
|
||||
/*headerbar.titlebar.default-decoration {
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
margin: 0 0 -17px 0;
|
||||
border: 0;
|
||||
min-height: 0;
|
||||
font-size: 0;
|
||||
box-shadow: none;
|
||||
}*/
|
||||
|
||||
/* rm -rf window shadows */
|
||||
/*window.csd, /* gtk4? */
|
||||
/*window.csd decoration { /* gtk3 */
|
||||
/* box-shadow: none;
|
||||
}*/
|
||||
.titlebar, .css, headerbar {
|
||||
background-image:none;
|
||||
background-color:transparent;
|
||||
margin-top:-100px;
|
||||
margin-bottom:50px;
|
||||
}
|
@ -1,27 +1,7 @@
|
||||
profile {
|
||||
output HDMI-A-1 scale 1 mode 1366x768 position 0,0
|
||||
output DVI-D-1 scale 1 mode 1280x1024 position 1366,0
|
||||
exec swaymsg workspace 1, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 2, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 3, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 4, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 5, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 6, move workspace to DVI-D-1
|
||||
exec swaymsg workspace 7, move workspace to DVI-D-1
|
||||
exec swaymsg workspace 8, move workspace to DVI-D-1
|
||||
exec swaymsg workspace 9, move workspace to DVI-D-1
|
||||
exec swaymsg workspace 10, move workspace to DVI-D-1
|
||||
output HDMI-A-1 enable scale 1 mode 1920x1080 position 0,0
|
||||
output DVI-D-1 enable scale 1 mode 1280x1024 position 1920,0
|
||||
}
|
||||
profile {
|
||||
output HDMI-A-1 scale 1 mode 1366x768
|
||||
exec swaymsg workspace 1, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 2, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 3, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 4, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 5, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 6, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 7, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 8, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 9, move workspace to HDMI-A-1
|
||||
exec swaymsg workspace 10, move workspace to HDMI-A-1
|
||||
output HDMI-A-1 enable scale 1 mode 1920x1080
|
||||
}
|
||||
|
7
home/default/.config/kanshi/config-single
Normal file
7
home/default/.config/kanshi/config-single
Normal file
@ -0,0 +1,7 @@
|
||||
profile {
|
||||
output HDMI-A-1 enable scale 1 mode 1920x1080 position 0,0
|
||||
output DVI-D-1 disable
|
||||
}
|
||||
profile {
|
||||
output HDMI-A-1 enable scale 1 mode 1920x1080
|
||||
}
|
@ -9,13 +9,15 @@ set icons
|
||||
set period 1
|
||||
set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml"
|
||||
set previewer '~/.config/lf/scope'
|
||||
set autoquit on
|
||||
set autoquit true
|
||||
|
||||
# cmds/functions
|
||||
cmd open ${{
|
||||
case "$(printf "%s\n" "$f" | awk '{print tolower($0)}')" in
|
||||
*.kra|*.krz|*.ora) setsid -f krita $f >/dev/null 2>&1 && exit 0 ;;
|
||||
*.xlsx|*.sc) setsid -f libreoffice $f >/dev/null 2>&1 && exit 0 ;;
|
||||
*.xlsx) setsid -f libreoffice $f >/dev/null 2>&1 && exit 0 ;;
|
||||
*.sc) sc-im $f && exit 0;;
|
||||
#*.org) setsid -f $EDITOR $f >/dev/null 2>&1 && exit 0 ;;
|
||||
esac
|
||||
case $(file --mime-type "$(readlink -f $f)" -b) in
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;;
|
||||
@ -32,7 +34,9 @@ cmd open ${{
|
||||
;;
|
||||
audio/*) mpv --audio-display=no $f ;;
|
||||
video/*|application/vnd.rn-realmedia) setsid -f mpv $f -quiet >/dev/null 2>&1 ;;
|
||||
application/pdf|application/vnd.djvu|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;;
|
||||
application/pdf|application/vnd.djvu) setsid -f zathura $fx >/dev/null 2>&1 ;;
|
||||
application/epub*) setsid -f com.github.johnfactotum.Foliate $fx >/dev/null 2>&1 ;;
|
||||
#application/epub*) setsid -f mupdf -U ~/epub.css $fx >/dev/null 2>&1 ;;
|
||||
application/pgp-encrypted) $EDITOR $fx ;;
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document|application/vnd.oasis.opendocument.text) setsid -f lowriter $fx >/dev/null 2>&1 ;;
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|application/octet-stream|application/vnd.oasis.opendocument.spreadsheet|application/vnd.oasis.opendocument.spreadsheet-template) setsid -f localc $fx >/dev/null 2>&1 ;;
|
||||
@ -121,7 +125,7 @@ map V push :!nvim<space>
|
||||
|
||||
map W $setsid -f $TERMINAL >/dev/null 2>&1
|
||||
|
||||
map Y $printf "%s" "$fx" | xclip -selection clipboard
|
||||
#map Y $printf "%s" "$fx" | xclip -selection clipboard
|
||||
map Y $wl-copy < "$fx"
|
||||
|
||||
# Source Bookmarks
|
||||
source "~/.config/lf/shortcutrc"
|
||||
map <c-f> $setsid -f thunar . ; kill @#
|
||||
|
@ -53,7 +53,8 @@ case "$(file --dereference --brief --mime-type -- "$1")" in
|
||||
mediainfo "$1";;
|
||||
text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
|
||||
text/troff) man ./ "$1" | col -b ;;
|
||||
text/* | */xml | application/json) bat -p --terminal-width "$(($4-2))" -f "$1" ;;
|
||||
text/* | */xml | application/json) highlight --out-format=ansi --width "$(($4-2))" "$1" ;;
|
||||
#text/* | */xml | application/json) bat -p --terminal-width "$(($4-2))" -f "$1" ;;
|
||||
audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
|
||||
video/* )
|
||||
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||
|
32
home/default/.config/mimeapps.list
Normal file
32
home/default/.config/mimeapps.list
Normal file
@ -0,0 +1,32 @@
|
||||
[Default Applications]
|
||||
|
||||
# xdg-open will use these settings to determine how to open filetypes.
|
||||
# These .desktop entries can also be seen and changed in ~/.local/share/applications/
|
||||
|
||||
image/jpeg=img.desktop
|
||||
image/png=img.desktop
|
||||
image/x-png=img.desktop
|
||||
image/gif=img.desktop
|
||||
text/x-shellscript=text.desktop
|
||||
x-scheme-handler/magnet=torrent.desktop
|
||||
application/x-bittorrent=torrent.desktop
|
||||
x-scheme-handler/mailto=mail.desktop
|
||||
text/plain=text.desktop
|
||||
application/postscript=pdf.desktop
|
||||
application/pdf=pdf.desktop
|
||||
application/vnd.comicbook+zip=pdf.desktop
|
||||
application/vnd.comicbook-rar=pdf.desktop
|
||||
image/png=img.desktop
|
||||
image/x-png=img.desktop
|
||||
image/jpg=img.desktop
|
||||
image/jpeg=img.desktop
|
||||
image/gif=img.desktop
|
||||
application/rss+xml=rss.desktop
|
||||
video/x-matroska=video.desktop
|
||||
video/mp4=video.desktop
|
||||
x-scheme-handler/lbry=lbry.desktop
|
||||
inode/directory=file.desktop
|
||||
|
||||
# other
|
||||
x-scheme-handler/https=io.gitlab.librewolf-community.desktop
|
||||
x-scheme-handler/http=io.gitlab.librewolf-community.desktop
|
27
home/default/.config/mpd/mpd.conf
Normal file
27
home/default/.config/mpd/mpd.conf
Normal file
@ -0,0 +1,27 @@
|
||||
# mpd.conf
|
||||
|
||||
music_directory "~/Music"
|
||||
playlist_directory "~/Music/playlists"
|
||||
pid_file "~/.config/mpd/mpd.pid"
|
||||
db_file "~/.config/mpd/mpd.db"
|
||||
state_file "~/.config/mpd/mpd.state"
|
||||
sticker_file "~/.config/mpd/sticker.sql"
|
||||
log_file "syslog"
|
||||
auto_update "yes"
|
||||
bind_to_address "localhost"
|
||||
port "6600"
|
||||
volume_normalization "yes"
|
||||
|
||||
audio_output {
|
||||
type "pulse"
|
||||
name "pulse"
|
||||
#type "alsa"
|
||||
#name "ALSA"
|
||||
}
|
||||
|
||||
audio_output {
|
||||
type "fifo"
|
||||
name "Visualizer feed"
|
||||
path "/tmp/mpd.fifo"
|
||||
format "44100:16:2"
|
||||
}
|
4
home/default/.config/mpv/input.conf
Normal file
4
home/default/.config/mpv/input.conf
Normal file
@ -0,0 +1,4 @@
|
||||
l seek 5
|
||||
h seek -5
|
||||
j seek -60
|
||||
k seek 60
|
1
home/default/.config/mpv/mpv.conf
Normal file
1
home/default/.config/mpv/mpv.conf
Normal file
@ -0,0 +1 @@
|
||||
save-position-on-quit
|
479
home/default/.config/ncmpcpp/bindings
Normal file
479
home/default/.config/ncmpcpp/bindings
Normal file
@ -0,0 +1,479 @@
|
||||
##############################################################
|
||||
## This is the example bindings file. Copy it to ##
|
||||
## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ##
|
||||
## and set up your preferences ##
|
||||
##############################################################
|
||||
#
|
||||
#def_key "mouse"
|
||||
# mouse_event
|
||||
#
|
||||
#def_key "up"
|
||||
# scroll_up
|
||||
#
|
||||
#def_key "shift-up"
|
||||
# select_item
|
||||
# scroll_up
|
||||
#
|
||||
#def_key "down"
|
||||
# scroll_down
|
||||
#
|
||||
#def_key "shift-down"
|
||||
# select_item
|
||||
# scroll_down
|
||||
#
|
||||
#def_key "["
|
||||
# scroll_up_album
|
||||
#
|
||||
#def_key "]"
|
||||
# scroll_down_album
|
||||
#
|
||||
#def_key "{"
|
||||
# scroll_up_artist
|
||||
#
|
||||
#def_key "}"
|
||||
# scroll_down_artist
|
||||
#
|
||||
#def_key "page_up"
|
||||
# page_up
|
||||
#
|
||||
#def_key "page_down"
|
||||
# page_down
|
||||
#
|
||||
#def_key "home"
|
||||
# move_home
|
||||
#
|
||||
#def_key "end"
|
||||
# move_end
|
||||
#
|
||||
#def_key "insert"
|
||||
# select_item
|
||||
#
|
||||
#def_key "enter"
|
||||
# enter_directory
|
||||
#
|
||||
#def_key "enter"
|
||||
# toggle_output
|
||||
#
|
||||
#def_key "enter"
|
||||
# run_action
|
||||
#
|
||||
#def_key "enter"
|
||||
# play_item
|
||||
#
|
||||
#def_key "space"
|
||||
# add_item_to_playlist
|
||||
#
|
||||
#def_key "space"
|
||||
# toggle_lyrics_update_on_song_change
|
||||
#
|
||||
#def_key "space"
|
||||
# toggle_visualization_type
|
||||
#
|
||||
#def_key "delete"
|
||||
# delete_playlist_items
|
||||
#
|
||||
#def_key "delete"
|
||||
# delete_browser_items
|
||||
#
|
||||
#def_key "delete"
|
||||
# delete_stored_playlist
|
||||
#
|
||||
#def_key "right"
|
||||
# next_column
|
||||
#
|
||||
#def_key "right"
|
||||
# slave_screen
|
||||
#
|
||||
#def_key "right"
|
||||
# volume_up
|
||||
#
|
||||
#def_key "+"
|
||||
# volume_up
|
||||
#
|
||||
#def_key "left"
|
||||
# previous_column
|
||||
#
|
||||
#def_key "left"
|
||||
# master_screen
|
||||
#
|
||||
#def_key "left"
|
||||
# volume_down
|
||||
#
|
||||
#def_key "-"
|
||||
# volume_down
|
||||
#
|
||||
#def_key ":"
|
||||
# execute_command
|
||||
#
|
||||
#def_key "tab"
|
||||
# next_screen
|
||||
#
|
||||
#def_key "shift-tab"
|
||||
# previous_screen
|
||||
#
|
||||
#def_key "f1"
|
||||
# show_help
|
||||
#
|
||||
#def_key "1"
|
||||
# show_playlist
|
||||
#
|
||||
#def_key "2"
|
||||
# show_browser
|
||||
#
|
||||
#def_key "2"
|
||||
# change_browse_mode
|
||||
#
|
||||
#def_key "3"
|
||||
# show_search_engine
|
||||
#
|
||||
#def_key "3"
|
||||
# reset_search_engine
|
||||
#
|
||||
#def_key "4"
|
||||
# show_media_library
|
||||
#
|
||||
#def_key "4"
|
||||
# toggle_media_library_columns_mode
|
||||
#
|
||||
#def_key "5"
|
||||
# show_playlist_editor
|
||||
#
|
||||
#def_key "6"
|
||||
# show_tag_editor
|
||||
#
|
||||
#def_key "7"
|
||||
# show_outputs
|
||||
#
|
||||
#def_key "8"
|
||||
# show_visualizer
|
||||
#
|
||||
#def_key "="
|
||||
# show_clock
|
||||
#
|
||||
#def_key "@"
|
||||
# show_server_info
|
||||
#
|
||||
#def_key "s"
|
||||
# stop
|
||||
#
|
||||
#def_key "p"
|
||||
# pause
|
||||
#
|
||||
#def_key ">"
|
||||
# next
|
||||
#
|
||||
#def_key "<"
|
||||
# previous
|
||||
#
|
||||
#def_key "ctrl-h"
|
||||
# jump_to_parent_directory
|
||||
#
|
||||
#def_key "ctrl-h"
|
||||
# replay_song
|
||||
#
|
||||
#def_key "backspace"
|
||||
# jump_to_parent_directory
|
||||
#
|
||||
#def_key "backspace"
|
||||
# replay_song
|
||||
#
|
||||
#def_key "f"
|
||||
# seek_forward
|
||||
#
|
||||
#def_key "b"
|
||||
# seek_backward
|
||||
#
|
||||
#def_key "r"
|
||||
# toggle_repeat
|
||||
#
|
||||
#def_key "z"
|
||||
# toggle_random
|
||||
#
|
||||
#def_key "y"
|
||||
# save_tag_changes
|
||||
#
|
||||
#def_key "y"
|
||||
# start_searching
|
||||
#
|
||||
#def_key "y"
|
||||
# toggle_single
|
||||
#
|
||||
#def_key "R"
|
||||
# toggle_consume
|
||||
#
|
||||
#def_key "Y"
|
||||
# toggle_replay_gain_mode
|
||||
#
|
||||
#def_key "T"
|
||||
# toggle_add_mode
|
||||
#
|
||||
#def_key "|"
|
||||
# toggle_mouse
|
||||
#
|
||||
#def_key "#"
|
||||
# toggle_bitrate_visibility
|
||||
#
|
||||
#def_key "Z"
|
||||
# shuffle
|
||||
#
|
||||
#def_key "x"
|
||||
# toggle_crossfade
|
||||
#
|
||||
#def_key "X"
|
||||
# set_crossfade
|
||||
#
|
||||
#def_key "u"
|
||||
# update_database
|
||||
#
|
||||
#def_key "ctrl-s"
|
||||
# sort_playlist
|
||||
#
|
||||
#def_key "ctrl-s"
|
||||
# toggle_browser_sort_mode
|
||||
#
|
||||
#def_key "ctrl-s"
|
||||
# toggle_media_library_sort_mode
|
||||
#
|
||||
#def_key "ctrl-r"
|
||||
# reverse_playlist
|
||||
#
|
||||
#def_key "ctrl-f"
|
||||
# apply_filter
|
||||
#
|
||||
#def_key "ctrl-_"
|
||||
# select_found_items
|
||||
#
|
||||
#def_key "/"
|
||||
# find
|
||||
#
|
||||
#def_key "/"
|
||||
# find_item_forward
|
||||
#
|
||||
#def_key "?"
|
||||
# find
|
||||
#
|
||||
#def_key "?"
|
||||
# find_item_backward
|
||||
#
|
||||
#def_key "."
|
||||
# next_found_item
|
||||
#
|
||||
#def_key ","
|
||||
# previous_found_item
|
||||
#
|
||||
#def_key "w"
|
||||
# toggle_find_mode
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_song
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_library_tag
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_library_album
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_directory_name
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_playlist_name
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_lyrics
|
||||
#
|
||||
#def_key "i"
|
||||
# show_song_info
|
||||
#
|
||||
#def_key "I"
|
||||
# show_artist_info
|
||||
#
|
||||
#def_key "g"
|
||||
# jump_to_position_in_song
|
||||
#
|
||||
#def_key "l"
|
||||
# show_lyrics
|
||||
#
|
||||
#def_key "ctrl-v"
|
||||
# select_range
|
||||
#
|
||||
#def_key "v"
|
||||
# reverse_selection
|
||||
#
|
||||
#def_key "V"
|
||||
# remove_selection
|
||||
#
|
||||
#def_key "B"
|
||||
# select_album
|
||||
#
|
||||
#def_key "a"
|
||||
# add_selected_items
|
||||
#
|
||||
#def_key "c"
|
||||
# clear_playlist
|
||||
#
|
||||
#def_key "c"
|
||||
# clear_main_playlist
|
||||
#
|
||||
#def_key "C"
|
||||
# crop_playlist
|
||||
#
|
||||
#def_key "C"
|
||||
# crop_main_playlist
|
||||
#
|
||||
#def_key "m"
|
||||
# move_sort_order_up
|
||||
#
|
||||
#def_key "m"
|
||||
# move_selected_items_up
|
||||
#
|
||||
#def_key "n"
|
||||
# move_sort_order_down
|
||||
#
|
||||
#def_key "n"
|
||||
# move_selected_items_down
|
||||
#
|
||||
#def_key "M"
|
||||
# move_selected_items_to
|
||||
#
|
||||
#def_key "A"
|
||||
# add
|
||||
#
|
||||
#def_key "S"
|
||||
# save_playlist
|
||||
#
|
||||
#def_key "o"
|
||||
# jump_to_playing_song
|
||||
#
|
||||
#def_key "G"
|
||||
# jump_to_browser
|
||||
#
|
||||
#def_key "G"
|
||||
# jump_to_playlist_editor
|
||||
#
|
||||
#def_key "~"
|
||||
# jump_to_media_library
|
||||
#
|
||||
#def_key "E"
|
||||
# jump_to_tag_editor
|
||||
#
|
||||
#def_key "U"
|
||||
# toggle_playing_song_centering
|
||||
#
|
||||
#def_key "P"
|
||||
# toggle_display_mode
|
||||
#
|
||||
#def_key "\\"
|
||||
# toggle_interface
|
||||
#
|
||||
#def_key "!"
|
||||
# toggle_separators_between_albums
|
||||
#
|
||||
#def_key "L"
|
||||
# toggle_lyrics_fetcher
|
||||
#
|
||||
#def_key "F"
|
||||
# fetch_lyrics_in_background
|
||||
#
|
||||
#def_key "alt-l"
|
||||
# toggle_fetching_lyrics_in_background
|
||||
#
|
||||
#def_key "ctrl-l"
|
||||
# toggle_screen_lock
|
||||
#
|
||||
#def_key "`"
|
||||
# toggle_library_tag_type
|
||||
#
|
||||
#def_key "`"
|
||||
# refetch_lyrics
|
||||
#
|
||||
#def_key "`"
|
||||
# add_random_items
|
||||
#
|
||||
#def_key "ctrl-p"
|
||||
# set_selected_items_priority
|
||||
#
|
||||
#def_key "q"
|
||||
# quit
|
||||
#
|
||||
#
|
||||
#def_key "f"
|
||||
# find
|
||||
#def_key "f"
|
||||
# find_item_forward
|
||||
|
||||
def_key "+"
|
||||
show_clock
|
||||
def_key "="
|
||||
volume_up
|
||||
|
||||
def_key "j"
|
||||
scroll_down
|
||||
def_key "k"
|
||||
scroll_up
|
||||
|
||||
def_key "ctrl-u"
|
||||
page_up
|
||||
#push_characters "kkkkkkkkkkkkkkk"
|
||||
def_key "ctrl-d"
|
||||
page_down
|
||||
#push_characters "jjjjjjjjjjjjjjj"
|
||||
def_key "u"
|
||||
page_up
|
||||
#push_characters "kkkkkkkkkkkkkkk"
|
||||
def_key "d"
|
||||
page_down
|
||||
#push_characters "jjjjjjjjjjjjjjj"
|
||||
def_key "h"
|
||||
previous_column
|
||||
def_key "l"
|
||||
next_column
|
||||
|
||||
def_key "."
|
||||
show_lyrics
|
||||
|
||||
def_key "n"
|
||||
next_found_item
|
||||
def_key "N"
|
||||
previous_found_item
|
||||
|
||||
# not used but bound
|
||||
def_key "J"
|
||||
move_sort_order_down
|
||||
def_key "K"
|
||||
move_sort_order_up
|
||||
def_key "h"
|
||||
jump_to_parent_directory
|
||||
def_key "l"
|
||||
enter_directory
|
||||
def_key "l"
|
||||
run_action
|
||||
def_key "l"
|
||||
play_item
|
||||
def_key "m"
|
||||
show_media_library
|
||||
def_key "m"
|
||||
toggle_media_library_columns_mode
|
||||
def_key "t"
|
||||
show_tag_editor
|
||||
def_key "v"
|
||||
show_visualizer
|
||||
def_key "G"
|
||||
move_end
|
||||
def_key "g"
|
||||
move_home
|
||||
#jump_to_position_in_song
|
||||
def_key "U"
|
||||
update_database
|
||||
def_key "s"
|
||||
reset_search_engine
|
||||
def_key "s"
|
||||
show_search_engine
|
||||
def_key "f"
|
||||
show_browser
|
||||
def_key "f"
|
||||
change_browse_mode
|
||||
def_key "x"
|
||||
delete_playlist_items
|
||||
def_key "P"
|
||||
show_playlist
|
37
home/default/.config/ncmpcpp/config
Normal file
37
home/default/.config/ncmpcpp/config
Normal file
@ -0,0 +1,37 @@
|
||||
# vim: filetype=conf
|
||||
|
||||
ncmpcpp_directory = "~/.config/ncmpcpp"
|
||||
lyrics_directory = "~/.local/share/lyrics"
|
||||
mpd_music_dir = "~/Music"
|
||||
message_delay_time = "1"
|
||||
visualizer_type = "spectrum"
|
||||
song_list_format = {$4%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
|
||||
song_status_format = $b{{$8"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$8%f}
|
||||
#song_status_format = $b{{$8"%t"}} $8by {$8%a{ $8in $8%b{ (%y)}} $8}|{$8%f}
|
||||
song_library_format = {%n - }{%t}|{%f}
|
||||
alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
|
||||
alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
|
||||
current_item_prefix = $(cyan)$r$b
|
||||
current_item_suffix = $/r$(end)$/b
|
||||
current_item_inactive_column_prefix = $(magenta)$r
|
||||
current_item_inactive_column_suffix = $/r$(end)
|
||||
playlist_display_mode = columns
|
||||
browser_display_mode = columns
|
||||
progressbar_look = ->
|
||||
media_library_primary_tag = album_artist
|
||||
media_library_albums_split_by_date = no
|
||||
startup_screen = "media_library"
|
||||
display_volume_level = no
|
||||
ignore_leading_the = yes
|
||||
external_editor = nvim
|
||||
use_console_editor = yes
|
||||
empty_tag_color = magenta
|
||||
main_window_color = white
|
||||
progressbar_color = black:b
|
||||
progressbar_elapsed_color = blue:b
|
||||
statusbar_color = red
|
||||
statusbar_time_color = cyan:b
|
||||
allow_for_physical_item_deletion = "yes"
|
||||
|
||||
#main_window_color = black
|
||||
#song_status_format = $b{{$1"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$1%f}
|
@ -1,8 +1,9 @@
|
||||
#show-read-feeds no
|
||||
auto-reload yes
|
||||
|
||||
external-url-viewer "urlscan -dc -r 'linkhandler {}'"
|
||||
#external-url-viewer "urlscan -dc -r 'linkhandler {}'"
|
||||
|
||||
## vim bindings
|
||||
bind-key j down
|
||||
bind-key k up
|
||||
bind-key j next articlelist
|
||||
@ -18,30 +19,79 @@ bind-key h quit
|
||||
bind-key a toggle-article-read
|
||||
bind-key n next-unread
|
||||
bind-key N prev-unread
|
||||
bind-key D pb-download
|
||||
bind-key U show-urls
|
||||
bind-key x pb-delete
|
||||
|
||||
#bind-key D pb-download
|
||||
#bind-key x pb-delete
|
||||
|
||||
browser linkhandler
|
||||
macro , open-in-browser
|
||||
#macro t set browser "qndl" ; open-in-browser ; set browser linkhandler
|
||||
#macro a set browser "tsp yt-dlp --embed-metadata --embed-thumbnail -xc -f bestaudio/best --restrict-filenames" ; open-in-browser ; set browser linkhandler
|
||||
#macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler
|
||||
#macro w set browser "lynx" ; open-in-browser ; set browser linkhandler
|
||||
#macro d set browser "dmenuhandler" ; open-in-browser ; set browser linkhandler
|
||||
#macro c set browser "echo %u | xclip -r -sel c" ; open-in-browser ; set browser linkhandler
|
||||
#macro C set browser "setsid -f $TERMINAL -e pipe-viewer --comments=%u" ; open-in-browser ; set browser linkhandler
|
||||
#macro p set browser "peertubetorrent %u 480" ; open-in-browser ; set browser linkhandler
|
||||
#macro P set browser "peertubetorrent %u 1080" ; open-in-browser ; set browser linkhandler
|
||||
#macro y set browser "setsid -f flatpak run io.freetubeapp.FreeTube %u >/dev/null 2>&1" ; open-in-browser ; set browser linkhandler
|
||||
|
||||
# random
|
||||
#color background white black
|
||||
#color listnormal color244 black
|
||||
#color listfocus default red
|
||||
#color listnormal_unread white default
|
||||
#color listfocus_unread default red
|
||||
#color info black yellow
|
||||
#color article white black
|
||||
|
||||
# gruvbox
|
||||
#color listnormal cyan default
|
||||
#color listfocus black yellow standout bold
|
||||
#color listnormal_unread blue default
|
||||
#color listfocus_unread yellow default bold
|
||||
#color info red black bold
|
||||
#color article white default bold
|
||||
|
||||
color info white default bold
|
||||
|
||||
#color listfocus white color8
|
||||
#color listfocus_unread white color8 bold
|
||||
|
||||
color listnormal cyan default
|
||||
color listfocus black yellow standout bold
|
||||
color listnormal_unread blue default
|
||||
color listfocus_unread yellow default bold
|
||||
color info red black bold
|
||||
#color info red black bold
|
||||
color article white default bold
|
||||
|
||||
browser linkhandler
|
||||
macro , open-in-browser
|
||||
macro t set browser "qndl" ; open-in-browser ; set browser linkhandler
|
||||
macro a set browser "tsp yt-dlp --embed-metadata --embed-thumbnail -xc -f bestaudio/best --restrict-filenames" ; open-in-browser ; set browser linkhandler
|
||||
macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler
|
||||
macro w set browser "lynx" ; open-in-browser ; set browser linkhandler
|
||||
macro d set browser "dmenuhandler" ; open-in-browser ; set browser linkhandler
|
||||
macro c set browser "echo %u | xclip -r -sel c" ; open-in-browser ; set browser linkhandler
|
||||
macro C set browser "setsid -f $TERMINAL -e pipe-viewer --comments=%u" ; open-in-browser ; set browser linkhandler
|
||||
macro p set browser "peertubetorrent %u 480" ; open-in-browser ; set browser linkhandler
|
||||
macro P set browser "peertubetorrent %u 1080" ; open-in-browser ; set browser linkhandler
|
||||
macro y set browser "setsid -f flatpak run io.freetubeapp.FreeTube %u >/dev/null 2>&1" ; open-in-browser ; set browser linkhandler
|
||||
#color info white color8
|
||||
#color listnormal white black
|
||||
#color listnormal_unread white black bold
|
||||
#color article white black
|
||||
|
||||
#color listfocus white color8
|
||||
#color listfocus_unread color8 black bold
|
||||
|
||||
#color listfocus cyan color8 bold
|
||||
#color listfocus_unread cyan color8 bold
|
||||
|
||||
#color listnormal cyan default
|
||||
#color listfocus black yellow standout bold
|
||||
#color listnormal_unread blue default
|
||||
#color listfocus_unread yellow default bold
|
||||
#color info red black bold
|
||||
##color info white color8
|
||||
#color article white default
|
||||
|
||||
#color listnormal cyan default
|
||||
#color listnormal_unread blue default
|
||||
|
||||
#color listnormal white default bold
|
||||
#color listnormal_unread color8 default
|
||||
|
||||
highlight all "--.*--" white
|
||||
highlight all "---.*---" yellow
|
||||
highlight feedlist ".*(0/0))" black
|
||||
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" cyan default bold
|
||||
@ -54,3 +104,4 @@ highlight article "\\[embedded flash: [0-9][0-9]*\\]" green default bold
|
||||
highlight article ":.*\\(link\\)$" cyan default
|
||||
highlight article ":.*\\(image\\)$" blue default
|
||||
highlight article ":.*\\(embedded flash\\)$" magenta default
|
||||
|
||||
|
3
home/default/.config/npm/npmrc
Normal file
3
home/default/.config/npm/npmrc
Normal file
@ -0,0 +1,3 @@
|
||||
prefix=${XDG_DATA_HOME}/npm
|
||||
cache=${XDG_CACHE_HOME}/npm
|
||||
init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
|
13
home/default/.config/nsxiv/exec/key-handler
Executable file
13
home/default/.config/nsxiv/exec/key-handler
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
while read -r file
|
||||
do
|
||||
case "$1" in
|
||||
"b") change-background "$file" & ;;
|
||||
"y") wl-copy < $file ;;
|
||||
"d")
|
||||
#[ "$(printf "No\\nYes" | rofi -dmenu -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
|
||||
[ "$(printf "No\\nYes" | wofi --insensitive --show dmenu --prompt="Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
|
||||
"g") setsid -f gimp "$file" ;;
|
||||
"i") notify-send "File information" "$(mediainfo "$file" | sed "s/[ ]\+:/:/g;s/: /: <b>/;s/$/<\/b>/" | grep "<b>")" ;;
|
||||
esac
|
||||
done
|
108
home/default/.config/nvim/init.lua
Normal file
108
home/default/.config/nvim/init.lua
Normal file
@ -0,0 +1,108 @@
|
||||
vim.opt.clipboard="unnamed,unnamedplus"
|
||||
vim.g.mapleader = ' '
|
||||
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.fn.system({
|
||||
"git",
|
||||
"clone",
|
||||
"--filter=blob:none",
|
||||
"https://github.com/folke/lazy.nvim.git",
|
||||
"--branch=stable", -- latest stable release
|
||||
lazypath,
|
||||
})
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
require("lazy").setup({
|
||||
"nyoom-engineering/oxocarbon.nvim",
|
||||
{"nvim-treesitter/nvim-treesitter", build = ":TSUpdate"},
|
||||
{
|
||||
'nvim-orgmode/orgmode',
|
||||
dependencies = {
|
||||
{ 'nvim-treesitter/nvim-treesitter', lazy = true },
|
||||
},
|
||||
event = 'VeryLazy',
|
||||
config = function()
|
||||
-- Load treesitter grammar for org
|
||||
require('orgmode').setup_ts_grammar()
|
||||
|
||||
-- Setup treesitter
|
||||
require('nvim-treesitter.configs').setup({
|
||||
highlight = {
|
||||
enable = false,
|
||||
additional_vim_regex_highlighting = { 'org' },
|
||||
},
|
||||
ensure_installed = { 'org' },
|
||||
})
|
||||
|
||||
-- Setup orgmode -- NOTE (to self) THAT I ONLY USE THIS FOR CAPTURING CODE
|
||||
-- AND CHANGING Todo STATES in todo.org FOR CODING
|
||||
-- for simplicity's sake
|
||||
require('orgmode').setup({
|
||||
--org_agenda_files = '~/orgfiles/**/*',
|
||||
org_agenda_files = '~/notebook/ag/*',
|
||||
org_default_notes_file = '~/notebook/ag/todo.org',
|
||||
org_log_done = 'time',
|
||||
org_log_into_drawer = 'LOGBOOK',
|
||||
--org_todo_keywords = {'TODO(t)', 'NEXT(n)', '|', 'DONE(d)'},
|
||||
org_todo_keywords = {"TODO(t)", "PROJ(p)", "LOOP(r)", "STRT(s)", "WAIT(w)", "HOLD(h)", "IDEA(i)", "|", "DONE(d)", "KILL(k)"},
|
||||
org_capture_templates = {
|
||||
t = {
|
||||
description = 'todo with link',
|
||||
template = '* TODO %?\n%i\n%a',
|
||||
target = '~/notebook/ag/todo.org',
|
||||
headline = 'todo',
|
||||
},
|
||||
T = {
|
||||
description = 'todo no link',
|
||||
template = '* TODO %?\n%i\n%a',
|
||||
target = '~/notebook/ag/todo.org',
|
||||
headline = 'todo',
|
||||
},
|
||||
},
|
||||
mappings = { -- make as close to doom
|
||||
--disable_all = true,
|
||||
global = {
|
||||
org_agenda = {'<Leader>oa'},
|
||||
org_capture = '<Leader>x',
|
||||
},
|
||||
agenda = {
|
||||
org_agenda_todo = '<Leader>mt',
|
||||
org_agenda_schedule = '<Leader>mds',
|
||||
org_agenda_deadline = '<Leader>mdd',
|
||||
org_agenda_ = '<Leader>mds',
|
||||
|
||||
},
|
||||
org = {
|
||||
org_todo = '<Leader>mt',
|
||||
org_priority = '<Leader>mpp',
|
||||
--org_move_subtree_up = '<ALT-k>',
|
||||
--org_move_subtree_down = '<ALT-j>',
|
||||
org_schedule = '<Leader>mds',
|
||||
org_deadline = '<Leader>mdd',
|
||||
org_time_stamp = '<Leader>mdt',
|
||||
org_time_stamp_inactive = '<Leader>mdT',
|
||||
},
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
'nvim-telescope/telescope.nvim', tag = '0.1.5',
|
||||
-- or , branch = '0.1.x',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' }
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
--vim.opt.background = "dark" -- set this to dark or light
|
||||
--vim.cmd("colorscheme oxocarbon")
|
||||
|
||||
--keybinds
|
||||
vim.keymap.set("n", "<leader>.", vim.cmd.Ex)
|
||||
vim.keymap.set("n", "<leader>ff", vim.cmd.Ex)
|
||||
local builtin = require('telescope.builtin')
|
||||
vim.keymap.set('n', '<leader><leader>', builtin.find_files, {})
|
||||
--vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
||||
--vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||
--vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
|
275
home/default/.config/river/init
Executable file
275
home/default/.config/river/init
Executable file
@ -0,0 +1,275 @@
|
||||
#!/bin/sh
|
||||
# TODO
|
||||
|
||||
# This is the example configuration file for river.
|
||||
#
|
||||
# If you wish to edit this, you will probably want to copy it to
|
||||
# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
|
||||
#
|
||||
# See the river(1), riverctl(1), and rivertile(1) man pages for complete
|
||||
# documentation.
|
||||
|
||||
# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
|
||||
|
||||
# Super+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
|
||||
riverctl map normal Super Return spawn $TERMINAL
|
||||
riverctl map normal Super E spawn "emacsclient -c -a ''"
|
||||
riverctl map normal Super D spawn "wofi --show drun"
|
||||
riverctl map normal Super+Shift D spawn "wofi --show run"
|
||||
riverctl map normal Super W spawn $BROWSER
|
||||
riverctl map normal Super M spawn "$TERMINAL -e ncmpcpp"
|
||||
riverctl map normal Super R spawn "$TERMINAL -e lf"
|
||||
riverctl map normal Super+Shift N spawn "$TERMINAL -e newsboat"
|
||||
riverctl map normal Super T spawn "swaync-client -t"
|
||||
riverctl map normal Super+Control P spawn "$TERMINAL -e pulsemixer"
|
||||
riverctl map normal Super B spawn "emacsclient -c -a '' ~/notebook/bookmarks.org"
|
||||
riverctl map normal Super+Shift B spawn "bookmark"
|
||||
# riverctl map normal Super Insert spawn 'wtype "$(grep -v '^#' ~/notebook/bookmarks.org | dmenu -l 50 | cut -d' ' -f1)"' # TODO broken?
|
||||
riverctl map normal Print spawn 'screenshot.sh output'
|
||||
riverctl map normal Super Print spawn 'screenshot.sh active'
|
||||
riverctl map normal Super+Shift Print spawn 'screenshot.sh window'
|
||||
riverctl map normal Super+Control u spawn 'screenshot.sh output'
|
||||
riverctl map normal Super u spawn 'screenshot.sh active'
|
||||
riverctl map normal Super+Shift u spawn 'screenshot.sh window'
|
||||
riverctl map normal Super Equal spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+'
|
||||
riverctl map normal Super Minus spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-'
|
||||
riverctl map normal Super+Shift Equal spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 15%+'
|
||||
riverctl map normal Super+Shift Minus spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 15%-'
|
||||
riverctl map normal Super+Shift m spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'
|
||||
riverctl map normal Super P spawn 'mpc toggle'
|
||||
riverctl map normal Super O spawn 'mpc next'
|
||||
riverctl map normal Super I spawn 'mpc prev'
|
||||
|
||||
# Super+Q to close the focused view
|
||||
riverctl map normal Super Q close
|
||||
|
||||
# Super+Shift+Backspace to exit river
|
||||
riverctl map normal Super+Shift Backspace exit
|
||||
# riverctl map normal Super+Shift Backspace 'prompt "Do you really wont to exit river? This will end your Wayland session" "riverctl exit"'
|
||||
riverctl map normal Super+Shift R spawn "$HOME/.config/river/init"
|
||||
riverctl map normal Super Backspace spawn sysact
|
||||
|
||||
# Super+X to toggle waybar
|
||||
riverctl map normal Super X spawn 'killall -SIGUSR1 waybar'
|
||||
|
||||
# Super+J and Super+K to focus the next/previous view in the layout stack
|
||||
riverctl map normal Super J focus-view next
|
||||
riverctl map normal Super K focus-view previous
|
||||
|
||||
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
|
||||
# view in the layout stack
|
||||
riverctl map normal Super+Shift J swap next
|
||||
riverctl map normal Super+Shift K swap previous
|
||||
|
||||
# Super+Period and Super+Comma to focus the next/previous output
|
||||
riverctl map normal Super Period focus-output next
|
||||
riverctl map normal Super Comma focus-output previous
|
||||
riverctl map normal Super Right focus-output next
|
||||
riverctl map normal Super Left focus-output previous
|
||||
|
||||
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
|
||||
#riverctl map normal Super+Shift Period send-to-output -current-tags next
|
||||
#riverctl map normal Super+Shift Comma send-to-output -current-tags previous
|
||||
riverctl map normal Super+Shift Period spawn "riverctl send-to-output -current-tags previous && riverctl focus-output previous"
|
||||
riverctl map normal Super+Shift Comma spawn "riverctl send-to-output -current-tags next && riverctl focus-output next"
|
||||
riverctl map normal Super+Shift Right spawn "riverctl send-to-output -current-tags previous && riverctl focus-output previous"
|
||||
riverctl map normal Super+Shift Left spawn "riverctl send-to-output -current-tags next && riverctl focus-output next"
|
||||
|
||||
# Same but with alt
|
||||
#riverctl map normal Super+Alt Period send-to-output -current-tags next
|
||||
#riverctl map normal Super+Alt Comma send-to-output -current-tags previous
|
||||
riverctl map normal Super+Alt Period spawn "riverctl send-to-output -current-tags previous && riverctl focus-output previous"
|
||||
riverctl map normal Super+Alt Comma spawn "riverctl send-to-output -current-tags next && riverctl focus-output next"
|
||||
riverctl map normal Super+Alt Right send-to-output next
|
||||
riverctl map normal Super+Alt Left send-to-output previous
|
||||
|
||||
# Super+Return to bump the focused view to the top of the layout stack
|
||||
riverctl map normal Super+Shift Return zoom
|
||||
riverctl map normal Super Space zoom
|
||||
|
||||
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
|
||||
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
|
||||
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
|
||||
|
||||
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
|
||||
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
|
||||
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
|
||||
|
||||
# Super+Alt+{H,J,K,L} to move views
|
||||
riverctl map normal Super+Alt H move left 100
|
||||
riverctl map normal Super+Alt J move down 100
|
||||
riverctl map normal Super+Alt K move up 100
|
||||
riverctl map normal Super+Alt L move right 100
|
||||
|
||||
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
|
||||
riverctl map normal Super+Alt+Control H snap left
|
||||
riverctl map normal Super+Alt+Control J snap down
|
||||
riverctl map normal Super+Alt+Control K snap up
|
||||
riverctl map normal Super+Alt+Control L snap right
|
||||
|
||||
# Super+Alt+Shift+{H,J,K,L} to resize views (default by 100)
|
||||
riverctl map normal Super+Alt+Shift H resize horizontal -50
|
||||
riverctl map normal Super+Alt+Shift J resize vertical 50
|
||||
riverctl map normal Super+Alt+Shift K resize vertical -50
|
||||
riverctl map normal Super+Alt+Shift L resize horizontal 50
|
||||
|
||||
# Super + Left Mouse Button to move views
|
||||
riverctl map-pointer normal Super BTN_LEFT move-view
|
||||
|
||||
# Super + Right Mouse Button to resize views
|
||||
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
||||
|
||||
for i in $(seq 1 9)
|
||||
do
|
||||
tags=$((1 << ($i - 1)))
|
||||
|
||||
# Super+[1-9] to focus tag [0-8]
|
||||
riverctl map normal Super $i set-focused-tags $tags
|
||||
|
||||
# Super+Shift+[1-9] to tag focused view with tag [0-8]
|
||||
riverctl map normal Super+Shift $i set-view-tags $tags
|
||||
|
||||
# Super+Ctrl+[1-9] to toggle focus of tag [0-8]
|
||||
riverctl map normal Super+Control $i toggle-focused-tags $tags
|
||||
|
||||
# Super+Shift+Ctrl+[1-9] to toggle tag [0-8] of focused view
|
||||
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
|
||||
done
|
||||
|
||||
# Super+0 to focus all tags
|
||||
# Super+Shift+0 to tag focused view with all tags
|
||||
all_tags=$(((1 << 32) - 1))
|
||||
riverctl map normal Super 0 set-focused-tags $all_tags
|
||||
riverctl map normal Super+Shift 0 set-view-tags $all_tags
|
||||
|
||||
# Super+Shift+Space to toggle float
|
||||
riverctl map normal Super+Shift Space toggle-float
|
||||
|
||||
# Super+F to toggle fullscreen
|
||||
riverctl map normal Super F toggle-fullscreen
|
||||
|
||||
# Super+{Up,Right,Down,Left} to change layout orientation
|
||||
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
|
||||
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
|
||||
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
|
||||
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
|
||||
|
||||
# Declare a passthrough mode. This mode has only a single mapping to return to
|
||||
# normal mode. This makes it useful for testing a nested wayland compositor
|
||||
riverctl declare-mode passthrough
|
||||
|
||||
# Super+F11 to enter passthrough mode
|
||||
riverctl map normal Super F11 enter-mode passthrough
|
||||
|
||||
# Super+F11 to return to normal mode
|
||||
riverctl map passthrough Super F11 enter-mode normal
|
||||
|
||||
# Various media key mapping examples for both normal and locked mode which do
|
||||
# not have a modifier
|
||||
for mode in normal locked
|
||||
do
|
||||
# Eject the optical drive (well if you still have one that is)
|
||||
riverctl map $mode None XF86Eject spawn 'eject -T'
|
||||
|
||||
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
|
||||
riverctl map $mode None XF86AudioRaiseVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+'
|
||||
riverctl map $mode None XF86AudioLowerVolume spawn 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-'
|
||||
riverctl map $mode None XF86AudioMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle'
|
||||
riverctl map $mode None XF86AudioMicMute spawn 'wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle'
|
||||
|
||||
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
|
||||
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
|
||||
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
|
||||
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
|
||||
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
|
||||
|
||||
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
|
||||
riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl set 10%+'
|
||||
riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl set 10%-'
|
||||
done
|
||||
|
||||
# Set background and border color
|
||||
riverctl background-color 0x002b36
|
||||
riverctl border-color-focused 0x93a1a1
|
||||
riverctl border-color-unfocused 0x586e75
|
||||
|
||||
|
||||
## Autostart
|
||||
riverctl spawn swaync
|
||||
riverctl spawn 'killall waybar'
|
||||
riverctl spawn 'sleep 2 && waybar -c ~/.config/waybar/config-river'
|
||||
riverctl spawn change-background
|
||||
riverctl spawn 'sleep 5 && xrdb -load $HOME/.config/x11/xresources'
|
||||
#riverctl spawn mpd
|
||||
#riverctl spawn fcitx5
|
||||
#riverctl spawn deluged
|
||||
riverctl spawn "setsid -f syncthing --no-browser"
|
||||
riverctl spawn "sleep 10 && kanshi"
|
||||
riverctl spawn 'killall swayidle ; sleep 3 && idle'
|
||||
#riverctl spawn 'gammastep -P -l <lat>:<long> -t 6500:5000'
|
||||
riverctl spawn '~/.config/river/init-priv'
|
||||
|
||||
riverctl spawn "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river"
|
||||
riverctl spawn "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river"
|
||||
|
||||
# Set keyboard repeat rate
|
||||
riverctl set-repeat 30 300
|
||||
|
||||
# Make certain views start floating
|
||||
riverctl float-filter-add app-id float
|
||||
riverctl float-filter-add title "popup title with spaces"
|
||||
|
||||
|
||||
#riverctl rule-add -app-id "*" ssd
|
||||
riverctl rule-add -app-id "emacs" ssd
|
||||
riverctl rule-add -app-id "LibreWolf" ssd
|
||||
riverctl rule-add -app-id "deluge" ssd
|
||||
riverctl rule-add -app-id "steam" ssd
|
||||
riverctl rule-add -app-id "im.dino.Dino" ssd
|
||||
|
||||
# Make all views with an app-id that starts with "float" and title "foo" start floating.
|
||||
riverctl rule-add -app-id 'float*' -title 'foo' float
|
||||
|
||||
# Make all views with app-id "bar" and any title use client-side decorations
|
||||
riverctl rule-add -app-id "bar" csd
|
||||
|
||||
# Set app-ids and titles of views which should use client side decorations
|
||||
riverctl csd-filter-add app-id "gedit"
|
||||
|
||||
# Set the default layout generator to be rivertile and start it.
|
||||
# River will send the process group of the init executable SIGTERM on exit.
|
||||
riverctl default-layout rivertile
|
||||
rivertile -view-padding 15 -outer-padding 15
|
||||
# default 6
|
||||
|
||||
|
||||
#: Performance tuning {{{
|
||||
|
||||
#repaint_delay 0
|
||||
|
||||
#: Delay (in milliseconds) between screen updates. Decreasing it,
|
||||
#: increases frames-per-second (FPS) at the cost of more CPU usage.
|
||||
#: The default value yields ~100 FPS which is more than sufficient for
|
||||
#: most uses. Note that to actually achieve 100 FPS you have to either
|
||||
#: set sync_to_monitor to no or use a monitor with a high refresh
|
||||
#: rate. Also, to minimize latency when there is pending input to be
|
||||
#: processed, repaint_delay is ignored.
|
||||
|
||||
#input_delay 0
|
||||
|
||||
#: Delay (in milliseconds) before input from the program running in
|
||||
#: the terminal is processed. Note that decreasing it will increase
|
||||
#: responsiveness, but also increase CPU usage and might cause flicker
|
||||
#: in full screen programs that redraw the entire screen on each loop,
|
||||
#: because kitty is so fast that partial screen updates will be drawn.
|
||||
|
||||
sync_to_monitor no
|
||||
|
||||
#: Sync screen updates to the refresh rate of the monitor. This
|
||||
#: prevents tearing (https://en.wikipedia.org/wiki/Screen_tearing)
|
||||
#: when scrolling. However, it limits the rendering speed to the
|
||||
#: refresh rate of your monitor. With a very high speed mouse/high
|
||||
#: keyboard repeat rate, you may notice some slight input latency. If
|
||||
#: so, set this to no.
|
||||
|
||||
#: }}}
|
163
home/default/.config/river/init.def
Executable file
163
home/default/.config/river/init.def
Executable file
@ -0,0 +1,163 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This is the example configuration file for river.
|
||||
#
|
||||
# If you wish to edit this, you will probably want to copy it to
|
||||
# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
|
||||
#
|
||||
# See the river(1), riverctl(1), and rivertile(1) man pages for complete
|
||||
# documentation.
|
||||
|
||||
# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
|
||||
|
||||
# Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
|
||||
riverctl map normal Super+Shift Return spawn foot
|
||||
|
||||
# Super+Q to close the focused view
|
||||
riverctl map normal Super Q close
|
||||
|
||||
# Super+Shift+E to exit river
|
||||
riverctl map normal Super+Shift E exit
|
||||
|
||||
# Super+J and Super+K to focus the next/previous view in the layout stack
|
||||
riverctl map normal Super J focus-view next
|
||||
riverctl map normal Super K focus-view previous
|
||||
|
||||
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
|
||||
# view in the layout stack
|
||||
riverctl map normal Super+Shift J swap next
|
||||
riverctl map normal Super+Shift K swap previous
|
||||
|
||||
# Super+Period and Super+Comma to focus the next/previous output
|
||||
riverctl map normal Super Period focus-output next
|
||||
riverctl map normal Super Comma focus-output previous
|
||||
|
||||
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
|
||||
riverctl map normal Super+Shift Period send-to-output -current-tags next
|
||||
riverctl map normal Super+Shift Comma send-to-output -current-tagsjprevious
|
||||
|
||||
# Super+Return to bump the focused view to the top of the layout stack
|
||||
riverctl map normal Super Return zoom
|
||||
|
||||
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
|
||||
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
|
||||
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
|
||||
|
||||
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
|
||||
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
|
||||
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
|
||||
|
||||
# Super+Alt+{H,J,K,L} to move views
|
||||
riverctl map normal Super+Alt H move left 100
|
||||
riverctl map normal Super+Alt J move down 100
|
||||
riverctl map normal Super+Alt K move up 100
|
||||
riverctl map normal Super+Alt L move right 100
|
||||
|
||||
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
|
||||
riverctl map normal Super+Alt+Control H snap left
|
||||
riverctl map normal Super+Alt+Control J snap down
|
||||
riverctl map normal Super+Alt+Control K snap up
|
||||
riverctl map normal Super+Alt+Control L snap right
|
||||
|
||||
# Super+Alt+Shift+{H,J,K,L} to resize views
|
||||
riverctl map normal Super+Alt+Shift H resize horizontal -100
|
||||
riverctl map normal Super+Alt+Shift J resize vertical 100
|
||||
riverctl map normal Super+Alt+Shift K resize vertical -100
|
||||
riverctl map normal Super+Alt+Shift L resize horizontal 100
|
||||
|
||||
# Super + Left Mouse Button to move views
|
||||
riverctl map-pointer normal Super BTN_LEFT move-view
|
||||
|
||||
# Super + Right Mouse Button to resize views
|
||||
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
||||
|
||||
# Super + Middle Mouse Button to toggle float
|
||||
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
|
||||
|
||||
for i in $(seq 1 9)
|
||||
do
|
||||
tags=$((1 << ($i - 1)))
|
||||
|
||||
# Super+[1-9] to focus tag [0-8]
|
||||
riverctl map normal Super $i set-focused-tags $tags
|
||||
|
||||
# Super+Shift+[1-9] to tag focused view with tag [0-8]
|
||||
riverctl map normal Super+Shift $i set-view-tags $tags
|
||||
|
||||
# Super+Control+[1-9] to toggle focus of tag [0-8]
|
||||
riverctl map normal Super+Control $i toggle-focused-tags $tags
|
||||
|
||||
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
|
||||
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
|
||||
done
|
||||
|
||||
# Super+0 to focus all tags
|
||||
# Super+Shift+0 to tag focused view with all tags
|
||||
all_tags=$(((1 << 32) - 1))
|
||||
riverctl map normal Super 0 set-focused-tags $all_tags
|
||||
riverctl map normal Super+Shift 0 set-view-tags $all_tags
|
||||
|
||||
# Super+Space to toggle float
|
||||
riverctl map normal Super Space toggle-float
|
||||
|
||||
# Super+F to toggle fullscreen
|
||||
riverctl map normal Super F toggle-fullscreen
|
||||
|
||||
# Super+{Up,Right,Down,Left} to change layout orientation
|
||||
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
|
||||
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
|
||||
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
|
||||
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
|
||||
|
||||
# Declare a passthrough mode. This mode has only a single mapping to return to
|
||||
# normal mode. This makes it useful for testing a nested wayland compositor
|
||||
riverctl declare-mode passthrough
|
||||
|
||||
# Super+F11 to enter passthrough mode
|
||||
riverctl map normal Super F11 enter-mode passthrough
|
||||
|
||||
# Super+F11 to return to normal mode
|
||||
riverctl map passthrough Super F11 enter-mode normal
|
||||
|
||||
# Various media key mapping examples for both normal and locked mode which do
|
||||
# not have a modifier
|
||||
for mode in normal locked
|
||||
do
|
||||
# Eject the optical drive (well if you still have one that is)
|
||||
riverctl map $mode None XF86Eject spawn 'eject -T'
|
||||
|
||||
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
|
||||
riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
|
||||
riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
|
||||
riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
|
||||
|
||||
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
|
||||
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
|
||||
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
|
||||
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
|
||||
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
|
||||
|
||||
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
|
||||
riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
|
||||
riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
|
||||
done
|
||||
|
||||
# Set background and border color
|
||||
riverctl background-color 0x002b36
|
||||
riverctl border-color-focused 0x93a1a1
|
||||
riverctl border-color-unfocused 0x586e75
|
||||
|
||||
# Set keyboard repeat rate
|
||||
riverctl set-repeat 50 300
|
||||
|
||||
# Make all views with an app-id that starts with "float" and title "foo" start floating.
|
||||
riverctl rule-add -app-id 'float*' -title 'foo' float
|
||||
|
||||
# Make all views with app-id "bar" and any title use client-side decorations
|
||||
riverctl rule-add -app-id "bar" csd
|
||||
|
||||
# Set the default layout generator to be rivertile and start it.
|
||||
# River will send the process group of the init executable SIGTERM on exit.
|
||||
riverctl default-layout rivertile
|
||||
rivertile -view-padding 6 -outer-padding 6 &
|
||||
|
8
home/default/.config/rofi/config.rasi
Normal file
8
home/default/.config/rofi/config.rasi
Normal file
@ -0,0 +1,8 @@
|
||||
configuration {
|
||||
modi: "combi";
|
||||
font: "hack 10";
|
||||
combi-modi: "window,drun,ssh";
|
||||
show-icons: true;
|
||||
}
|
||||
|
||||
@theme "/usr/share/rofi/themes/Arc-Dark.rasi"
|
1
home/default/.config/sc-im/scimrc
Normal file
1
home/default/.config/sc-im/scimrc
Normal file
@ -0,0 +1 @@
|
||||
set copy_to_clipboard_delimited_tab=1
|
@ -1,66 +1,51 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Use neovim for vim if present.
|
||||
[ -x "$(command -v nvim)" ] && alias vim="nvim" vimdiff="nvim -d"
|
||||
|
||||
# Use $XINITRC variable if file exists.
|
||||
[ -f "$XINITRC" ] && alias startx="startx $XINITRC"
|
||||
|
||||
[ -f "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC"
|
||||
|
||||
# sudo not required for some system commands
|
||||
for command in mount umount sv pacman updatedb su shutdown poweroff reboot ; do
|
||||
for command in mount umount updatedb su shutdown poweroff reboot ; do
|
||||
alias $command="sudo $command"
|
||||
done; unset command
|
||||
|
||||
se() { cd ~/.local/bin; $EDITOR $(fzf) ;}
|
||||
|
||||
# Verbosity and settings that you pretty much just always are going to want.
|
||||
alias \
|
||||
e="emacsclient -tty -a ''" \
|
||||
emc="setsid -f emacsclient -c -a '' >/dev/null 2>&1" \
|
||||
emo="emacsclient" \
|
||||
kem="emacsclient -e '(kill-emacs)'" \
|
||||
vimdiff="nvim -d" \
|
||||
cp="cp -iv" \
|
||||
mv="mv -iv" \
|
||||
rm="rm -vI" \
|
||||
bc="bc -ql" \
|
||||
pg="ps -aux | grep --color=auto" \
|
||||
mkd="mkdir -pv" \
|
||||
ffmpeg="ffmpeg -hide_banner"
|
||||
wedit(){
|
||||
which $@ >/dev/null 2>&1 && [ -n "$1" ] && vim $(which $@) && exit 0
|
||||
printf "file doesn't exist.\n"
|
||||
}
|
||||
|
||||
# Colorize commands when possible.
|
||||
alias \
|
||||
ffmpeg="ffmpeg -hide_banner" \
|
||||
ls="ls -hN --color=auto --group-directories-first" \
|
||||
grep="grep --color=auto" \
|
||||
diff="diff --color=auto" \
|
||||
ccat="highlight --out-format=ansi" \
|
||||
ip="ip -color=auto"
|
||||
|
||||
# These common commands are just too long! Abbreviate them.
|
||||
alias \
|
||||
ip="ip -color=auto" \
|
||||
ka="killall" \
|
||||
g="git" \
|
||||
sdn="shutdown -h now" \
|
||||
e="$EDITOR" \
|
||||
v="nvim" \
|
||||
z="zathura" \
|
||||
i="nsxiv -a"
|
||||
|
||||
alias \
|
||||
magit="nvim -c MagitOnly" \
|
||||
ref="shortcuts >/dev/null; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" \
|
||||
weath="curl wttr.in"
|
||||
|
||||
# misc
|
||||
alias \
|
||||
ytmus="yt-dlp --embed-metadata --embed-thumbnail -xc -f bestaudio/best --restrict-filenames" \
|
||||
d="sdcv" \
|
||||
i="nsxiv -a" \
|
||||
pg="ps -aux | grep --color=auto" \
|
||||
weath="curl wttr.in" \
|
||||
ytmus="yt-dlp --embed-metadata --embed-thumbnail -xc -f 'bestaudio[ext=m4a]'" \
|
||||
ytvid="yt-dlp --embed-metadata --embed-thumbnail --embed-chapters --write-auto-subs -f bestvideo'[height<=1080]''[ext=mp4]'+bestaudio'[ext=m4a]'/best'[ext=mp4]'/best" \
|
||||
t="todo.sh -t -d $HOME/notebook/todo/todo.cfg" \
|
||||
fj="firejail --profile=$HOME/.config/firejail/game.profile" \
|
||||
dj="dijo"
|
||||
hgs="hugo server --noHTTPCache --disableFastRender" \
|
||||
left='uxnemu ~/.local/uxn/left.rom' \
|
||||
bouc='uxnemu ~/.local/uxn/bouc.rom' \
|
||||
catclock='uxnemu ~/.local/uxn/catclock.rom' \
|
||||
b='$BROWSER'\
|
||||
sc='sc-im'\
|
||||
l='ledger -f ~/notebook/ac/ac.ledger'
|
||||
|
||||
# ytfzf
|
||||
alias \
|
||||
ytfzf="ytfzf --thumb-viewer=imv" \
|
||||
ytfzf-video="ytfzf --detach -t" \
|
||||
ytfzf-audio="ytfzf -m" \
|
||||
ytfzf-history="ytfzf --detach -H"
|
||||
wedit(){
|
||||
which $@ >/dev/null 2>&1 && [ -n "$1" ] && $EDITOR $(which $@) || printf "file doesn't exist.\n"
|
||||
}
|
||||
|
@ -1,14 +0,0 @@
|
||||
# You can add comments to these files with #
|
||||
cac ${XDG_CACHE_HOME:-$HOME/.cache}
|
||||
cf ${XDG_CONFIG_HOME:-$HOME/.config}
|
||||
D ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}
|
||||
d ${XDG_DOCUMENTS_DIR:-$HOME/Documents}
|
||||
dt ${XDG_DATA_HOME:-$HOME/.local/share}
|
||||
rr $HOME/.local/src
|
||||
h $HOME
|
||||
m ${XDG_MUSIC_DIR:-$HOME/Music}
|
||||
mn /mnt
|
||||
pp ${XDG_PICTURES_DIR:-$HOME/Pictures}
|
||||
sc $HOME/.local/bin
|
||||
src $HOME/.local/src
|
||||
vv ${XDG_VIDEOS_DIR:-$HOME/Videos}
|
@ -1,20 +0,0 @@
|
||||
# keys filename description
|
||||
bf ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files # This file, a list of bookmarked files
|
||||
bd ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs # A list of bookmarked directories similar to this file
|
||||
cfx ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources # Colors, themes and variables for X11
|
||||
cfs ${XDG_CONFIG_HOME:-$HOME/.config}/sway/config
|
||||
cfb ${XDG_CONFIG_HOME:-$HOME/.config}/waybar/config
|
||||
cfB ${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style.css
|
||||
|
||||
cfv ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/init.vim # vim/neovim config
|
||||
cfz $ZDOTDIR/.zshrc # zsh (shell) config
|
||||
cfa ${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc # aliases used by zsh (and potentially other shells)
|
||||
cfp ${XDG_CONFIG_HOME:-$HOME/.config}/shell/profile # profile file for login settings for zsh
|
||||
cfm ${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc # mutt (email client) config
|
||||
cfn ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/config # newsboat (RSS reader)
|
||||
cfu ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls # RSS urls for newsboat
|
||||
cfmb ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/bindings # ncmpcpp (music player) keybinds file
|
||||
cfmc ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/config # ncmpcpp (music player) config
|
||||
cfl ${XDG_CONFIG_HOME:-$HOME/.config}/lf/lfrc # lf (file browser) config
|
||||
cfL ${XDG_CONFIG_HOME:-$HOME/.config}/lf/scope # lf's scope/preview file
|
||||
cfX ${XDG_CONFIG_HOME:-$HOME/.config}/nsxiv/exec/key-handler # sxiv (image viewer) key/script handler
|
@ -1,56 +1,62 @@
|
||||
#!/bin/zsh
|
||||
#!/bin/sh
|
||||
# shellcheck disable=SC2155
|
||||
|
||||
# profile file. Runs on login. Environmental variables are set here.
|
||||
|
||||
# If you don't plan on reverting to bash, you can remove the link in ~/.profile
|
||||
# to clean up.
|
||||
|
||||
# paths
|
||||
# Paths
|
||||
export PATH="$PATH:$HOME/.local/bin"
|
||||
export PATH="$PATH:$HOME/.local/uxn"
|
||||
export PATH="$PATH:$HOME/.local/sec"
|
||||
export PATH="$PATH:$HOME/.emacs.d/bin"
|
||||
export PATH="$PATH:/var/lib/flatpak/exports/bin"
|
||||
export PATH="$PATH:$HOME/.local/share/go/bin"
|
||||
export PATH="$PATH:$HOME/.local/share/cargo/bin"
|
||||
export PATH="$PATH:$HOME/.emacs.d/bin"
|
||||
unsetopt PROMPT_SP
|
||||
|
||||
unsetopt PROMPT_SP 2>/dev/null
|
||||
|
||||
# Default programs:
|
||||
export EDITOR="emnw"
|
||||
export EDITOR="nvim"
|
||||
export TERMINAL="foot"
|
||||
export BROWSER="librewolf"
|
||||
export BROWSER="io.gitlab.librewolf-community"
|
||||
|
||||
# ~/ Clean-up:
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XINITRC="${XDG_CONFIG_HOME:-$HOME/.config}/x11/xinitrc"
|
||||
export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
|
||||
#export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" # This line will break some DMs.
|
||||
export NOTMUCH_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/notmuch-config"
|
||||
export GTK2_RC_FILES="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-2.0/gtkrc-2.0"
|
||||
export LESSHISTFILE="-"
|
||||
export WGETRC="${XDG_CONFIG_HOME:-$HOME/.config}/wget/wgetrc"
|
||||
export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/shell/inputrc"
|
||||
export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh"
|
||||
#export ALSA_CONFIG_PATH="$XDG_CONFIG_HOME/alsa/asoundrc"
|
||||
#export GNUPGHOME="${XDG_DATA_HOME:-$HOME/.local/share}/gnupg"
|
||||
export WINEPREFIX="${XDG_DATA_HOME:-$HOME/.local/share}/wineprefixes/default"
|
||||
export KODI_DATA="${XDG_DATA_HOME:-$HOME/.local/share}/kodi"
|
||||
export PASSWORD_STORE_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/password-store"
|
||||
export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch-config"
|
||||
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0"
|
||||
export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc"
|
||||
export INPUTRC="$XDG_CONFIG_HOME/shell/inputrc"
|
||||
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
|
||||
#export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||
export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default"
|
||||
export KODI_DATA="$XDG_DATA_HOME/kodi"
|
||||
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store"
|
||||
export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
|
||||
export ANDROID_SDK_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/android"
|
||||
export CARGO_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/cargo"
|
||||
export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
|
||||
export ANSIBLE_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/ansible/ansible.cfg"
|
||||
export UNISON="${XDG_DATA_HOME:-$HOME/.local/share}/unison"
|
||||
export HISTFILE="${XDG_DATA_HOME:-$HOME/.local/share}/history"
|
||||
export WEECHAT_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/weechat"
|
||||
export MBSYNCRC="${XDG_CONFIG_HOME:-$HOME/.config}/mbsync/config"
|
||||
export ELECTRUMDIR="${XDG_DATA_HOME:-$HOME/.local/share}/electrum"
|
||||
export ANDROID_SDK_HOME="$XDG_CONFIG_HOME/android"
|
||||
#export ANDROID_SDK_HOME="$HOME/android_sdk"
|
||||
#export ANDROID_SDK="$HOME/android_sdk"
|
||||
#export ANDROID_NDK="$HOME/android_sdk/ndk-bundle"
|
||||
#export PATH="$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/cmdline_tools/bin"
|
||||
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||
export GOPATH="$XDG_DATA_HOME/go"
|
||||
export GOMODCACHE="$XDG_CACHE_HOME/go/mod"
|
||||
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible/ansible.cfg"
|
||||
export UNISON="$XDG_DATA_HOME/unison"
|
||||
export HISTFILE="$XDG_DATA_HOME/history"
|
||||
export MBSYNCRC="$XDG_CONFIG_HOME/mbsync/config"
|
||||
export ELECTRUMDIR="$XDG_DATA_HOME/electrum"
|
||||
export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc"
|
||||
export SQLITE_HISTORY="$XDG_DATA_HOME/sqlite_history"
|
||||
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npm/npmrc"
|
||||
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
|
||||
|
||||
# Other program settings:
|
||||
export DICS="/usr/share/stardict/dic/"
|
||||
export SUDO_ASKPASS="$HOME/.local/bin/dmenupass"
|
||||
export FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
|
||||
export LESS=-R
|
||||
export LESS="R"
|
||||
export LESS_TERMCAP_mb="$(printf '%b' '[1;31m')"
|
||||
export LESS_TERMCAP_md="$(printf '%b' '[1;36m')"
|
||||
export LESS_TERMCAP_me="$(printf '%b' '[0m')"
|
||||
@ -60,26 +66,31 @@ export LESS_TERMCAP_us="$(printf '%b' '[1;32m')"
|
||||
export LESS_TERMCAP_ue="$(printf '%b' '[0m')"
|
||||
export LESSOPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
|
||||
export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme.
|
||||
export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
|
||||
#export MOZ_USE_XINPUT2=1 # Mozilla smooth scrolling/touchpads.
|
||||
export AWT_TOOLKIT="MToolkit wmname LG3D" # May have to install wmname
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
|
||||
export GTK_IM_MODULE=fcitx
|
||||
export QT_IM_MODULE=fcitx
|
||||
export XMODIFIERS=@im=fcitx
|
||||
export SDL_IM_MODULE=fcitx
|
||||
export GLFW_IM_MODULE=ibus
|
||||
export GTK_IM_MODULE="fcitx"
|
||||
export QT_IM_MODULE="fcitx"
|
||||
export XMODIFIERS=@im="fcitx"
|
||||
export SDL_IM_MODULE="fcitx"
|
||||
export GLFW_IM_MODULE="ibus"
|
||||
#export QT_STYLE_OVERRIDE=Materia-dark
|
||||
export GTK_THEME="Materia-dark"
|
||||
|
||||
#wayland
|
||||
#export QT_QPA_PLATFORM=wayland
|
||||
#export XDG_CURRENT_DESKTOP=river
|
||||
#export XDG_SESSION_DESKTOP=river
|
||||
#export XDG_CURRENT_SESSION_TYPE=wayland
|
||||
#export QT_QPA_PLATFORM="wayland"
|
||||
#export XDG_CURRENT_DESKTOP="river"
|
||||
#export XDG_SESSION_DESKTOP="river"
|
||||
#export XDG_CURRENT_SESSION_TYPE="wayland"
|
||||
#export GDK_BACKEND="wayland,x11"
|
||||
#export MOZ_ENABLE_WAYLAND=1
|
||||
|
||||
|
||||
[ ! -f ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ] && setsid shortcuts >/dev/null 2>&1
|
||||
export GDK_BACKEND="wayland"
|
||||
#export MOZ_ENABLE_WAYLAND="1"
|
||||
#export WLR_RENDERER="vulkan"
|
||||
|
||||
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
|
||||
export WINDOW_MANAGER=sway
|
||||
exec /usr/bin/sway
|
||||
fi
|
||||
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty3" ]; then
|
||||
export WINDOW_MANAGER=river
|
||||
exec /usr/local/bin/river
|
||||
fi
|
||||
|
@ -1,17 +0,0 @@
|
||||
# Read `man 5 sway-bar` for more information about this section.
|
||||
bar {
|
||||
position bottom
|
||||
|
||||
# When the status_command prints a new line to stdout, swaybar updates.
|
||||
# The default just shows the current date and time.
|
||||
#status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
|
||||
status_command while ~/.config/sway/status.sh; do sleep 1; done
|
||||
|
||||
colors {
|
||||
statusline #888888
|
||||
background #000000
|
||||
focused_workspace #888888 #888888 #000000
|
||||
active_workspace #888888 #888888 #000000
|
||||
inactive_workspace #6B313D #6B313D #bbbbbb
|
||||
}
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
### sway settings
|
||||
### sway(fx) settings
|
||||
|
||||
|
||||
# logo key. Use Mod1 for Alt.
|
||||
set $mod Mod4
|
||||
@ -12,23 +13,24 @@ set $right l
|
||||
set $term $TERMINAL
|
||||
set $browser $BROWSER
|
||||
set $editor $EDITOR
|
||||
set $menu dmenu_path | dmenu | xargs swaymsg exec --
|
||||
set $menu wofi -i --show drun | xargs swaymsg exec --
|
||||
set $dmenu wofi -i --show run | xargs swaymsg exec --
|
||||
|
||||
# wallpaper
|
||||
output "*" background ~/.local/share/bg fill
|
||||
exec change-background
|
||||
|
||||
|
||||
### daemons
|
||||
|
||||
|
||||
# autotype
|
||||
exec ydotoold
|
||||
# notifications
|
||||
exec swaync
|
||||
|
||||
# display orientation
|
||||
exec --no-startup-id kanshi
|
||||
|
||||
# input method
|
||||
exec fcitx5
|
||||
#exec fcitx5
|
||||
|
||||
# night light
|
||||
#exec sleep 3 && gammastep -l LAT:LON
|
||||
@ -37,36 +39,68 @@ exec fcitx5
|
||||
exec mpd
|
||||
|
||||
# xresources (nsxiv theme, and other programs)
|
||||
exec xrdb $HOME/.config/x11/xresources
|
||||
exec sleep 5 && xrdb -load $HOME/.config/x11/xresources
|
||||
|
||||
# Syncthing (sync daemon)
|
||||
exec syncthing --no-browser
|
||||
|
||||
# polkit
|
||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec --no-startup-id /usr/libexec/polkit-gnome-authentication-agent-1
|
||||
|
||||
# emacs daemon
|
||||
exec /usr/bin/emacs --daemon
|
||||
# sworkstyle
|
||||
#exec sworkstyle &> /tmp/sworkstyle.log
|
||||
|
||||
exec_always autotiling
|
||||
#assign [app_id="librewolf"] 2
|
||||
#assign [app_id="firefox"] 2
|
||||
#assign [app_id="mumble"] 9
|
||||
#assign [app_id="dino"] 9
|
||||
#assign [app_id="deluge"] 10
|
||||
|
||||
#for_window [app_id=".*"] floating enable
|
||||
for_window [app_id="uxnemu"] floating enable
|
||||
for_window [app_id="uxnemu"] border pixel 0
|
||||
|
||||
|
||||
#exec_always autotiling
|
||||
exec systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||||
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||||
|
||||
|
||||
# behavior
|
||||
focus_follows_mouse no
|
||||
hide_edge_borders smart
|
||||
workspace_auto_back_and_forth no
|
||||
show_marks yes
|
||||
|
||||
# looks
|
||||
font pango: monospace 8
|
||||
gaps inner 25
|
||||
default_border pixel 2
|
||||
hide_edge_borders smart
|
||||
bindsym $mod+Control+y border toggle
|
||||
|
||||
#set $cl_high #F5C2E7
|
||||
set $cl_high #1C242D
|
||||
set $cl_indi #1C242D
|
||||
set $cl_back #1E1D2F
|
||||
# swayfx specific
|
||||
blur enable
|
||||
blur_xray enable
|
||||
blur_passes 1
|
||||
# 2
|
||||
blur_radius 1
|
||||
# 3
|
||||
#corner_radius 20
|
||||
shadows disable
|
||||
|
||||
#set $cl_high #333333
|
||||
#set $cl_indi #333333
|
||||
#set $cl_back #222222
|
||||
|
||||
#set $cl_high #000000
|
||||
#set $cl_indi #000000
|
||||
#set $cl_back #999999
|
||||
|
||||
# river colors
|
||||
set $cl_high #93a1a1
|
||||
set $cl_indi #586e75
|
||||
set $cl_back #002b36
|
||||
|
||||
set $cl_fore #d9d8d8
|
||||
set $cl_urge #FF0000
|
||||
|
||||
@ -75,6 +109,13 @@ client.focused_inactive $cl_back $cl_back $cl_fore $cl_back $cl_back
|
||||
client.unfocused $cl_back $cl_back $cl_fore $cl_back $cl_back
|
||||
client.urgent $cl_urge $cl_urge $cl_fore $cl_urge $cl_urge
|
||||
|
||||
#set $gnome-schema org.gnome.desktop.interface
|
||||
# exec_always {
|
||||
# gsettings set $gnome-schema gtk-theme 'Materia-dark'
|
||||
# gsettings set $gnome-schema icon-theme 'Papirus-Dark'
|
||||
# gsettings set $gnome-schema color-scheme 'prefer-dark'
|
||||
#}
|
||||
|
||||
### Idle configuration
|
||||
|
||||
# timeout
|
||||
@ -92,7 +133,8 @@ bindsym $mod+q kill
|
||||
|
||||
# start your launcher
|
||||
bindsym $mod+d exec $menu
|
||||
bindsym $mod+Shift+d exec wofi --show drun
|
||||
bindsym $mod+Shift+d exec $dmenu
|
||||
|
||||
|
||||
# drag floating windows by holding down $mod and left mouse button.
|
||||
# resize them with right mouse button + $mod.
|
||||
@ -105,7 +147,7 @@ floating_modifier $mod normal
|
||||
bindsym $mod+Shift+r reload
|
||||
|
||||
# toggle waybar
|
||||
bindsym $mod+Shift+x exec killall -SIGUSR1 waybar
|
||||
bindsym $mod+x exec killall -SIGUSR1 waybar
|
||||
|
||||
# exit sway (logs you out of your wayland session)
|
||||
bindsym $mod+Shift+backspace exec prompt "Do you really wont to exit sway? This will end your Wayland session" "swaymsg exit"
|
||||
@ -126,56 +168,51 @@ bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
|
||||
# screenshot
|
||||
bindsym Print exec grimshot save output $HOME/Pictures/Screenshots/$(date +'%Y-%m-%d_%H.%M.%S_%Z').png
|
||||
bindsym $mod+Print exec grimshot save active $HOME/Pictures/Screenshots/$(date +'%Y-%m-%d_%H.%M.%S_%Z').png
|
||||
bindsym $mod+Shift+Print exec grimshot save window $HOME/Pictures/Screenshots/$(date +'%Y-%m-%d_%H.%M.%S_%Z').png
|
||||
bindsym Print exec screenshot.sh output
|
||||
bindsym $mod+Print exec screenshot.sh active
|
||||
bindsym $mod+Shift+Print exec screenshot.sh window
|
||||
# alternative keybind
|
||||
bindsym $mod+Control+u exec grimshot save output $HOME/pictures/Screenshots/$(date +'%Y-%m-%d_%H.%M.%S_%Z').png
|
||||
bindsym $mod+u exec grimshot save active $HOME/pictures/Screenshots/$(date +'%Y-%m-%d_%H.%M.%S_%Z').png
|
||||
bindsym $mod+Shift+u exec grimshot save window $HOME/pictures/Screenshots/$(date +'%Y-%m-%d_%H.%M.%S_%Z').png
|
||||
bindsym $mod+Control+u exec screenshot.sh output
|
||||
bindsym $mod+u exec screenshot.sh active
|
||||
bindsym $mod+Shift+u exec screenshot.sh window
|
||||
|
||||
# app switcher
|
||||
#bindsym $mod+Tab exec sway-select-window
|
||||
bindsym $mod+Tab exec ss.sh
|
||||
|
||||
### programs
|
||||
|
||||
# sway config
|
||||
bindsym $mod+F1 exec $term -e $editor ~/.config/sway/config
|
||||
|
||||
# browser
|
||||
bindsym $mod+w exec $browser
|
||||
|
||||
# agenda
|
||||
bindsym $mod+c exec $term -e $editor --eval '(org-agenda-list)'
|
||||
bindsym $mod+c exec emacsclient -c -a '' --eval '(org-agenda-list)'
|
||||
|
||||
# diary
|
||||
bindsym $mod+Control+n $term -e $editor --eval '(org-journal-new-entry 1)'
|
||||
|
||||
# notebook
|
||||
bindsym $mod+n exec $term -e $editor ~/notebook/index.org
|
||||
bindsym $mod+Control+r $term -e $editor ~/notebook/refile.org
|
||||
# org-capture
|
||||
bindsym $mod+Shift+c exec ~/.emacs.d/bin/org-capture
|
||||
|
||||
# newsboat (rss)
|
||||
bindsym $mod+Shift+n exec $term -e newsboat
|
||||
|
||||
# notifications tab
|
||||
bindsym $mod+Shift+t exec $term -e swaync-client -t
|
||||
bindsym $mod+t exec swaync-client -t
|
||||
|
||||
# file manager
|
||||
bindsym $mod+r exec $term -e lf
|
||||
|
||||
# emacs
|
||||
bindsym $mod+e exec $term -e $editor
|
||||
bindsym $mod+Shift+e exec em
|
||||
bindsym $mod+e exec emacsclient -c -a ''
|
||||
|
||||
# mail
|
||||
#bindsym $mod+e exec $term -e neomutt
|
||||
|
||||
# start tasks in dmenu
|
||||
bindsym $mod+x exec start-tasks
|
||||
#bindsym $mod+e exec thunderbird-wayland
|
||||
|
||||
# bookmarks
|
||||
bindsym $mod+b exec $term -e $editor ~/notebook/bookmarks.org
|
||||
# open
|
||||
bindsym $mod+b exec emacsclient -c -a '' ~/notebook/bookmarks.org
|
||||
# open bookmarks
|
||||
bindsym $mod+shift+b exec bookmark
|
||||
bindsym $mod+Insert exec ydotool type "$(grep -v '^#' ~/notebook/bookmarks/bookmarks.org | dmenu -l 50 | cut -d' ' -f1)"
|
||||
# insert
|
||||
bindsym $mod+Insert exec wtype "$(grep -v '^#' ~/notebook/bookmarks.org | dmenu -l 50 | cut -d' ' -f1)"
|
||||
|
||||
# kaomiji?
|
||||
# bindsym $mod+z exec dmenukaomoji
|
||||
@ -186,9 +223,12 @@ bindsym $mod+shift+Insert exec keepmenu
|
||||
# download script
|
||||
bindsym $mod+Control+m exec musdl
|
||||
|
||||
# youtube client
|
||||
# open youtube link in ft
|
||||
bindsym $mod+y exec io.freetubeapp.FreeTube $(wl-paste)
|
||||
|
||||
# games
|
||||
# bindsym $mod+g exec taverner
|
||||
|
||||
# workspace names
|
||||
set $wp1 1
|
||||
set $wp2 2
|
||||
@ -201,29 +241,54 @@ set $wp8 8
|
||||
set $wp9 9
|
||||
set $wp10 10
|
||||
|
||||
|
||||
# binding workspace to monitors
|
||||
# main monitor on right
|
||||
#workspace $wp1 output DVI-D-1
|
||||
#workspace $wp2 output DVI-D-1
|
||||
#workspace $wp3 output DVI-D-1
|
||||
#workspace $wp4 output DVI-D-1
|
||||
#workspace $wp5 output DVI-D-1
|
||||
#workspace $wp6 output HDMI-A-1
|
||||
#workspace $wp7 output HDMI-A-1
|
||||
#workspace $wp8 output HDMI-A-1
|
||||
#workspace $wp9 output HDMI-A-1
|
||||
#workspace $wp10 output HDMI-A-1
|
||||
# main monitor on left
|
||||
workspace $wp1 output HDMI-A-1
|
||||
workspace $wp2 output HDMI-A-1
|
||||
workspace $wp3 output HDMI-A-1
|
||||
workspace $wp4 output HDMI-A-1
|
||||
workspace $wp5 output HDMI-A-1
|
||||
workspace $wp6 output DVI-D-1
|
||||
workspace $wp7 output DVI-D-1
|
||||
workspace $wp8 output DVI-D-1
|
||||
workspace $wp9 output DVI-D-1
|
||||
workspace $wp10 output DVI-D-1
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace $wp1
|
||||
bindsym $mod+2 workspace $wp2
|
||||
bindsym $mod+3 workspace $wp3
|
||||
bindsym $mod+4 workspace $wp4
|
||||
bindsym $mod+5 workspace $wp5
|
||||
bindsym $mod+6 workspace $wp6
|
||||
bindsym $mod+7 workspace $wp7
|
||||
bindsym $mod+8 workspace $wp8
|
||||
bindsym $mod+9 workspace $wp9
|
||||
bindsym $mod+0 workspace $wp10
|
||||
bindsym $mod+1 workspace number $wp1
|
||||
bindsym $mod+2 workspace number $wp2
|
||||
bindsym $mod+3 workspace number $wp3
|
||||
bindsym $mod+4 workspace number $wp4
|
||||
bindsym $mod+5 workspace number $wp5
|
||||
bindsym $mod+6 workspace number $wp6
|
||||
bindsym $mod+7 workspace number $wp7
|
||||
bindsym $mod+8 workspace number $wp8
|
||||
bindsym $mod+9 workspace number $wp9
|
||||
bindsym $mod+0 workspace number $wp10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace $wp1
|
||||
bindsym $mod+Shift+2 move container to workspace $wp2
|
||||
bindsym $mod+Shift+3 move container to workspace $wp3
|
||||
bindsym $mod+Shift+4 move container to workspace $wp4
|
||||
bindsym $mod+Shift+5 move container to workspace $wp5
|
||||
bindsym $mod+Shift+6 move container to workspace $wp6
|
||||
bindsym $mod+Shift+7 move container to workspace $wp7
|
||||
bindsym $mod+Shift+8 move container to workspace $wp8
|
||||
bindsym $mod+Shift+9 move container to workspace $wp9
|
||||
bindsym $mod+Shift+0 move container to workspace $wp10
|
||||
bindsym $mod+Shift+1 move container to workspace number $wp1
|
||||
bindsym $mod+Shift+2 move container to workspace number $wp2
|
||||
bindsym $mod+Shift+3 move container to workspace number $wp3
|
||||
bindsym $mod+Shift+4 move container to workspace number $wp4
|
||||
bindsym $mod+Shift+5 move container to workspace number $wp5
|
||||
bindsym $mod+Shift+6 move container to workspace number $wp6
|
||||
bindsym $mod+Shift+7 move container to workspace number $wp7
|
||||
bindsym $mod+Shift+8 move container to workspace number $wp8
|
||||
bindsym $mod+Shift+9 move container to workspace number $wp9
|
||||
bindsym $mod+Shift+0 move container to workspace number $wp10
|
||||
|
||||
# move focused container to workspace
|
||||
# with comma/period (</>)
|
||||
@ -255,9 +320,9 @@ bindsym $mod+Alt+down move workspace to output down
|
||||
bindsym $mod+s sticky toggle
|
||||
|
||||
# switch the current container between different layout styles
|
||||
# bindsym $mod+s layout stacking
|
||||
# bindsym $mod+w layout tabbed
|
||||
# bindsym $mod+e layout toggle split
|
||||
#bindsym $mod+Shift+s layout stacking
|
||||
bindsym $mod+Shift+w layout tabbed
|
||||
bindsym $mod+Shift+e layout toggle split
|
||||
|
||||
# make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
@ -305,7 +370,7 @@ mode "resize" {
|
||||
# status bar
|
||||
#include $HOME/.config/sway/bar
|
||||
exec_always killall waybar
|
||||
exec_always sleep 2 && waybar
|
||||
exec_always sleep 3 && waybar
|
||||
|
||||
|
||||
### special keys
|
||||
@ -348,5 +413,7 @@ bindsym $mod+m exec $term -e ncmpcpp
|
||||
#bindsym $mod+Shift+o exec mpc repeat
|
||||
#bindsym $mod+Shift+i exec mpc seek 0%
|
||||
|
||||
bindsym $mod+Shift+s exec ~/.config/sway/scripts/sway-select-window
|
||||
|
||||
include /etc/sway/config.d/*
|
||||
include ~/syncthing/default/config.d/sway/*
|
||||
include ~/.config/sway/priv
|
||||
|
@ -1,23 +0,0 @@
|
||||
# The Sway configuration file in ~/.config/sway/config calls this script.
|
||||
# You should see changes to the status bar after saving this script.
|
||||
# If not, do "killall swaybar" and $mod+Shift+c to reload the configuration.
|
||||
|
||||
# Produces "21 days", for example
|
||||
uptime_formatted=$(uptime | cut -d ',' -f1 | cut -d ' ' -f4,5)
|
||||
|
||||
# The abbreviated weekday (e.g., "Sat"), followed by the ISO-formatted date
|
||||
# like 2018-10-06 and the time (e.g., 14:01)
|
||||
#date_formatted=$(date "+%d-%m-%Y %I:%M:%S %p")
|
||||
date_formatted=$(date "+%Y-%m-%d %H:%M %p")
|
||||
|
||||
# Returns the battery status: "Full", "Discharging", or "Charging".
|
||||
battery_status=$(cat /sys/class/power_supply/BAT0/status)
|
||||
|
||||
# Returns the battery capacity: n%
|
||||
battery_capacity="$(cat /sys/class/power_supply/BAT0/capacity)%"
|
||||
# Volume
|
||||
vol="$(pamixer --get-volume)"
|
||||
|
||||
unread="$(find "${XDG_DATA_HOME:-$HOME/.local/share}"/mail/*/[Ii][Nn][Bb][Oo][Xx]/new/* -type f | wc -l 2>/dev/null)"
|
||||
|
||||
echo $uptime vol-"$vol%" \| $date_formatted \| mail-$unread
|
78
home/default/.config/swaync/config.json
Normal file
78
home/default/.config/swaync/config.json
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"$schema": "/etc/xdg/swaync/configSchema.json",
|
||||
"positionX": "right",
|
||||
"positionY": "top",
|
||||
"layer": "overlay",
|
||||
"control-center-layer": "overlay",
|
||||
"layer-shell": true,
|
||||
"cssPriority": "application",
|
||||
"control-center-margin-top": 0,
|
||||
"control-center-margin-bottom": 0,
|
||||
"control-center-margin-right": 0,
|
||||
"control-center-margin-left": 0,
|
||||
"notification-2fa-action": true,
|
||||
"notification-inline-replies": false,
|
||||
"notification-icon-size": 64,
|
||||
"notification-body-image-height": 100,
|
||||
"notification-body-image-width": 200,
|
||||
"timeout": 10,
|
||||
"timeout-low": 5,
|
||||
"timeout-critical": 0,
|
||||
"fit-to-screen": true,
|
||||
"control-center-width": 500,
|
||||
"control-center-height": 600,
|
||||
"notification-window-width": 500,
|
||||
"keyboard-shortcuts": true,
|
||||
"image-visibility": "when-available",
|
||||
"transition-time": 200,
|
||||
"hide-on-clear": false,
|
||||
"hide-on-action": true,
|
||||
"script-fail-notify": true,
|
||||
"scripts": {
|
||||
"example-script": {
|
||||
"exec": "echo 'Do something...'",
|
||||
"urgency": "Normal"
|
||||
},
|
||||
"example-action-script": {
|
||||
"exec": "echo 'Do something actionable!'",
|
||||
"urgency": "Normal",
|
||||
"run-on": "action"
|
||||
}
|
||||
},
|
||||
"notification-visibility": {
|
||||
"example-name": {
|
||||
"state": "muted",
|
||||
"urgency": "Low",
|
||||
"app-name": "Spotify"
|
||||
}
|
||||
},
|
||||
"widgets": [
|
||||
"inhibitors",
|
||||
"title",
|
||||
"dnd",
|
||||
"notifications"
|
||||
],
|
||||
"widget-config": {
|
||||
"inhibitors": {
|
||||
"text": "Inhibitors",
|
||||
"button-text": "Clear All",
|
||||
"clear-all-button": true
|
||||
},
|
||||
"title": {
|
||||
"text": "Notifications",
|
||||
"clear-all-button": true,
|
||||
"button-text": "Clear All"
|
||||
},
|
||||
"dnd": {
|
||||
"text": "Do Not Disturb"
|
||||
},
|
||||
"label": {
|
||||
"max-lines": 5,
|
||||
"text": "Label Text"
|
||||
},
|
||||
"mpris": {
|
||||
"image-size": 96,
|
||||
"image-radius": 12
|
||||
}
|
||||
}
|
||||
}
|
295
home/default/.config/swaync/style.css
Normal file
295
home/default/.config/swaync/style.css
Normal file
@ -0,0 +1,295 @@
|
||||
/*#303446*/
|
||||
/*#222222*/
|
||||
@define-color main-bg #222222;
|
||||
/*#414559*/
|
||||
/*#333333*/
|
||||
@define-color box-fg #222222;
|
||||
/*#c6d0f5*/
|
||||
/*#ffffff*/
|
||||
/*#c5c8c6*/
|
||||
@define-color text-color #c5c8c6;
|
||||
/*#a5adce*/
|
||||
/*#ffffff*/
|
||||
/*#8c8c8c*/
|
||||
@define-color text-color-inbox #8c8c8c;
|
||||
/*#e78284*/
|
||||
@define-color close-button-bg #e78284;
|
||||
/*#51576d*/
|
||||
/*#555555*/
|
||||
@define-color border-color #333333;
|
||||
/*#51576d*/
|
||||
/*#222222*/
|
||||
@define-color button-fg #333333;
|
||||
/*#737994*/
|
||||
@define-color button-border #555555;
|
||||
|
||||
* {
|
||||
all: unset;
|
||||
font-size: 14px;
|
||||
font-family: "Ubuntu Nerd Font";
|
||||
transition: 200ms;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px @box-fg;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: @main-bg;
|
||||
color: @text-color;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 @close-button-bg;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .summary {
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .time {
|
||||
color: @text-color-inbox;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .body {
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
border-radius: 7px;
|
||||
color: @text-color;
|
||||
background-color: @box-fg;
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
background-color: @box-fg;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
background-color: #85c1dc;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: @main-bg;
|
||||
background-color: @close-button-bg;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:hover {
|
||||
background-color: #ea999c;
|
||||
color: @main-bg;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:active {
|
||||
background-color: @close-button-bg;
|
||||
color: @main-bg;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px @box-fg;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: @main-bg;
|
||||
color: @text-color;
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.control-center .widget-title {
|
||||
color: @text-color;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.control-center .widget-title button {
|
||||
border-radius: 7px;
|
||||
color: @text-color;
|
||||
background-color: @box-fg;
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:hover {
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
background-color: #626880;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:active {
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
background-color: #85c1dc;
|
||||
color: @main-bg;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background {
|
||||
border-radius: 7px;
|
||||
color: @text-color;
|
||||
background-color: @box-fg;
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 @close-button-bg;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .summary {
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .time {
|
||||
color: @text-color-inbox;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .body {
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
border-radius: 7px;
|
||||
color: @text-color;
|
||||
background-color: #232634;
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
background-color: @box-fg;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
background-color: #85c1dc;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: @main-bg;
|
||||
background-color: #ea999c;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:hover {
|
||||
background-color: @close-button-bg;
|
||||
color: @main-bg;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:active {
|
||||
background-color: @close-button-bg;
|
||||
color: @main-bg;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:hover {
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
background-color: #838ba7;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:active {
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
background-color: #85c1dc;
|
||||
color: @text-color;
|
||||
}
|
||||
|
||||
progressbar,
|
||||
progress,
|
||||
trough {
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
progressbar {
|
||||
box-shadow: inset 0 0 0 1px @border-color;
|
||||
}
|
||||
|
||||
.notification.critical progress {
|
||||
background-color: @close-button-bg;
|
||||
}
|
||||
|
||||
.notification.low progress,
|
||||
.notification.normal progress {
|
||||
background-color: #8caaee;
|
||||
}
|
||||
|
||||
trough {
|
||||
background-color: @box-fg;
|
||||
}
|
||||
|
||||
.control-center trough {
|
||||
background-color: @button-fg;
|
||||
}
|
||||
|
||||
.control-center-dnd {
|
||||
margin-top: 5px;
|
||||
border-radius: 8px;
|
||||
background: @box-fg;
|
||||
border: 1px solid @border-color;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.control-center-dnd:checked {
|
||||
background: @box-fg;
|
||||
}
|
||||
|
||||
.control-center-dnd slider {
|
||||
background: @button-fg;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.widget-dnd {
|
||||
margin: 0px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 8px;
|
||||
background: @box-fg;
|
||||
border: 1px solid @border-color;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:checked {
|
||||
background: @box-fg;
|
||||
}
|
||||
|
||||
.widget-dnd > switch slider {
|
||||
background: @button-fg;
|
||||
border-radius: 8px;
|
||||
border: 1px solid @button-border;
|
||||
}
|
361
home/default/.config/swaync/style.css.def
Normal file
361
home/default/.config/swaync/style.css.def
Normal file
@ -0,0 +1,361 @@
|
||||
/*
|
||||
* vim: ft=less
|
||||
*/
|
||||
|
||||
@define-color cc-bg rgba(0, 0, 0, 0.7);
|
||||
|
||||
@define-color noti-border-color rgba(255, 255, 255, 0.15);
|
||||
@define-color noti-bg rgb(48, 48, 48);
|
||||
@define-color noti-bg-darker rgb(38, 38, 38);
|
||||
@define-color noti-bg-hover rgb(56, 56, 56);
|
||||
@define-color noti-bg-focus rgba(68, 68, 68, 0.6);
|
||||
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
|
||||
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
|
||||
|
||||
@define-color text-color rgb(255, 255, 255);
|
||||
@define-color text-color-disabled rgb(150, 150, 150);
|
||||
|
||||
@define-color bg-selected rgb(0, 128, 255);
|
||||
|
||||
.notification-row {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.notification-row:focus,
|
||||
.notification-row:hover {
|
||||
background: @noti-bg-focus;
|
||||
}
|
||||
|
||||
.notification {
|
||||
border-radius: 12px;
|
||||
margin: 6px 12px;
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
|
||||
0 2px 6px 2px rgba(0, 0, 0, 0.3);
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Uncomment to enable specific urgency colors
|
||||
.low {
|
||||
background: yellow;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.normal {
|
||||
background: green;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.critical {
|
||||
background: red;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
*/
|
||||
|
||||
.notification-content {
|
||||
background: transparent;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: @noti-close-bg;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 100%;
|
||||
margin-top: 10px;
|
||||
margin-right: 16px;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
min-width: 24px;
|
||||
min-height: 24px;
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: @noti-close-bg-hover;
|
||||
transition: all 0.15s ease-in-out;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.notification-default-action,
|
||||
.notification-action {
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
color: @text-color;
|
||||
transition: all 0.15s ease-in-out;
|
||||
}
|
||||
|
||||
.notification-default-action:hover,
|
||||
.notification-action:hover {
|
||||
-gtk-icon-effect: none;
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
.notification-default-action {
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* When alternative actions are visible */
|
||||
.notification-default-action:not(:only-child) {
|
||||
border-bottom-left-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
}
|
||||
|
||||
.notification-action {
|
||||
border-radius: 0px;
|
||||
border-top: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
/* add bottom border radius to eliminate clipping */
|
||||
.notification-action:first-child {
|
||||
border-bottom-left-radius: 10px;
|
||||
}
|
||||
|
||||
.notification-action:last-child {
|
||||
border-bottom-right-radius: 10px;
|
||||
border-right: 1px solid @noti-border-color;
|
||||
}
|
||||
|
||||
.inline-reply {
|
||||
margin-top: 8px;
|
||||
}
|
||||
.inline-reply-entry {
|
||||
background: @noti-bg-darker;
|
||||
color: @text-color;
|
||||
caret-color: @text-color;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.inline-reply-button {
|
||||
margin-left: 4px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px;
|
||||
color: @text-color;
|
||||
}
|
||||
.inline-reply-button:disabled {
|
||||
background: initial;
|
||||
color: @text-color-disabled;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.inline-reply-button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
.image {
|
||||
}
|
||||
|
||||
.body-image {
|
||||
margin-top: 6px;
|
||||
background-color: white;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.time {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
margin-right: 18px;
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
background: @cc-bg;
|
||||
}
|
||||
|
||||
.control-center-list {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.floating-notifications {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Window behind control center and on all other monitors */
|
||||
.blank-window {
|
||||
background: alpha(black, 0.25);
|
||||
}
|
||||
|
||||
/*** Widgets ***/
|
||||
|
||||
/* Title widget */
|
||||
.widget-title {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.widget-title > button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.widget-title > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
/* DND widget */
|
||||
.widget-dnd {
|
||||
margin: 8px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
}
|
||||
.widget-dnd > switch:checked {
|
||||
background: @bg-selected;
|
||||
}
|
||||
.widget-dnd > switch slider {
|
||||
background: @noti-bg-hover;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Label widget */
|
||||
.widget-label {
|
||||
margin: 8px;
|
||||
}
|
||||
.widget-label > label {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Mpris widget */
|
||||
.widget-mpris {
|
||||
/* The parent to all players */
|
||||
}
|
||||
.widget-mpris-player {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
}
|
||||
.widget-mpris-title {
|
||||
font-weight: bold;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Buttons widget */
|
||||
.widget-buttons-grid {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
background-color: @noti-bg;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button{
|
||||
background: @noti-bg;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
/* Menubar widget */
|
||||
.widget-menubar>box>.menu-button-bar>button {
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* .AnyName { Name defined in config after #
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.AnyName>button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.AnyName>button:hover {
|
||||
background-color: @noti-bg-hover;
|
||||
} */
|
||||
|
||||
.topbar-buttons>button { /* Name defined in config after # */
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Volume widget */
|
||||
|
||||
.widget-volume {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.widget-volume>box>button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.per-app-volume {
|
||||
background-color: @noti-bg-alt;
|
||||
padding: 4px 8px 8px 8px;
|
||||
margin: 0px 8px 8px 8px;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
/* Backlight widget */
|
||||
.widget-backlight {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Title widget */
|
||||
.widget-inhibitors {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.widget-inhibitors > button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.widget-inhibitors > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
370
home/default/.config/swaync/style.current.css
Normal file
370
home/default/.config/swaync/style.current.css
Normal file
@ -0,0 +1,370 @@
|
||||
/*
|
||||
* vim: ft=less
|
||||
*/
|
||||
|
||||
/*@define-color cc-bg rgba(0, 0, 0, 0.7);*/
|
||||
@define-color cc-bg #161616;
|
||||
|
||||
@define-color noti-border-color rgba(255, 255, 255, 0.15);
|
||||
/*@define-color noti-bg rgb(48, 48, 48);*/
|
||||
@define-color noti-bg rgb(0, 0, 0);
|
||||
@define-color noti-bg-darker rgb(38, 38, 38);
|
||||
@define-color noti-bg-hover rgb(56, 56, 56);
|
||||
/*@define-color noti-bg-focus rgba(68, 68, 68, 0.6);*/
|
||||
@define-color noti-bg-focus rgba(33, 33, 33, 0.6);
|
||||
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
|
||||
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
|
||||
|
||||
@define-color text-color rgb(255, 255, 255);
|
||||
@define-color text-color-disabled rgb(150, 150, 150);
|
||||
|
||||
@define-color bg-selected rgb(0, 128, 255);
|
||||
|
||||
.notification-row {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.notification-row:focus,
|
||||
.notification-row:hover {
|
||||
background: @noti-bg-focus;
|
||||
}
|
||||
|
||||
.notification {
|
||||
/*border-radius: 12px;*/
|
||||
border-radius: 0px;
|
||||
/*margin: 6px 12px;*/
|
||||
margin: 6px 12px;
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
|
||||
0 2px 6px 2px rgba(0, 0, 0, 0.3);
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Uncomment to enable specific urgency colors
|
||||
.low {
|
||||
background: yellow;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.normal {
|
||||
background: green;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.critical {
|
||||
background: red;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
*/
|
||||
|
||||
.notification-content {
|
||||
background: transparent;
|
||||
padding: 6px;
|
||||
/*border-radius:12px;*/
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: @noti-close-bg;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 100%;
|
||||
margin-top: 10px;
|
||||
margin-right: 16px;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
min-width: 24px;
|
||||
min-height: 24px;
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: @noti-close-bg-hover;
|
||||
transition: all 0.15s ease-in-out;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.notification-default-action,
|
||||
.notification-action {
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
color: @text-color;
|
||||
transition: all 0.15s ease-in-out;
|
||||
}
|
||||
|
||||
.notification-default-action:hover,
|
||||
.notification-action:hover {
|
||||
-gtk-icon-effect: none;
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
.notification-default-action {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
/* When alternative actions are visible */
|
||||
.notification-default-action:not(:only-child) {
|
||||
border-bottom-left-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
}
|
||||
|
||||
.notification-action {
|
||||
border-radius: 0px;
|
||||
border-top: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
/* add bottom border radius to eliminate clipping */
|
||||
.notification-action:first-child {
|
||||
/*border-bottom-left-radius: 10px;*/
|
||||
border-bottom-left-radius: 0px;
|
||||
}
|
||||
|
||||
.notification-action:last-child {
|
||||
/*border-bottom-right-radius: 10px;*/
|
||||
border-bottom-right-radius: 0px;
|
||||
padding-bottom: 1px;
|
||||
border-right: 1px solid @noti-border-color;
|
||||
}
|
||||
|
||||
.inline-reply {
|
||||
margin-top: 8px;
|
||||
}
|
||||
.inline-reply-entry {
|
||||
background: @noti-bg-darker;
|
||||
color: @text-color;
|
||||
caret-color: @text-color;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 0px;
|
||||
}
|
||||
.inline-reply-button {
|
||||
margin-left: 4px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 0px;
|
||||
color: @text-color;
|
||||
}
|
||||
.inline-reply-button:disabled {
|
||||
background: initial;
|
||||
color: @text-color-disabled;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.inline-reply-button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
.image {
|
||||
}
|
||||
|
||||
.body-image {
|
||||
margin-top: 6px;
|
||||
background-color: white;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.time {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
margin-right: 18px;
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
background: @cc-bg;
|
||||
}
|
||||
|
||||
.control-center-list {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.floating-notifications {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Window behind control center and on all other monitors */
|
||||
.blank-window {
|
||||
background: alpha(black, 0.25);
|
||||
}
|
||||
|
||||
/*** Widgets ***/
|
||||
|
||||
/* Title widget */
|
||||
.widget-title {
|
||||
margin: 8px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
.widget-title > button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.widget-title > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
/* DND widget */
|
||||
.widget-dnd {
|
||||
margin: 8px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
}
|
||||
.widget-dnd > switch:checked {
|
||||
background: @bg-selected;
|
||||
}
|
||||
.widget-dnd > switch slider {
|
||||
background: @noti-bg-hover;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Label widget */
|
||||
.widget-label {
|
||||
margin: 8px;
|
||||
}
|
||||
.widget-label > label {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Mpris widget */
|
||||
.widget-mpris {
|
||||
/* The parent to all players */
|
||||
}
|
||||
.widget-mpris-player {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
}
|
||||
.widget-mpris-title {
|
||||
font-weight: bold;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Buttons widget */
|
||||
.widget-buttons-grid {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 0px;
|
||||
background-color: @noti-bg;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button{
|
||||
background: @noti-bg;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
/* Menubar widget */
|
||||
.widget-menubar>box>.menu-button-bar>button {
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* .AnyName { Name defined in config after #
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius:12px;
|
||||
}
|
||||
|
||||
.AnyName>button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.AnyName>button:hover {
|
||||
background-color: @noti-bg-hover;
|
||||
} */
|
||||
|
||||
.topbar-buttons>button { /* Name defined in config after # */
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Volume widget */
|
||||
|
||||
.widget-volume {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
.widget-volume>box>button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.per-app-volume {
|
||||
background-color: @noti-bg-alt;
|
||||
padding: 4px 8px 8px 8px;
|
||||
margin: 0px 8px 8px 8px;
|
||||
border-radius: 0px
|
||||
}
|
||||
|
||||
/* Backlight widget */
|
||||
.widget-backlight {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
/* Title widget */
|
||||
.widget-inhibitors {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.widget-inhibitors > button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 0px;
|
||||
}
|
||||
.widget-inhibitors > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
361
home/default/.config/swaync/style.def.css
Normal file
361
home/default/.config/swaync/style.def.css
Normal file
@ -0,0 +1,361 @@
|
||||
/*
|
||||
* vim: ft=less
|
||||
*/
|
||||
|
||||
@define-color cc-bg rgba(0, 0, 0, 0.7);
|
||||
|
||||
@define-color noti-border-color rgba(255, 255, 255, 0.15);
|
||||
@define-color noti-bg rgb(48, 48, 48);
|
||||
@define-color noti-bg-darker rgb(38, 38, 38);
|
||||
@define-color noti-bg-hover rgb(56, 56, 56);
|
||||
@define-color noti-bg-focus rgba(68, 68, 68, 0.6);
|
||||
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
|
||||
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
|
||||
|
||||
@define-color text-color rgb(255, 255, 255);
|
||||
@define-color text-color-disabled rgb(150, 150, 150);
|
||||
|
||||
@define-color bg-selected rgb(0, 128, 255);
|
||||
|
||||
.notification-row {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.notification-row:focus,
|
||||
.notification-row:hover {
|
||||
background: @noti-bg-focus;
|
||||
}
|
||||
|
||||
.notification {
|
||||
border-radius: 12px;
|
||||
margin: 6px 12px;
|
||||
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7),
|
||||
0 2px 6px 2px rgba(0, 0, 0, 0.3);
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Uncomment to enable specific urgency colors
|
||||
.low {
|
||||
background: yellow;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.normal {
|
||||
background: green;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.critical {
|
||||
background: red;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
*/
|
||||
|
||||
.notification-content {
|
||||
background: transparent;
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: @noti-close-bg;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
padding: 0;
|
||||
border-radius: 100%;
|
||||
margin-top: 10px;
|
||||
margin-right: 16px;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
min-width: 24px;
|
||||
min-height: 24px;
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
box-shadow: none;
|
||||
background: @noti-close-bg-hover;
|
||||
transition: all 0.15s ease-in-out;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.notification-default-action,
|
||||
.notification-action {
|
||||
padding: 4px;
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
color: @text-color;
|
||||
transition: all 0.15s ease-in-out;
|
||||
}
|
||||
|
||||
.notification-default-action:hover,
|
||||
.notification-action:hover {
|
||||
-gtk-icon-effect: none;
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
.notification-default-action {
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* When alternative actions are visible */
|
||||
.notification-default-action:not(:only-child) {
|
||||
border-bottom-left-radius: 0px;
|
||||
border-bottom-right-radius: 0px;
|
||||
}
|
||||
|
||||
.notification-action {
|
||||
border-radius: 0px;
|
||||
border-top: none;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
/* add bottom border radius to eliminate clipping */
|
||||
.notification-action:first-child {
|
||||
border-bottom-left-radius: 10px;
|
||||
}
|
||||
|
||||
.notification-action:last-child {
|
||||
border-bottom-right-radius: 10px;
|
||||
border-right: 1px solid @noti-border-color;
|
||||
}
|
||||
|
||||
.inline-reply {
|
||||
margin-top: 8px;
|
||||
}
|
||||
.inline-reply-entry {
|
||||
background: @noti-bg-darker;
|
||||
color: @text-color;
|
||||
caret-color: @text-color;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.inline-reply-button {
|
||||
margin-left: 4px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
border-radius: 12px;
|
||||
color: @text-color;
|
||||
}
|
||||
.inline-reply-button:disabled {
|
||||
background: initial;
|
||||
color: @text-color-disabled;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.inline-reply-button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
.image {
|
||||
}
|
||||
|
||||
.body-image {
|
||||
margin-top: 6px;
|
||||
background-color: white;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.time {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
margin-right: 18px;
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
background: transparent;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
background: @cc-bg;
|
||||
}
|
||||
|
||||
.control-center-list {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.control-center-list-placeholder {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.floating-notifications {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Window behind control center and on all other monitors */
|
||||
.blank-window {
|
||||
background: alpha(black, 0.25);
|
||||
}
|
||||
|
||||
/*** Widgets ***/
|
||||
|
||||
/* Title widget */
|
||||
.widget-title {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.widget-title > button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.widget-title > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
/* DND widget */
|
||||
.widget-dnd {
|
||||
margin: 8px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 12px;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
}
|
||||
.widget-dnd > switch:checked {
|
||||
background: @bg-selected;
|
||||
}
|
||||
.widget-dnd > switch slider {
|
||||
background: @noti-bg-hover;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Label widget */
|
||||
.widget-label {
|
||||
margin: 8px;
|
||||
}
|
||||
.widget-label > label {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Mpris widget */
|
||||
.widget-mpris {
|
||||
/* The parent to all players */
|
||||
}
|
||||
.widget-mpris-player {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
}
|
||||
.widget-mpris-title {
|
||||
font-weight: bold;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.widget-mpris-subtitle {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
/* Buttons widget */
|
||||
.widget-buttons-grid {
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
background-color: @noti-bg;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button{
|
||||
background: @noti-bg;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
||||
|
||||
/* Menubar widget */
|
||||
.widget-menubar>box>.menu-button-bar>button {
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* .AnyName { Name defined in config after #
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.AnyName>button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.AnyName>button:hover {
|
||||
background-color: @noti-bg-hover;
|
||||
} */
|
||||
|
||||
.topbar-buttons>button { /* Name defined in config after # */
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* Volume widget */
|
||||
|
||||
.widget-volume {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.widget-volume>box>button {
|
||||
background: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.per-app-volume {
|
||||
background-color: @noti-bg-alt;
|
||||
padding: 4px 8px 8px 8px;
|
||||
margin: 0px 8px 8px 8px;
|
||||
border-radius: 12px
|
||||
}
|
||||
|
||||
/* Backlight widget */
|
||||
.widget-backlight {
|
||||
background-color: @noti-bg;
|
||||
padding: 8px;
|
||||
margin: 8px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Title widget */
|
||||
.widget-inhibitors {
|
||||
margin: 8px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.widget-inhibitors > button {
|
||||
font-size: initial;
|
||||
color: @text-color;
|
||||
text-shadow: none;
|
||||
background: @noti-bg;
|
||||
border: 1px solid @noti-border-color;
|
||||
box-shadow: none;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.widget-inhibitors > button:hover {
|
||||
background: @noti-bg-hover;
|
||||
}
|
270
home/default/.config/swaync/style.latte.css
Normal file
270
home/default/.config/swaync/style.latte.css
Normal file
@ -0,0 +1,270 @@
|
||||
* {
|
||||
all: unset;
|
||||
font-size: 14px;
|
||||
font-family: "Ubuntu Nerd Font";
|
||||
transition: 200ms;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #ccd0da;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: #eff1f5;
|
||||
color: #4c4f69;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 #d20f39;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .summary {
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .time {
|
||||
color: #6c6f85;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .body {
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
border-radius: 7px;
|
||||
color: #4c4f69;
|
||||
background-color: #ccd0da;
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
background-color: #ccd0da;
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
background-color: #209fb5;
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: #eff1f5;
|
||||
background-color: #d20f39;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:hover {
|
||||
background-color: #e64553;
|
||||
color: #eff1f5;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:active {
|
||||
background-color: #d20f39;
|
||||
color: #eff1f5;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #ccd0da;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: #eff1f5;
|
||||
color: #4c4f69;
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.control-center .widget-title {
|
||||
color: #4c4f69;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.control-center .widget-title button {
|
||||
border-radius: 7px;
|
||||
color: #4c4f69;
|
||||
background-color: #ccd0da;
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:hover {
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
background-color: #acb0be;
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:active {
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
background-color: #209fb5;
|
||||
color: #eff1f5;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background {
|
||||
border-radius: 7px;
|
||||
color: #4c4f69;
|
||||
background-color: #ccd0da;
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 #d20f39;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .summary {
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .time {
|
||||
color: #6c6f85;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .body {
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
border-radius: 7px;
|
||||
color: #4c4f69;
|
||||
background-color: #dce0e8;
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
background-color: #ccd0da;
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
background-color: #209fb5;
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: #eff1f5;
|
||||
background-color: #e64553;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:hover {
|
||||
background-color: #d20f39;
|
||||
color: #eff1f5;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:active {
|
||||
background-color: #d20f39;
|
||||
color: #eff1f5;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:hover {
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
background-color: #8c8fa1;
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:active {
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
background-color: #209fb5;
|
||||
color: #4c4f69;
|
||||
}
|
||||
|
||||
progressbar,
|
||||
progress,
|
||||
trough {
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
progressbar {
|
||||
box-shadow: inset 0 0 0 1px #bcc0cc;
|
||||
}
|
||||
|
||||
.notification.critical progress {
|
||||
background-color: #d20f39;
|
||||
}
|
||||
|
||||
.notification.low progress,
|
||||
.notification.normal progress {
|
||||
background-color: #1e66f5;
|
||||
}
|
||||
|
||||
trough {
|
||||
background-color: #ccd0da;
|
||||
}
|
||||
|
||||
.control-center trough {
|
||||
background-color: #bcc0cc;
|
||||
}
|
||||
|
||||
.control-center-dnd {
|
||||
margin-top: 5px;
|
||||
border-radius: 8px;
|
||||
background: #ccd0da;
|
||||
border: 1px solid #bcc0cc;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.control-center-dnd:checked {
|
||||
background: #ccd0da;
|
||||
}
|
||||
|
||||
.control-center-dnd slider {
|
||||
background: #bcc0cc;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.widget-dnd {
|
||||
margin: 0px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 8px;
|
||||
background: #ccd0da;
|
||||
border: 1px solid #bcc0cc;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:checked {
|
||||
background: #ccd0da;
|
||||
}
|
||||
|
||||
.widget-dnd > switch slider {
|
||||
background: #bcc0cc;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #9ca0b0;
|
||||
}
|
270
home/default/.config/swaync/style.mocha.css
Normal file
270
home/default/.config/swaync/style.mocha.css
Normal file
@ -0,0 +1,270 @@
|
||||
* {
|
||||
all: unset;
|
||||
font-size: 14px;
|
||||
font-family: "Ubuntu Nerd Font";
|
||||
transition: 200ms;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #414559;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: #303446;
|
||||
color: #c6d0f5;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 #e78284;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .summary {
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .time {
|
||||
color: #a5adce;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content .body {
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
border-radius: 7px;
|
||||
color: #c6d0f5;
|
||||
background-color: #414559;
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
background-color: #414559;
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
background-color: #85c1dc;
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: #303446;
|
||||
background-color: #e78284;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:hover {
|
||||
background-color: #ea999c;
|
||||
color: #303446;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:active {
|
||||
background-color: #e78284;
|
||||
color: #303446;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.8), inset 0 0 0 1px #414559;
|
||||
border-radius: 12.6px;
|
||||
margin: 18px;
|
||||
background-color: #303446;
|
||||
color: #c6d0f5;
|
||||
padding: 14px;
|
||||
}
|
||||
|
||||
.control-center .widget-title {
|
||||
color: #c6d0f5;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.control-center .widget-title button {
|
||||
border-radius: 7px;
|
||||
color: #c6d0f5;
|
||||
background-color: #414559;
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:hover {
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
background-color: #626880;
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.control-center .widget-title button:active {
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
background-color: #85c1dc;
|
||||
color: #303446;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background {
|
||||
border-radius: 7px;
|
||||
color: #c6d0f5;
|
||||
background-color: #414559;
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification {
|
||||
padding: 7px;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification.critical {
|
||||
box-shadow: inset 0 0 7px 0 #e78284;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content {
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .summary {
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .time {
|
||||
color: #a5adce;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content .body {
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
border-radius: 7px;
|
||||
color: #c6d0f5;
|
||||
background-color: #232634;
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
margin: 7px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
background-color: #414559;
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
background-color: #85c1dc;
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button {
|
||||
margin: 7px;
|
||||
padding: 2px;
|
||||
border-radius: 6.3px;
|
||||
color: #303446;
|
||||
background-color: #ea999c;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:hover {
|
||||
background-color: #e78284;
|
||||
color: #303446;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:active {
|
||||
background-color: #e78284;
|
||||
color: #303446;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:hover {
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
background-color: #838ba7;
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background:active {
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
background-color: #85c1dc;
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
progressbar,
|
||||
progress,
|
||||
trough {
|
||||
border-radius: 12.6px;
|
||||
}
|
||||
|
||||
progressbar {
|
||||
box-shadow: inset 0 0 0 1px #51576d;
|
||||
}
|
||||
|
||||
.notification.critical progress {
|
||||
background-color: #e78284;
|
||||
}
|
||||
|
||||
.notification.low progress,
|
||||
.notification.normal progress {
|
||||
background-color: #8caaee;
|
||||
}
|
||||
|
||||
trough {
|
||||
background-color: #414559;
|
||||
}
|
||||
|
||||
.control-center trough {
|
||||
background-color: #51576d;
|
||||
}
|
||||
|
||||
.control-center-dnd {
|
||||
margin-top: 5px;
|
||||
border-radius: 8px;
|
||||
background: #414559;
|
||||
border: 1px solid #51576d;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.control-center-dnd:checked {
|
||||
background: #414559;
|
||||
}
|
||||
|
||||
.control-center-dnd slider {
|
||||
background: #51576d;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.widget-dnd {
|
||||
margin: 0px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.widget-dnd > switch {
|
||||
font-size: initial;
|
||||
border-radius: 8px;
|
||||
background: #414559;
|
||||
border: 1px solid #51576d;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:checked {
|
||||
background: #414559;
|
||||
}
|
||||
|
||||
.widget-dnd > switch slider {
|
||||
background: #51576d;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #737994;
|
||||
}
|
109
home/default/.config/sworkstyle/config.toml
Normal file
109
home/default/.config/sworkstyle/config.toml
Normal file
@ -0,0 +1,109 @@
|
||||
# https://www.nerdfonts.com/cheat-sheet
|
||||
# https://fontawesome.com/icons
|
||||
|
||||
fallback = ''
|
||||
separator = ' '
|
||||
|
||||
[matching]
|
||||
## partials
|
||||
'/GitHub/' = ''
|
||||
'/GitLab/' = ''
|
||||
'/NVIM ?\w*/' = ''
|
||||
'/npm/' = ''
|
||||
'/node/' = ''
|
||||
'/yarn/' = ''
|
||||
'/Stack Overflow/' = ''
|
||||
"/layer02.net/" = ""
|
||||
"/WhatsApp/" = ""
|
||||
"/Org Agenda/" = ""
|
||||
|
||||
## browsers
|
||||
'google-chrome' = ''
|
||||
'Google-chrome' = ''
|
||||
'Google-chrome-unstable' = ''
|
||||
'google-chrome-unstable' = ''
|
||||
'Google-chrome-beta' = ''
|
||||
'google-chrome-beta' = ''
|
||||
'chromium' = ''
|
||||
'firefox' = ''
|
||||
'firefoxdeveloperedition' = ''
|
||||
'vivaldi-stable' = ''
|
||||
'LibreWolf' = ''
|
||||
'librewolf-default' = ''
|
||||
|
||||
## default applications
|
||||
'foot' = ''
|
||||
'/foot/' = ''
|
||||
'floating_shell' = ''
|
||||
'pcmanfm' = ''
|
||||
'pamac-manager' = ''
|
||||
'/Bluetooth/' = ''
|
||||
'file-roller' = ''
|
||||
'swappy' = ''
|
||||
|
||||
## email
|
||||
'Thunderbird' = ''
|
||||
'thunderbird' = ''
|
||||
'thunderbird-beta' = ''
|
||||
'evolution' = ''
|
||||
|
||||
## ide
|
||||
'code' = ''
|
||||
'Code' = ''
|
||||
'/- Visual Studio Code/' = ''
|
||||
'/IntelliJ/' = ''
|
||||
'code-url-handler' = ''
|
||||
'emacs' = ''
|
||||
|
||||
# messenger
|
||||
'whatsapp-for-linux' = ''
|
||||
'Slack' = ''
|
||||
'/Telegram/' = ''
|
||||
'org.telegram.desktop' = ''
|
||||
'/Microsoft Teams/' = ''
|
||||
'Signal' = ''
|
||||
'discord' = ''
|
||||
'im.dino.Dino' = ''
|
||||
'dino' = ''
|
||||
"SchildiChat" = ""
|
||||
|
||||
## auth
|
||||
'polkit-gnome-authentication-agent-1' = ''
|
||||
'Keybase' = ''
|
||||
|
||||
## additional applications
|
||||
'balena-etcher' = ''
|
||||
'Steam' = ''
|
||||
'steam' = ''
|
||||
'cs2' = ''
|
||||
'rpcs3' = ''
|
||||
'Ryujinx' = ''
|
||||
'vlc' = ''
|
||||
'org.qbittorrent.qBittorrent' = ''
|
||||
'transmission-gtk' = ''
|
||||
'Insomnia' = ''
|
||||
'Bitwarden' = ''
|
||||
'org.keepassxc.KeePassXC' = ''
|
||||
'Spotify' = ''
|
||||
'YouTube Music' = ''
|
||||
'Alacritty' = ''
|
||||
'kitty' = ''
|
||||
'font-manager' = ''
|
||||
'lutris' = ''
|
||||
'/Wine/' = ''
|
||||
'Arctype' = ''
|
||||
'Around' = ''
|
||||
'org.wezfurlong.wezterm' = ''
|
||||
'mpv' = ''
|
||||
|
||||
"xdg-desktop-portal-gtk" = ""
|
||||
"bottles" = ""
|
||||
"youtube" = ""
|
||||
"FreeTube" = ""
|
||||
"com.github.tchx84.Flatseal" = ""
|
||||
"deluge" = ""
|
||||
"Nsxiv" = ""
|
||||
|
||||
"info.mumble.Mumble" = ""
|
||||
"Vintage Story" = ""
|
||||
"com.github.wwmm.easyeffects" = ''
|
@ -1,31 +1,93 @@
|
||||
{
|
||||
// "layer": "top", // Waybar at top layer
|
||||
"position": "bottom", // Waybar position (top|bottom|left|right)
|
||||
"position": "top", // Waybar position (top|bottom|left|right)
|
||||
"height": 20, // Waybar height (to be removed for auto height)
|
||||
// "width": 1280, // Waybar width
|
||||
// Choose the order of the modules
|
||||
"modules-left": ["sway/workspaces", "sway/mode", "custom/media"],
|
||||
"modules-center": [],
|
||||
"modules-right": ["idle_inhibitor", "mpd", "pulseaudio", "bluetooth", "network", "cpu", "memory", "temperature", "battery", "clock", "tray"],
|
||||
//"modules-center": [],
|
||||
//"modules-right": ["idle_inhibitor", "mpd", "pulseaudio", "network", "cpu", "memory", "temperature", "battery", "custom/scratchpad_indicator", "clock", "tray", "custom/swaync", "custom/emacsstatus" ],
|
||||
"modules-right": ["pulseaudio", "network", "battery", "custom/scratchpad_indicator", "custom/neralie", "tray", "custom/swaync", "custom/emacsstatus" ],
|
||||
"river/tags": {
|
||||
"num-tags": 5,
|
||||
"tag-labels": {
|
||||
"1": "",
|
||||
"2": "",
|
||||
"3": "",
|
||||
"4": "",
|
||||
"5": "",
|
||||
"6": "",
|
||||
"7": "",
|
||||
"8": "",
|
||||
"9": "",
|
||||
"10": "",
|
||||
}
|
||||
},
|
||||
"sway/workspaces": {
|
||||
"disable-scroll-wraparound": true
|
||||
},
|
||||
// Modules configuration
|
||||
// "sway/workspaces": {
|
||||
"sway/workspaces": {
|
||||
"persistent_workspaces": {
|
||||
// "1": ["DVI-D-1"],
|
||||
// "2": ["DVI-D-1"],
|
||||
// "3": ["DVI-D-1"],
|
||||
// "4": ["DVI-D-1"],
|
||||
// "5": ["DVI-D-1"],
|
||||
// "6": ["HDMI-A-1"],
|
||||
// "7": ["HDMI-A-1"],
|
||||
// "8": ["HDMI-A-1"],
|
||||
// "9": ["HDMI-A-1"],
|
||||
// "10": ["HDMI-A-1"],
|
||||
//"1": ["HDMI-A-1"],
|
||||
//"2": ["HDMI-A-1"],
|
||||
//"3": ["HDMI-A-1"],
|
||||
//"4": ["HDMI-A-1"],
|
||||
//"5": ["HDMI-A-1"],
|
||||
//"6": ["DVI-D-1"],
|
||||
//"7": ["DVI-D-1"],
|
||||
//"8": ["DVI-D-1"],
|
||||
//"9": ["DVI-D-1"],
|
||||
//"10": ["DVI-D-1"]
|
||||
},
|
||||
// "disable-scroll": true,
|
||||
// "all-outputs": true,
|
||||
// "format": "{name}: {icon}",
|
||||
// "format-icons": {
|
||||
// "1": "",
|
||||
// "2": "",
|
||||
// "3": "",
|
||||
// "4": "",
|
||||
// "5": "",
|
||||
// "urgent": "",
|
||||
// "focused": "",
|
||||
// "default": ""
|
||||
// }
|
||||
// },
|
||||
"all-outputs": false,
|
||||
"format": "{name}",
|
||||
//"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": "+",
|
||||
"2": "+",
|
||||
"3": "+",
|
||||
"4": "+",
|
||||
"5": "+",
|
||||
"6": "+",
|
||||
"7": "+",
|
||||
"8": "+",
|
||||
"9": "+",
|
||||
"10": "+",
|
||||
// "1": "1",
|
||||
// "2": "2",
|
||||
// "3": "3-sch", // schedule
|
||||
// "4": "4-comms",
|
||||
// "5": "5-mon", // monitor
|
||||
// "6": "6-em", // emacs
|
||||
// "7": "7-se", // search/web
|
||||
// "8": "8-tm", // terminal
|
||||
// "9": "9-gm",
|
||||
// "10": "10",
|
||||
|
||||
//"1": "1-em", // emacs
|
||||
//"2": "2-se", // search/web
|
||||
//"3": "3-tm", // terminal
|
||||
//"4": "4-gm",
|
||||
//"5": "5",
|
||||
//"6": "6",
|
||||
//"7": "7",
|
||||
//"8": "8-sch", // schedule
|
||||
//"9": "9-comms",
|
||||
//"10": "10-mon", // monitor
|
||||
}
|
||||
},
|
||||
"keyboard-state": {
|
||||
"numlock": true,
|
||||
"capslock": true,
|
||||
@ -52,8 +114,12 @@
|
||||
"clock": {
|
||||
// "timezone": "America/New_York",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"format": "{:%Y-%m-%d %I:%M:%S %p}",
|
||||
"interval": 1
|
||||
"format": "{:%H:%M}",
|
||||
//"format": "{:%Y-%m-%d %H:%M:%S}",
|
||||
//"format": "{:%Y-%m-%d %I:%M:%S %p}",
|
||||
//"format": "day # {:%j}",
|
||||
"interval": 1,
|
||||
"on-click": "uxnemu ~/.local/uxn/catclock.rom"
|
||||
},
|
||||
"cpu": {
|
||||
"format": " {usage}%",
|
||||
@ -81,7 +147,8 @@
|
||||
"format-ethernet": " {ifname}: {ipaddr}/{cidr}",
|
||||
"format-linked": " {ifname} (No IP)",
|
||||
"format-disconnected": "⚠ Disconnected",
|
||||
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||
"format-alt": "{ifname}: {ipaddr}/{cidr}",
|
||||
"on-click": "$TERMINAL -e nmtui"
|
||||
},
|
||||
"pulseaudio": {
|
||||
// "scroll-step": 1, // %, can be a float
|
||||
@ -100,12 +167,15 @@
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "pavucontrol"
|
||||
"on-click": "$TERMINAL -e pulsemixer"
|
||||
// "on-click": "pavucontrol"
|
||||
},
|
||||
"mpd": {
|
||||
"server": "localhost",
|
||||
"port": 6600,
|
||||
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon} {artist} | {title} | {elapsedTime:%M:%S}/{totalTime:%M:%S}",
|
||||
// "max-length": 200,
|
||||
"format-disconnected": "Disconnected",
|
||||
"format-disconnected": "-",
|
||||
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped",
|
||||
"interval": 2,
|
||||
"consume-icons": {
|
||||
@ -139,6 +209,30 @@
|
||||
"escape": true,
|
||||
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
|
||||
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
|
||||
},
|
||||
"custom/swaync": {
|
||||
"exec": "~/.config/waybar/scripts/notifications.sh",
|
||||
"on-click": "swaync-client -t",
|
||||
"restart-interval": 1
|
||||
},
|
||||
"custom/emacsstatus": {
|
||||
"return-type": "json",
|
||||
"exec": "~/.config/waybar/scripts/emacs-status.sh",
|
||||
"on-click": "emacsclient -c -a ''",
|
||||
"format": "{}",
|
||||
"restart-interval": 3
|
||||
},
|
||||
"custom/scratchpad_indicator": {
|
||||
"interval": 1,
|
||||
"return-type": "json",
|
||||
"exec": "swaymsg -t get_tree | jq --unbuffered --compact-output '( select(.name == \"root\") | .nodes[] | select(.name == \"__i3\") | .nodes[] | select(.name == \"__i3_scratch\") | .focus) as $scratch_ids | [.. | (.nodes? + .floating_nodes?) // empty | .[] | select(.id |IN($scratch_ids[]))] as $scratch_nodes | { text: \"\\($scratch_nodes | length)\", tooltip: $scratch_nodes | map(\"\\(.app_id // .window_properties.class) (\\(.id)): \\(.name)\") | join(\"\\n\") }'",
|
||||
"format": " {}",
|
||||
"on-click": "exec swaymsg 'scratchpad show'",
|
||||
"on-click-right": "exec swaymsg 'move scratchpad'"
|
||||
},
|
||||
"custom/neralie": {
|
||||
"exec": "~/.local/bin/neralie",
|
||||
"on-click": "uxnemu ~/.local/uxn/catclock.rom",
|
||||
"restart-interval": 1
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
239
home/default/.config/waybar/config-river
Normal file
239
home/default/.config/waybar/config-river
Normal file
@ -0,0 +1,239 @@
|
||||
{
|
||||
// "layer": "top", // Waybar at top layer
|
||||
"position": "top", // Waybar position (top|bottom|left|right)
|
||||
"height": 20, // Waybar height (to be removed for auto height)
|
||||
// "width": 1280, // Waybar width
|
||||
// Choose the order of the modules
|
||||
//"modules-left": ["sway/workspaces", "sway/mode", "custom/media"],
|
||||
"modules-left": ["river/tags", "custom/media"],
|
||||
//"modules-center": [],
|
||||
//"modules-right": ["idle_inhibitor", "mpd", "pulseaudio", "network", "cpu", "memory", "temperature", "battery", "custom/scratchpad_indicator", "clock", "tray", "custom/swaync", "custom/emacsstatus" ],
|
||||
"modules-right": ["pulseaudio", "network", "battery", "custom/neralie", "tray", "custom/swaync", "custom/emacsstatus" ],
|
||||
"river/tags": {
|
||||
"num-tags": 5,
|
||||
"tag-labels": {
|
||||
"1": "",
|
||||
"2": "",
|
||||
"3": "",
|
||||
"4": "",
|
||||
"5": "",
|
||||
"6": "",
|
||||
"7": "",
|
||||
"8": "",
|
||||
"9": "",
|
||||
"10": "",
|
||||
}
|
||||
},
|
||||
"sway/workspaces": {
|
||||
"disable-scroll-wraparound": true
|
||||
},
|
||||
// Modules configuration
|
||||
"sway/workspaces": {
|
||||
"persistent_workspaces": {
|
||||
// "1": ["DVI-D-1"],
|
||||
// "2": ["DVI-D-1"],
|
||||
// "3": ["DVI-D-1"],
|
||||
// "4": ["DVI-D-1"],
|
||||
// "5": ["DVI-D-1"],
|
||||
// "6": ["HDMI-A-1"],
|
||||
// "7": ["HDMI-A-1"],
|
||||
// "8": ["HDMI-A-1"],
|
||||
// "9": ["HDMI-A-1"],
|
||||
// "10": ["HDMI-A-1"],
|
||||
//"1": ["HDMI-A-1"],
|
||||
//"2": ["HDMI-A-1"],
|
||||
//"3": ["HDMI-A-1"],
|
||||
//"4": ["HDMI-A-1"],
|
||||
//"5": ["HDMI-A-1"],
|
||||
//"6": ["DVI-D-1"],
|
||||
//"7": ["DVI-D-1"],
|
||||
//"8": ["DVI-D-1"],
|
||||
//"9": ["DVI-D-1"],
|
||||
//"10": ["DVI-D-1"]
|
||||
},
|
||||
// "disable-scroll": true,
|
||||
"all-outputs": false,
|
||||
"format": "{name}",
|
||||
//"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": "+",
|
||||
"2": "+",
|
||||
"3": "+",
|
||||
"4": "+",
|
||||
"5": "+",
|
||||
"6": "+",
|
||||
"7": "+",
|
||||
"8": "+",
|
||||
"9": "+",
|
||||
"10": "+",
|
||||
// "1": "1",
|
||||
// "2": "2",
|
||||
// "3": "3-sch", // schedule
|
||||
// "4": "4-comms",
|
||||
// "5": "5-mon", // monitor
|
||||
// "6": "6-em", // emacs
|
||||
// "7": "7-se", // search/web
|
||||
// "8": "8-tm", // terminal
|
||||
// "9": "9-gm",
|
||||
// "10": "10",
|
||||
|
||||
//"1": "1-em", // emacs
|
||||
//"2": "2-se", // search/web
|
||||
//"3": "3-tm", // terminal
|
||||
//"4": "4-gm",
|
||||
//"5": "5",
|
||||
//"6": "6",
|
||||
//"7": "7",
|
||||
//"8": "8-sch", // schedule
|
||||
//"9": "9-comms",
|
||||
//"10": "10-mon", // monitor
|
||||
}
|
||||
},
|
||||
"keyboard-state": {
|
||||
"numlock": true,
|
||||
"capslock": true,
|
||||
"format": "{name} {icon}",
|
||||
"format-icons": {
|
||||
"locked": "",
|
||||
"unlocked": ""
|
||||
}
|
||||
},
|
||||
"sway/mode": {
|
||||
"format": "<span style=\"italic\">{}</span>"
|
||||
},
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 15,
|
||||
"spacing": 10
|
||||
},
|
||||
"clock": {
|
||||
// "timezone": "America/New_York",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"format": "{:%H:%M}",
|
||||
//"format": "{:%Y-%m-%d %H:%M:%S}",
|
||||
//"format": "{:%Y-%m-%d %I:%M:%S %p}",
|
||||
//"format": "day # {:%j}",
|
||||
"interval": 1,
|
||||
"on-click": "uxnemu ~/.local/uxn/catclock.rom"
|
||||
},
|
||||
"cpu": {
|
||||
"format": " {usage}%",
|
||||
// "tooltip": false
|
||||
},
|
||||
"memory": {
|
||||
"format": " {}%"
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}% ({time})",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
// "format-good": "", // An empty format will hide the module
|
||||
// "format-full": "",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
"network": {
|
||||
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||
"format-wifi": " {essid} ({signalStrength}%)",
|
||||
"format-ethernet": " {ifname}: {ipaddr}/{cidr}",
|
||||
"format-linked": " {ifname} (No IP)",
|
||||
"format-disconnected": "⚠ Disconnected",
|
||||
"format-alt": "{ifname}: {ipaddr}/{cidr}",
|
||||
"on-click": "$TERMINAL -e nmtui"
|
||||
},
|
||||
"pulseaudio": {
|
||||
// "scroll-step": 1, // %, can be a float
|
||||
"format": "{icon} {volume}%",
|
||||
"format-bluetooth": "{volume}% {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {volume}%",
|
||||
// "format-source": "{volume}% ",
|
||||
// "format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", "", ""]
|
||||
},
|
||||
"on-click": "$TERMINAL -e pulsemixer"
|
||||
// "on-click": "pavucontrol"
|
||||
},
|
||||
"mpd": {
|
||||
"server": "localhost",
|
||||
"port": 6600,
|
||||
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon} {artist} | {title} | {elapsedTime:%M:%S}/{totalTime:%M:%S}",
|
||||
// "max-length": 200,
|
||||
"format-disconnected": "-",
|
||||
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped",
|
||||
"interval": 2,
|
||||
"consume-icons": {
|
||||
"on": " " // Icon shows only when "consume" is on
|
||||
},
|
||||
"random-icons": {
|
||||
"off": "<span color=\"#f53c3c\"></span> ", // Icon grayed out when "random" is off
|
||||
"on": " "
|
||||
},
|
||||
"repeat-icons": {
|
||||
"on": " "
|
||||
},
|
||||
"single-icons": {
|
||||
"on": "1 "
|
||||
},
|
||||
"state-icons": {
|
||||
"paused": "",
|
||||
"playing": ""
|
||||
},
|
||||
"tooltip-format": "MPD (connected)",
|
||||
"tooltip-format-disconnected": "MPD (disconnected)"
|
||||
},
|
||||
"custom/media": {
|
||||
"format": "{icon} {}",
|
||||
"return-type": "json",
|
||||
"max-length": 40,
|
||||
"format-icons": {
|
||||
"spotify": "",
|
||||
"default": "🎜"
|
||||
},
|
||||
"escape": true,
|
||||
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
|
||||
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
|
||||
},
|
||||
"custom/swaync": {
|
||||
"exec": "~/.config/waybar/scripts/notifications.sh",
|
||||
"on-click": "swaync-client -t",
|
||||
"restart-interval": 1
|
||||
},
|
||||
"custom/emacsstatus": {
|
||||
"return-type": "json",
|
||||
"exec": "~/.config/waybar/scripts/emacs-status.sh",
|
||||
"on-click": "emacsclient -c -a ''",
|
||||
"format": "{}",
|
||||
"restart-interval": 3
|
||||
},
|
||||
"custom/scratchpad_indicator": {
|
||||
"interval": 1,
|
||||
"return-type": "json",
|
||||
"exec": "swaymsg -t get_tree | jq --unbuffered --compact-output '( select(.name == \"root\") | .nodes[] | select(.name == \"__i3\") | .nodes[] | select(.name == \"__i3_scratch\") | .focus) as $scratch_ids | [.. | (.nodes? + .floating_nodes?) // empty | .[] | select(.id |IN($scratch_ids[]))] as $scratch_nodes | { text: \"\\($scratch_nodes | length)\", tooltip: $scratch_nodes | map(\"\\(.app_id // .window_properties.class) (\\(.id)): \\(.name)\") | join(\"\\n\") }'",
|
||||
"format": " {}",
|
||||
"on-click": "exec swaymsg 'scratchpad show'",
|
||||
"on-click-right": "exec swaymsg 'move scratchpad'"
|
||||
},
|
||||
"custom/neralie": {
|
||||
"exec": "~/.local/bin/neralie",
|
||||
"on-click": "uxnemu ~/.local/uxn/catclock.rom",
|
||||
"restart-interval": 1
|
||||
},
|
||||
}
|
15
home/default/.config/waybar/scripts/emacs-status.sh
Executable file
15
home/default/.config/waybar/scripts/emacs-status.sh
Executable file
@ -0,0 +1,15 @@
|
||||
inactive="{
|
||||
\"text\": \"x\",
|
||||
\"tooltip\": \"emacs is not running.\"
|
||||
}\n"
|
||||
active="{
|
||||
\"text\": \"e+\",
|
||||
\"tooltip\": \"emacs is running.\"
|
||||
}\n"
|
||||
pgrep emacs >/dev/null
|
||||
if [ $? -eq 1 ]
|
||||
then
|
||||
echo $inactive
|
||||
else
|
||||
echo $active
|
||||
fi
|
8
home/default/.config/waybar/scripts/neralie-forever.sh
Executable file
8
home/default/.config/waybar/scripts/neralie-forever.sh
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
while true
|
||||
do
|
||||
neralie
|
||||
sleep .5
|
||||
neralie
|
||||
sleep .5
|
||||
done
|
6
home/default/.config/waybar/scripts/notifications.sh
Executable file
6
home/default/.config/waybar/scripts/notifications.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
count="$(swaync-client -c)"
|
||||
none="-"
|
||||
if [ "$count" == "0" ]; then echo "$none" ; fi
|
||||
if [ "$count" != "0" ]; then echo "$count" ; fi
|
@ -1,16 +1,72 @@
|
||||
/* white */
|
||||
/*
|
||||
@define-color bg white;
|
||||
@define-color button black;
|
||||
@define-color button-occupied black;
|
||||
@define-color button-selected black;
|
||||
@define-color button-box lightgrey;
|
||||
@define-color widget black;
|
||||
@define-color widget-border-right transparent;
|
||||
@define-color border-bottom rgba(100, 114, 125, 0.5);
|
||||
*/
|
||||
|
||||
/* black */
|
||||
/*@define-color bg black;
|
||||
@define-color button grey;
|
||||
@define-color button-occupied grey;
|
||||
@define-color button-selected grey;
|
||||
@define-color button-box #424242;
|
||||
@define-color widget grey;
|
||||
@define-color border-bottom transparent;
|
||||
@define-color widget-border-right #424242;*/
|
||||
|
||||
/* grey */
|
||||
/*
|
||||
@define-color bg #222222;
|
||||
@define-color button #bbbbbb;
|
||||
@define-color button-occupied #bbbbbb;
|
||||
@define-color button-selected #bbbbbb;
|
||||
@define-color button-box #424242;
|
||||
@define-color widget #999999;
|
||||
@define-color widget-border-right #424242;
|
||||
@define-color border-bottom transparent;*/
|
||||
|
||||
/* Tomorrow Night (#161616 bg) */
|
||||
@define-color border-bottom transparent;
|
||||
@define-color widget-border-right transparent;
|
||||
@define-color button #444444;
|
||||
@define-color button-occupied #c5c8c6;
|
||||
@define-color button-selected grey;
|
||||
@define-color button-box #424242;
|
||||
@define-color bg rgba(22,22,22,0.9);
|
||||
@define-color widget #c5c8c6;
|
||||
@define-color border-bottom #333333;
|
||||
/*@define-color bg rgba(19,19,19,1);*/
|
||||
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: IBMPlexMono, monospace;
|
||||
font-size: 12px;
|
||||
/* Cozette */
|
||||
font-family: 'IBM Plex Mono', 'Symbols Nerd Font';
|
||||
font-size: 10px;
|
||||
/*font-size: 14px;*/
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: #000;
|
||||
color: #ffffff;
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
/* background colors:
|
||||
* #000
|
||||
* #222222 *def*
|
||||
* #161616
|
||||
*/
|
||||
/* colors
|
||||
* #999999 def
|
||||
* #bbbbbb
|
||||
* #ffffff
|
||||
*/
|
||||
background-color: @bg;
|
||||
border-bottom: 2px solid @border-bottom;
|
||||
/*transition-property: background-color;*/
|
||||
/*transition-duration: .5s;*/
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
@ -35,24 +91,67 @@ window#waybar.chromium {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*background-color: #6B313D;*/
|
||||
|
||||
#workspaces button.persistent {
|
||||
background-color: transparent;
|
||||
color: @button;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
transition: none;
|
||||
/*
|
||||
* background colors:
|
||||
* transparent
|
||||
* #444444
|
||||
*/
|
||||
background-color: transparent;
|
||||
/* colors:
|
||||
* #bbbbbb
|
||||
*/
|
||||
color: @button-occupied;
|
||||
padding: 0 8px;
|
||||
background-color: #6B313D;
|
||||
color: #bbbbbb;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
/*#workspaces button.active {
|
||||
background-color: #444444;
|
||||
color: #bbbbbb;
|
||||
}*/
|
||||
|
||||
#workspaces button.focused {
|
||||
color: #000000;
|
||||
background-color: #888888;
|
||||
/*box-shadow: inset 2px 2px #555555, inset -2px -2px #555555;*/
|
||||
#workspaces button.visible {
|
||||
/*color: #000000;
|
||||
background-color: #888888;*/
|
||||
/*
|
||||
* box shadow colors
|
||||
* #424242 *def*
|
||||
* #555555
|
||||
*/
|
||||
box-shadow: inset 2px 2px @button-box, inset -2px -2px @button-box;
|
||||
color:@button-selected;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: #eb4d4b;
|
||||
}
|
||||
|
||||
/* river tags */
|
||||
#tags button {
|
||||
color: @button; /*#444444*/
|
||||
padding: 0 8px;
|
||||
min-width: 0;
|
||||
}
|
||||
#tags button.occupied {
|
||||
color: @button-occupied /*#6B313D*/
|
||||
}
|
||||
#tags button.focused {
|
||||
color: @button-selected; /*#9EA68F*/
|
||||
box-shadow: inset 2px 2px @button-box, inset -2px -2px @button-box;
|
||||
}
|
||||
#tags button.urgent {
|
||||
color: red /* def red */
|
||||
}
|
||||
|
||||
#mode {
|
||||
background-color: #64727D;
|
||||
}
|
||||
@ -71,12 +170,34 @@ window#waybar.chromium {
|
||||
#mode,
|
||||
#idle_inhibitor,
|
||||
#bluetooth,
|
||||
#custom-swaync,
|
||||
#custom-scratchpad_indicator,
|
||||
#custom-emacsstatus,
|
||||
#custom-neralie,
|
||||
#mpd {
|
||||
padding: 0 6px;
|
||||
border-right: 2px solid #424242;
|
||||
color: #999999;
|
||||
/*padding-right: 10px;*/
|
||||
/*
|
||||
* border colors
|
||||
* #424242 *def*
|
||||
*
|
||||
*/
|
||||
border-right: 2px solid @widget-border-right;
|
||||
/*
|
||||
* colors
|
||||
* #999999 *def*
|
||||
* #bbbbbb
|
||||
* #ffffff
|
||||
*/
|
||||
color: @widget
|
||||
}
|
||||
|
||||
/* im using this near the right edge */
|
||||
/* test {
|
||||
padding: 0 6px;
|
||||
color: #999999;
|
||||
}*/
|
||||
|
||||
#window,
|
||||
#workspaces {
|
||||
margin: 0 4px;
|
||||
@ -208,7 +329,7 @@ label:focus {
|
||||
}
|
||||
|
||||
#mpd.disconnected {
|
||||
background-color: #f53c3c;
|
||||
/*background-color: #f53c3c;*/
|
||||
}
|
||||
|
||||
#mpd.stopped {
|
||||
|
1
home/default/.config/wget/wgetrc
Normal file
1
home/default/.config/wget/wgetrc
Normal file
@ -0,0 +1 @@
|
||||
hsts-file=~/.cache/wget-hsts
|
20
home/default/.config/wofi/config
Normal file
20
home/default/.config/wofi/config
Normal file
@ -0,0 +1,20 @@
|
||||
prompt=X
|
||||
allow_markup=true
|
||||
dmenu-parse_action=true
|
||||
|
||||
stylesheet=style.css
|
||||
watch_css=true
|
||||
#colors=colors
|
||||
|
||||
#width=400
|
||||
#width=300
|
||||
#lines=17
|
||||
#height=100%
|
||||
#image_size=20
|
||||
allow_images=false
|
||||
hide_scroll=true
|
||||
|
||||
#gtk_dark=true
|
||||
|
||||
layer=overlay
|
||||
#location=9
|
52
home/default/.config/wofi/style.css
Normal file
52
home/default/.config/wofi/style.css
Normal file
@ -0,0 +1,52 @@
|
||||
* {
|
||||
font-family: "Noto Sans", sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
window {
|
||||
box-shadow: inset 0 0 0 1px #333333;
|
||||
background-color: transparent;
|
||||
border-radius: 0px; /*12.6px*/
|
||||
}
|
||||
|
||||
#input {
|
||||
border: none;
|
||||
background-color: rgba(0,0,0,.2); /* #444444 rgba(0,0,0,.2) */
|
||||
color: #c5c8c6; /* white */
|
||||
/*border: 2px solid #161616;*/
|
||||
border-radius: 0px; /*7px*/
|
||||
}
|
||||
|
||||
#inner-box {
|
||||
/*background-color: #161616;*/
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
margin: 1px;
|
||||
padding: 3px; /* 10px */
|
||||
background-color: rgba(29, 31, 33,0.9); /* #222222 rgba(22,22,22,0.9) rgba(29, 31, 33,0.9) */
|
||||
border-radius: 0px; /*12.6px*/
|
||||
/*filter: blur(1.5em)*/
|
||||
}
|
||||
|
||||
#scroll {
|
||||
/*margin: 5px;*/
|
||||
}
|
||||
|
||||
#text {
|
||||
padding: 4px;
|
||||
color: grey; /* probably c5c8c6 */
|
||||
}
|
||||
#text:selected {
|
||||
color: #c5c8c6;
|
||||
}
|
||||
|
||||
/*#entry:nth-child(even){
|
||||
background-color: #161719;
|
||||
}*/
|
||||
|
||||
#entry:selected {
|
||||
background-color: transparent; /* #222222 */
|
||||
/*border-radius: 7px;*/
|
||||
/*box-shadow: inset 0 0 0 1px #333333;*/
|
||||
}
|
7
home/default/.config/zathura/zathurarc
Normal file
7
home/default/.config/zathura/zathurarc
Normal file
@ -0,0 +1,7 @@
|
||||
set default-bg "#1d1f21"
|
||||
set statusbar-bg "#161719"
|
||||
set statusbar-fg "#c5c5c5"
|
||||
set notification-bg "#1d1f21"
|
||||
set notification-fg "#c5c5c5"
|
||||
|
||||
set selection-clipboard clipboard
|
@ -2,10 +2,8 @@
|
||||
|
||||
# Enable colors and change prompt:
|
||||
autoload -U colors && colors # Load colors
|
||||
#PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b "
|
||||
#PS1="[%n@%M %~]$ "
|
||||
#PS1=" %~ $ "
|
||||
PS1=" %{$fg[magenta]%}%~%{$fg[red]%} %{$reset_color%}λ%b " # minimal
|
||||
source /usr/share/git-core/contrib/completion/git-prompt.sh
|
||||
setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
|
||||
setopt autocd # Automatically cd into typed directory.
|
||||
stty stop undef # Disable ctrl-s to freeze terminal.
|
||||
setopt interactive_comments
|
||||
@ -13,11 +11,11 @@ setopt interactive_comments
|
||||
# History in cache directory:
|
||||
HISTSIZE=10000000
|
||||
SAVEHIST=10000000
|
||||
[ -d "${XDG_CONFIG_HOME:-$HOME/.cache}/zsh/" ] || mkdir ${XDG_CACHE_HOME:-$HOME/.cache}/zsh/
|
||||
HISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh/history"
|
||||
|
||||
# Load aliases and shortcuts if existent.
|
||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
|
||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
|
||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/privrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/privrc"
|
||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
|
||||
|
||||
# Basic auto/tab complete:
|
||||
@ -92,7 +90,8 @@ function osc7 {
|
||||
autoload -Uz add-zsh-hook
|
||||
add-zsh-hook -Uz chpwd osc7
|
||||
|
||||
[ ! -f ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ] && setsid shortcuts >/dev/null 2>&1
|
||||
# reverse searching
|
||||
bindkey '^R' history-incremental-search-backward
|
||||
|
||||
# Load syntax highlighting; should be last.
|
||||
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
|
||||
|
576
home/default/.doom.d/config.el
Normal file
576
home/default/.doom.d/config.el
Normal file
@ -0,0 +1,576 @@
|
||||
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||
;; sync' after modifying this file!
|
||||
|
||||
|
||||
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||
;; clients, file templates and snippets. It is optional.
|
||||
;; (setq user-full-name "John Doe"
|
||||
;; user-mail-address "john@doe.com")
|
||||
|
||||
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
||||
;;
|
||||
;; - `doom-font' -- the primary font to use
|
||||
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
||||
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||
;; presentations or streaming.
|
||||
;; - `doom-symbol-font' -- for symbols
|
||||
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
||||
;;
|
||||
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||
;; accept. For example:
|
||||
;;
|
||||
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
|
||||
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||
;;
|
||||
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||
|
||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||
;; `load-theme' function. This is the default:
|
||||
;(setq doom-theme 'doom-one)
|
||||
|
||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||
;(setq display-line-numbers-type t)
|
||||
|
||||
;; If you use `org' and don't want your org files in the default location below,
|
||||
;; change `org-directory'. It must be set before org loads!
|
||||
;(setq org-directory "~/org/")
|
||||
|
||||
|
||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||
;;
|
||||
;; (after! PACKAGE
|
||||
;; (setq x y))
|
||||
;;
|
||||
;; The exceptions to this rule:
|
||||
;;
|
||||
;; - Setting file/directory variables (like `org-directory')
|
||||
;; - Setting variables which explicitly tell you to set them before their
|
||||
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
||||
;; - Setting doom variables (which start with 'doom-' or '+').
|
||||
;;
|
||||
;; Here are some additional functions/macros that will help you configure Doom.
|
||||
;;
|
||||
;; - `load!' for loading external *.el files relative to this one
|
||||
;; - `use-package!' for configuring packages
|
||||
;; - `after!' for running code after a package has loaded
|
||||
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||
;; this file. Emacs searches the `load-path' when you load packages with
|
||||
;; `require' or `use-package'.
|
||||
;; - `map!' for binding new keys
|
||||
;;
|
||||
;; To get information about any of these functions/macros, move the cursor over
|
||||
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||
;; This will open documentation for it, including demos of how they are used.
|
||||
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
||||
;; etc).
|
||||
;;
|
||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||
;; they are implemented.
|
||||
|
||||
(setq doom-font (font-spec :family "DejaVu Sans Mono" :size 12)
|
||||
doom-variable-pitch-font (font-spec :family "Libertinus Serif" :size 15))
|
||||
|
||||
;; theme
|
||||
; my eyes won't accept anything else than tomorrow night
|
||||
(setq doom-theme 'doom-tomorrow-night )
|
||||
;(setq doom-theme 'doom-meltbus ) ; depressed, muted colors.
|
||||
;(setq doom-theme 'doom-plain-dark ) ; themes for writing
|
||||
;(setq doom-theme 'doom-plain )
|
||||
|
||||
;; splash
|
||||
(setq fancy-splash-image (expand-file-name "img/camcorder.jpeg" doom-user-dir)
|
||||
+doom-dashboard-banner-padding '(0 . 0))
|
||||
|
||||
;; doom dashboard
|
||||
;; remove useless dashboard info
|
||||
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-shortmenu)
|
||||
(remove-hook '+doom-dashboard-functions #'doom-dashboard-widget-footer)
|
||||
(add-hook! '+doom-dashboard-mode-hook (hide-mode-line-mode 1) (hl-line-mode -1))
|
||||
(setq-hook! '+doom-dashboard-mode-hook evil-normal-state-cursor (list nil))
|
||||
|
||||
;; opacity
|
||||
;(set-frame-parameter (selected-frame) 'alpha-background 90) (add-to-list 'default-frame-alist '(alpha-background . 90))
|
||||
|
||||
(after! org
|
||||
(setq display-line-numbers-type nil
|
||||
org-hide-emphasis-markers t
|
||||
org-pretty-entities t
|
||||
org-ellipsis "…"
|
||||
org-image-actual-width 600))
|
||||
(setq display-line-numbers-type nil)
|
||||
|
||||
;; disable flyspell-mode
|
||||
(after! flyspell
|
||||
(setq-default spell-checking-enable-by-default nil))
|
||||
|
||||
;; disable gutter for org-mode
|
||||
(after! git-gutter
|
||||
(setq git-gutter:disabled-modes '(fundamental-mode image-mode pdf-view-mode org-mode)))
|
||||
|
||||
(after! org-journal
|
||||
(setq org-journal-dir "~/diary"
|
||||
org-journal-date-prefix "#+TITLE: "
|
||||
org-journal-time-prefix "+ "
|
||||
org-journal-date-format "%a, %Y-%m-%d"
|
||||
org-journal-file-format "%Y-%m-%d.org"))
|
||||
|
||||
(use-package! org-books
|
||||
:defer t
|
||||
:config
|
||||
(setq org-books-file "~/notebook/readinglist.org"))
|
||||
|
||||
(after! org
|
||||
(setq org-log-done 'time
|
||||
org-log-into-drawer t
|
||||
;About the 2 elisp lines below: If you want to send items without explicit
|
||||
;priorities to the bottom of the list you have to set org-default-priority to the
|
||||
;value of org-lowest-priority). I did this to make recognize that: PRIORITY=0 are
|
||||
;items without explicit priorities (not A, B or C, but just TODO)
|
||||
org-lowest-priority ?E
|
||||
org-default-priority ?E)
|
||||
(defun jethro/org-archive-done-tasks ()
|
||||
"Archive all done tasks."
|
||||
(interactive)
|
||||
(org-map-entries 'org-archive-subtree "/DONE" 'file)))
|
||||
|
||||
(setq org-directory "~/notebook/"
|
||||
bookmark-default-file "~/.doom.d/bookmarks")
|
||||
|
||||
(setq org-agenda-files '("~/housekeeping/calendar.org"
|
||||
"~/notebook/ag/habits.org"
|
||||
"~/notebook/ag/todo.org"
|
||||
"~/notebook/ag/projects.org"
|
||||
"~/notebook/ag/refile.org"
|
||||
"~/notebook/ag/pomodoro.org"
|
||||
"~/notebook/ag/events/birthdays.org"
|
||||
"~/notebook/refile.org"
|
||||
))
|
||||
|
||||
(after! org-agenda
|
||||
(setq org-agenda-sticky t)) ; dont kill agendas
|
||||
|
||||
(use-package! org-super-agenda
|
||||
:after org-agenda
|
||||
:init
|
||||
(setq org-agenda-skip-scheduled-if-done t
|
||||
org-agenda-skip-deadline-if-done t
|
||||
org-agenda-include-deadlines t
|
||||
org-agenda-block-separator nil
|
||||
org-agenda-compact-blocks t
|
||||
org-agenda-start-day nil ;; i.e. today
|
||||
org-agenda-span 1
|
||||
org-agenda-start-on-weekday nil)
|
||||
(add-to-list 'org-agenda-custom-commands
|
||||
'("c" "Super view"
|
||||
((agenda "" ((org-agenda-overriding-header "")
|
||||
(org-super-agenda-groups
|
||||
'((:name "Soon"
|
||||
:deadline future
|
||||
:order 3)
|
||||
(:name "Today"
|
||||
:time-grid t
|
||||
:date today
|
||||
:order 2)
|
||||
(:name "Due today"
|
||||
:deadline today
|
||||
:scheduled today
|
||||
:order 2)
|
||||
(:name "Overdue"
|
||||
:deadline past
|
||||
:scheduled past
|
||||
:order 1)))))
|
||||
(alltodo "" ((org-agenda-overriding-header "")
|
||||
(org-super-agenda-groups
|
||||
'(;(:name "Future"
|
||||
; :scheduled future)
|
||||
(:discard (:anything t)))))))))
|
||||
:config
|
||||
(org-super-agenda-mode))
|
||||
|
||||
(setq org-agenda-prefix-format '(
|
||||
(agenda . " %?-12t% s")
|
||||
(todo . " %i %-12:c")
|
||||
(tags . " %i %-12:c")
|
||||
(search . " %i %-12:c")))
|
||||
|
||||
;; hide tags
|
||||
(after! org-agenda
|
||||
(setq org-agenda-hide-tags-regexp
|
||||
(concat org-agenda-hide-tags-regexp "\\|sometag")))
|
||||
|
||||
;; org-pomodoro
|
||||
(setq org-pomodoro-ask-upon-killing t
|
||||
org-pomodoro-keep-killed-pomodoro-time t
|
||||
org-pomodoro-length 25
|
||||
org-pomodoro-manual-break t)
|
||||
|
||||
(defun +org-pomodoro/3-5 ()
|
||||
"Set Pomodoro intervals to 3-5"
|
||||
(interactive)
|
||||
(setq org-pomodoro-length 3)
|
||||
(setq org-pomodoro-short-break-length 5)
|
||||
(message "Pomodoro set to 3-5" (buffer-name)))
|
||||
(defun +org-pomodoro/5-5 ()
|
||||
"Set Pomodoro intervals to 5-5"
|
||||
(interactive)
|
||||
(setq org-pomodoro-length 5)
|
||||
(setq org-pomodoro-short-break-length 5)
|
||||
(message "Pomodoro set to 3-5" (buffer-name)))
|
||||
(defun +org-pomodoro/10-5 ()
|
||||
"Set Pomodoro intervals to 10-5"
|
||||
(interactive)
|
||||
(setq org-pomodoro-length 10)
|
||||
(setq org-pomodoro-short-break-length 5)
|
||||
(message "Pomodoro set to 10-5" (buffer-name)))
|
||||
(defun +org-pomodoro/15-5 ()
|
||||
"Set Pomodoro intervals to 15-5"
|
||||
(interactive)
|
||||
(setq org-pomodoro-length 15)
|
||||
(setq org-pomodoro-short-break-length 5)
|
||||
(message "Pomodoro set to 15-5" (buffer-name)))
|
||||
(defun +org-pomodoro/25-5 ()
|
||||
"Set Pomodoro intervals to 25-5"
|
||||
(interactive)
|
||||
(setq org-pomodoro-length 25)
|
||||
(setq org-pomodoro-short-break-length 5)
|
||||
(message "Pomodoro set to 25-5" (buffer-name)))
|
||||
(defun +org-pomodoro/30-10 ()
|
||||
"Set Pomodoro intervals to 30-10"
|
||||
(interactive)
|
||||
(setq org-pomodoro-length 30)
|
||||
(setq org-pomodoro-short-break-length 10)
|
||||
(message "Pomodoro set to 30-10" (buffer-name)))
|
||||
(defun +org-pomodoro/50-10 ()
|
||||
"Set Pomodoro intervals to 50-10"
|
||||
(interactive)
|
||||
(setq org-pomodoro-length 50)
|
||||
(setq org-pomodoro-short-break-length 10)
|
||||
(message "Pomodoro set to 50-10" (buffer-name)))
|
||||
|
||||
;; eisenhower matrix
|
||||
(after! org-agenda
|
||||
(add-to-list 'org-agenda-custom-commands
|
||||
'("1" "Eisenhower matrix"
|
||||
((tags-todo
|
||||
"+PRIORITY=\"A\"-habits+todo"
|
||||
((org-agenda-overriding-header "Urgent and important"))))
|
||||
nil))
|
||||
|
||||
(add-to-list 'org-agenda-custom-commands
|
||||
'("2" "Eisenhower matrix"
|
||||
((tags-todo
|
||||
"+PRIORITY=\"B\"-habits+todo"
|
||||
((org-agenda-overriding-header "Important but not urgent"))))
|
||||
nil))
|
||||
|
||||
(add-to-list 'org-agenda-custom-commands
|
||||
'("3" "Eisenhower matrix"
|
||||
((tags-todo
|
||||
"+PRIORITY=\"C\"-habits+todo"
|
||||
((org-agenda-overriding-header "Urgent but not important"))))
|
||||
nil))
|
||||
|
||||
(add-to-list 'org-agenda-custom-commands
|
||||
'("4" "Eisenhower matrix"
|
||||
((tags-todo
|
||||
"+PRIORITY=0-PRIORITY=\"A\"-PRIORITY=\"B\"-PRIORITY=\"C\"-habits+todo"
|
||||
;"+PRIORITY=0+PRIORITY=\"D\"-habits+todo"
|
||||
((org-agenda-overriding-header "Neither important nor urgent"))))
|
||||
nil))
|
||||
|
||||
;;; same but using lists
|
||||
(add-to-list 'org-agenda-custom-commands
|
||||
'("x" "Eisenhower Matrix (list)"
|
||||
((tags-todo
|
||||
"+PRIORITY=\"A\"-habits+todo"
|
||||
((org-agenda-overriding-header "Urgent and important")))
|
||||
(tags-todo
|
||||
"+PRIORITY=\"B\"-habits+todo"
|
||||
((org-agenda-overriding-header "Important but not urgent")))
|
||||
(tags-todo
|
||||
"+PRIORITY=\"C\"-habits+todo"
|
||||
((org-agenda-overriding-header "Urgent but not important")))
|
||||
(tags-todo
|
||||
"+PRIORITY=0-PRIORITY=\"A\"-PRIORITY=\"B\"-PRIORITY=\"C\"-habits+todo"
|
||||
((org-agenda-overriding-header "Neither important nor urgent"))))
|
||||
nil)))
|
||||
|
||||
;; eisenhower matrix grid
|
||||
|
||||
(defun +eisenhower-matrix/agenda-1 () (interactive) (org-agenda nil "1"))
|
||||
(defun +eisenhower-matrix/agenda-2 () (interactive) (org-agenda nil "2"))
|
||||
(defun +eisenhower-matrix/agenda-3 () (interactive) (org-agenda nil "3"))
|
||||
(defun +eisenhower-matrix/agenda-4 () (interactive) (org-agenda nil "4"))
|
||||
(defun split-4-ways () (interactive) (delete-other-windows) (split-window-right) (split-window-below) (windmove-right) (split-window-below) (windmove-left))
|
||||
(defun +eisenhower-matrix/redo-all-agenda-buffers ()
|
||||
(interactive)
|
||||
(dolist (buffer (buffer-list))
|
||||
(with-current-buffer buffer
|
||||
(when (derived-mode-p 'org-agenda-mode)
|
||||
(org-agenda-redo t)))))
|
||||
(defun +eisenhower-matrix/make-agendas ()
|
||||
(interactive)
|
||||
(+eisenhower-matrix/agenda-1)
|
||||
(hide-mode-line-mode)
|
||||
(+eisenhower-matrix/agenda-2)
|
||||
(hide-mode-line-mode)
|
||||
(+eisenhower-matrix/agenda-3)
|
||||
(hide-mode-line-mode)
|
||||
(+eisenhower-matrix/agenda-4)
|
||||
(hide-mode-line-mode)
|
||||
)
|
||||
(defun +eisenhower-matrix/make-eisenhower-matrix ()
|
||||
(interactive)
|
||||
(+eisenhower-matrix/make-agendas)
|
||||
(split-4-ways)
|
||||
(switch-to-buffer "*Org Agenda(1)*")
|
||||
(windmove-right)
|
||||
(switch-to-buffer "*Org Agenda(2)*")
|
||||
(windmove-down)
|
||||
(switch-to-buffer "*Org Agenda(4)*")
|
||||
(windmove-left)
|
||||
(switch-to-buffer "*Org Agenda(3)*")
|
||||
)
|
||||
|
||||
;; workspaces
|
||||
;;; Commentary: provides 2 grid workspaces via function;
|
||||
;;; +todo-workspaces/make-todo-workspace
|
||||
;;; +todo-workspaces/make-todo-workspace-min
|
||||
|
||||
(defun +todo-workspaces/agenda1 () (org-agenda nil "a"))
|
||||
(defun +todo-workspaces/agenda2 () (org-agenda nil "x"))
|
||||
(defun +todo-workspaces/make-todo-agendas () (+todo-workspaces/agenda1) (hide-mode-line-mode) (+todo-workspaces/agenda2) (hide-mode-line-mode))
|
||||
(defun +todo-workspaces/split-todo-workspace ()
|
||||
(delete-other-windows)
|
||||
(split-window-below)
|
||||
(windmove-down)
|
||||
(split-window-right)
|
||||
(windmove-up))
|
||||
(defun +todo-workspaces/split-todo-workspace-min ()
|
||||
(delete-other-windows)
|
||||
(split-window-below))
|
||||
(defun +todo-workspaces/redo-all-agenda-buffers ()
|
||||
(interactive)
|
||||
(dolist (buffer (buffer-list))
|
||||
(with-current-buffer buffer
|
||||
(when (derived-mode-p 'org-agenda-mode)
|
||||
(org-agenda-redo t)))))
|
||||
|
||||
(defun +todo-workspaces/make-todo-workspace ()
|
||||
(interactive)
|
||||
;(+todo-workspaces/redo-all-agenda-buffers)
|
||||
(+todo-workspaces/make-todo-agendas)
|
||||
(+todo-workspaces/split-todo-workspace)
|
||||
(switch-to-buffer "*Org Agenda(a)*")
|
||||
(windmove-down)
|
||||
(switch-to-buffer "*Org Agenda(x)*")
|
||||
(windmove-right)
|
||||
(find-file "~/notebook/ag/todo.org"))
|
||||
|
||||
(defun +todo-workspaces/make-todo-workspace-min ()
|
||||
(interactive)
|
||||
;(+todo-workspaces/redo-all-agenda-buffers)
|
||||
(+todo-workspaces/make-todo-agendas)
|
||||
(+todo-workspaces/split-todo-workspace-min)
|
||||
(switch-to-buffer "*Org Agenda(a)*")
|
||||
(windmove-down)
|
||||
(switch-to-buffer "*Org Agenda(x)*"))
|
||||
|
||||
(map! :leader
|
||||
(:prefix-map ("o" . "open")
|
||||
(:prefix-map ("w" . "workspaces")
|
||||
:desc "Eisenhower Matrix" "e" #'+eisenhower-matrix/make-eisenhower-matrix ;; classic eisenhower matrix
|
||||
:desc "Schedule/Eisenhower-list/todo" "t" #'+todo-workspaces/make-todo-workspace
|
||||
:desc "Schedule/Eisenhower-list" "s" #'+todo-workspaces/make-todo-workspace-min)
|
||||
(:prefix ("a" . "org agenda")
|
||||
:desc "Eisenhower Matrix" "e" #'+eisenhower-matrix/make-eisenhower-matrix ;; classic eisenhower matrix
|
||||
:desc "Rebuild All agendas" "r" #'+eisenhower-matrix/redo-all-agenda-buffers
|
||||
:desc "Schedule/Eisenhower-list/todo" "t" #'+todo-workspaces/make-todo-workspace ;; todo list is useless
|
||||
:desc "Schedule/Eisenhower-list" "s" #'+todo-workspaces/make-todo-workspace-min)))
|
||||
|
||||
;; org-roam configurations
|
||||
(use-package! org-roam
|
||||
:init
|
||||
:custom
|
||||
(org-roam-directory "~/notebook/roam/" )
|
||||
(org-roam-dailies-capture-templates
|
||||
'(("d" "default" entry "* %<%I:%M %p>: %?"
|
||||
:if-new (file+head "%<%Y-%m-%d>.org" "#+title: %<%Y-%m-%d>\n")))))
|
||||
|
||||
;; looks
|
||||
(cl-defmethod org-roam-node-type ((node org-roam-node))
|
||||
"Return the TYPE of NODE."
|
||||
(condition-case nil
|
||||
(file-name-nondirectory
|
||||
(directory-file-name
|
||||
(file-name-directory
|
||||
(file-relative-name (org-roam-node-file node) org-roam-directory))))
|
||||
(error "")))
|
||||
|
||||
(setq org-roam-node-display-template
|
||||
(concat "${type:15} ${title:30} " (propertize "${tags:10}" 'face 'org-tag)))
|
||||
|
||||
(setq org-roam-capture-templates
|
||||
'(("d" "default" plain "%?"
|
||||
:target (file+head "%<%Y%m%d%H%M%S>-${slug}.org"
|
||||
"#+title: ${title}\n")
|
||||
:unnarrowed t)
|
||||
; main things
|
||||
("l" "literature" plain "%?"
|
||||
:if-new
|
||||
(file+head "literature/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||
:immediate-finish t
|
||||
:unnarrowed t)
|
||||
("p" "permanent" plain "%?"
|
||||
:if-new
|
||||
(file+head "permanent/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||
:immediate-finish t
|
||||
:unnarrowed t)
|
||||
|
||||
; now using inbox.org via org-capture
|
||||
("f" "fleeting" plain "%?"
|
||||
:if-new
|
||||
(file+head "fleeting/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||
:immediate-finish t
|
||||
:unnarrowed t)
|
||||
|
||||
("s" "school" plain "%?"
|
||||
:if-new
|
||||
(file+head "school/%<%Y%m%d%H%M%S>-${title}.org" "#+title: ${title}\n")
|
||||
:immediate-finish t
|
||||
:unnarrowed t)))
|
||||
|
||||
;; org-capture
|
||||
(after! org
|
||||
|
||||
;; examples: file:~/.emacs.d/modules/lang/org/config.el
|
||||
;; file:~/.emacs.d/modules/lang/org/autoload/org-capture.el
|
||||
|
||||
;; set locations personal and centralized files
|
||||
|
||||
(defvar +org-capture-refile-file "ag/refile.org")
|
||||
(defun +org-capture-refile-file ()
|
||||
(expand-file-name +org-capture-refile-file org-directory))
|
||||
(defvar +org-capture-todo-custom-file "ag/todo.org")
|
||||
(defun +org-capture-todo-custom-file ()
|
||||
(expand-file-name +org-capture-todo-custom-file org-directory))
|
||||
(defvar +org-capture-custom-projects-file "ag/projects.org")
|
||||
(defun +org-capture-custom-central-project-todo-file ()
|
||||
"TODO"
|
||||
(+org--capture-central-file
|
||||
+org-capture-custom-projects-file (projectile-project-name)))
|
||||
(defun +org-capture-custom-central-project-notes-file ()
|
||||
"TODO"
|
||||
(+org--capture-central-file
|
||||
+org-capture-custom-projects-file (projectile-project-name)))
|
||||
(defun +org-capture-custom-central-project-changelog-file ()
|
||||
"TODO"
|
||||
(+org--capture-central-file
|
||||
+org-capture-custom-projects-file (projectile-project-name)))
|
||||
|
||||
;(add-to-list 'org-capture-templates
|
||||
; '(("s" "Slipbox" entry (file "braindump/org/inbox.org")
|
||||
; "* %?\n")
|
||||
; ("t" "Personal todo" entry
|
||||
; (file+headline +org-capture-todo-file "Inbox")
|
||||
; "* [ ] %?\n%i\n%a" :prepend t)
|
||||
; )
|
||||
|
||||
(setq org-capture-templates
|
||||
'(("t" "Personal todo" entry
|
||||
(file+headline +org-capture-todo-custom-file "todo")
|
||||
"* TODO %?\n%i\n%a" :prepend t)
|
||||
("T" "Personal todo (no link)" entry
|
||||
(file+headline +org-capture-todo-custom-file "todo")
|
||||
"* TODO %?\n" :prepend t)
|
||||
|
||||
;;; i never use this
|
||||
;("n" "Personal notes" entry
|
||||
;(file+headline +org-capture-notes-file "Inbox")
|
||||
;"* %u %?\n%i\n%a" :prepend t)
|
||||
("r" "Personal refile file" entry
|
||||
(file +org-capture-refile-file)
|
||||
"* %u %?\n%i\n%a" :prepend t)
|
||||
|
||||
;; using org-journal atm, i will likely never use this
|
||||
;("j" "Journal" entry
|
||||
;(file+olp+datetree +org-capture-journal-file)
|
||||
;"* %U %?\n%i\n%a" :prepend t)
|
||||
|
||||
;; Will use {project-root}/{todo,notes,changelog}.org, unless a
|
||||
;; {todo,notes,changelog}.org file is found in a parent directory.
|
||||
;; Uses the basename from `+org-capture-todo-file',
|
||||
;; `+org-capture-changelog-file' and `+org-capture-notes-file'.
|
||||
("p" "Templates for projects")
|
||||
("pt" "Project-local todo" entry ; {project-root}/todo.org
|
||||
(file+headline +org-capture-project-todo-file "Inbox")
|
||||
"* TODO %?\n%i\n%a" :prepend t)
|
||||
("pn" "Project-local notes" entry ; {project-root}/notes.org
|
||||
(file+headline +org-capture-project-notes-file "Inbox")
|
||||
"* %U %?\n%i\n%a" :prepend t)
|
||||
("pc" "Project-local changelog" entry ; {project-root}/changelog.org
|
||||
(file+headline +org-capture-project-changelog-file "Unreleased")
|
||||
"* %U %?\n%i\n%a" :prepend t)
|
||||
|
||||
;; reference for function: [[file:~/.emacs.d/modules/lang/org/autoload/org-capture.el::defun +org--capture-central-file (file project]]
|
||||
;; Will use {org-directory}/{+org-capture-projects-file} and store
|
||||
;; these under {ProjectName}/{Tasks,Notes,Changelog} headings. They
|
||||
;; support `:parents' to specify what headings to put them under, e.g.
|
||||
;; :parents ("Projects")
|
||||
("o" "Centralized templates for projects")
|
||||
("ot" "Project todo" entry
|
||||
(function +org-capture-custom-central-project-todo-file)
|
||||
"* TODO %?\n %i\n %a"
|
||||
:heading "Tasks"
|
||||
:prepend nil)
|
||||
("on" "Project notes" entry
|
||||
(function +org-capture-custom-central-project-notes-file)
|
||||
"* %U %?\n %i\n %a"
|
||||
:heading "Notes"
|
||||
:prepend t)
|
||||
("oc" "Project changelog" entry
|
||||
(function +org-capture-custom-central-project-changelog-file)
|
||||
"* %U %?\n %i\n %a"
|
||||
:heading "Changelog"
|
||||
:prepend t)
|
||||
|
||||
;; org books / general logging
|
||||
("b" "Book log / General log (org)" item (function org-books-visit-book-log)
|
||||
"- %U %?" :prepend t)
|
||||
|
||||
;; zettelkasten
|
||||
("s" "Slipbox" entry (file "roam/inbox.org")
|
||||
"* %U %?\n")
|
||||
("S" "Slipbox link" entry (file "roam/inbox.org")
|
||||
"* %U %?\n %i\n %a"))))
|
||||
|
||||
|
||||
(use-package! org-wild-notifier
|
||||
:init
|
||||
(add-hook 'doom-post-init-hook (org-wild-notifier-mode))
|
||||
:config
|
||||
(require 'org-duration)
|
||||
;(setq alert-default-style 'libnotify)
|
||||
(setq org-wild-notifier-alert-time '(10 0))
|
||||
(setq org-wild-notifier-keyword-whitelist nil)
|
||||
(setq org-wild-notifier-keyword-blacklist '("DONE"))
|
||||
(alert-add-rule :category "org-wild-notifier"
|
||||
:style (cond (alert-libnotify-command
|
||||
'libnotify)
|
||||
(alert-default-style))))
|
||||
|
||||
;;; play audio for for alerts
|
||||
(defun +org-wild-notifier/play-sound () (interactive) (start-process-shell-command "org-wild-notifier-audio-player" nil "mpg123 -f 23000 ~/resources/sounds/alerts/metal-gear-item-drop.mp3")) (defadvice org-wild-notifier--notify (after org-wild-notifier--play-sound-after-notify activate) (+org-wild-notifier/play-sound))
|
||||
|
||||
;;; for testing notifications
|
||||
(defun org-wild-notifier-alert-test ()
|
||||
(interactive)
|
||||
(alert "test" :category 'org-wild-notifier))
|
BIN
home/default/.doom.d/img/camcorder.jpeg
Normal file
BIN
home/default/.doom.d/img/camcorder.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
207
home/default/.doom.d/init.el
Normal file
207
home/default/.doom.d/init.el
Normal file
@ -0,0 +1,207 @@
|
||||
;;; init.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; This file controls what Doom modules are enabled and what order they load
|
||||
;; in. Remember to run 'doom sync' after modifying it!
|
||||
|
||||
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||
;; of our modules are listed, including what flags they support.
|
||||
|
||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||
;; flags as well (those symbols that start with a plus).
|
||||
;;
|
||||
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||
;; directory (for easy access to its source code).
|
||||
|
||||
(doom! :input
|
||||
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||
;;chinese
|
||||
;;japanese
|
||||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
;;ivy ; a search engine for love and life
|
||||
vertico ; the search engine of the future
|
||||
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
doom ; what makes DOOM look the way it does
|
||||
doom-dashboard ; a nifty splash screen for Emacs
|
||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
;;(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
;;indent-guides ; highlighted indent columns
|
||||
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||
;;minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
;;nav-flash ; blink cursor line after big motions
|
||||
;;neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
;;tabs ; a tab bar for Emacs
|
||||
treemacs ; a project drawer, like neotree but cooler
|
||||
;;unicode ; extended unicode support for various languages
|
||||
(vc-gutter +pretty) ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
workspaces ; tab emulation, persistence & separate workspaces
|
||||
zen ; distraction-free coding or writing
|
||||
|
||||
:editor
|
||||
(evil +everywhere); come to the dark side, we have cookies
|
||||
file-templates ; auto-snippets for empty files
|
||||
fold ; (nigh) universal code folding
|
||||
;;(format +onsave) ; automated prettiness
|
||||
;;god ; run Emacs commands without modifier keys
|
||||
;;lispy ; vim for lisp, for people who don't like vim
|
||||
;;multiple-cursors ; editing in many places at once
|
||||
;;objed ; text object editing for the innocent
|
||||
;;parinfer ; turn lisp into python, sort of
|
||||
;;rotate-text ; cycle region at point between text candidates
|
||||
snippets ; my elves. They type so I don't have to
|
||||
;;word-wrap ; soft wrapping with language-aware indent
|
||||
|
||||
:emacs
|
||||
dired ; making dired pretty [functional]
|
||||
electric ; smarter, keyword-based electric-indent
|
||||
;;ibuffer ; interactive buffer management
|
||||
undo ; persistent, smarter undo for your inevitable mistakes
|
||||
vc ; version-control and Emacs, sitting in a tree
|
||||
|
||||
:term
|
||||
;;eshell ; the elisp shell that works everywhere
|
||||
;;shell ; simple shell REPL for Emacs
|
||||
;;term ; basic terminal emulator for Emacs
|
||||
vterm ; the best terminal emulation in Emacs
|
||||
|
||||
:checkers
|
||||
syntax ; tasing you for every semicolon you forget
|
||||
(spell +flyspell) ; tasing you for misspelling mispelling
|
||||
;;grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
;;ansible
|
||||
;;biblio ; Writes a PhD for you (citation needed)
|
||||
;;collab ; buffers with friends
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
;;docker
|
||||
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||
;;ein ; tame Jupyter notebooks with emacs
|
||||
(eval +overlay) ; run code, run (also, repls)
|
||||
;;gist ; interacting with github gists
|
||||
(lookup ; navigate your code and its documentation
|
||||
+dictionary)
|
||||
;;lsp ; M-x vscode
|
||||
magit ; a git porcelain for Emacs
|
||||
;;make ; run make tasks from Emacs
|
||||
;;pass ; password manager for nerds
|
||||
;;pdf ; pdf enhancements
|
||||
prodigy ; FIXME managing external services & code builders
|
||||
;;rgb ; creating color strings
|
||||
;;taskrunner ; taskrunner for all your projects
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:os
|
||||
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||
tty ; improve the terminal Emacs experience
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;beancount ; mind the GAAP
|
||||
;;(cc +lsp) ; C > C++ == 1
|
||||
cc
|
||||
;;clojure ; java with a lisp
|
||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||
;;coq ; proofs-as-programs
|
||||
;;crystal ; ruby at the speed of c
|
||||
;;csharp ; unity, .NET, and mono shenanigans
|
||||
;;data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
emacs-lisp ; drown in parentheses
|
||||
;;erlang ; an elegant language for a more civilized age
|
||||
;;ess ; emacs speaks statistics
|
||||
;;factor
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
;;gdscript ; the language you waited for
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(graphql +lsp) ; Give queries a REST
|
||||
;;(haskell +lsp) ; a language that's lazier than I am
|
||||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
;;json ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
java
|
||||
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||
;;julia ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
;;latex ; writing papers in Emacs has never been so fun
|
||||
;;lean ; for folks with too much to prove
|
||||
ledger ; be audit you can be
|
||||
;;lua ; one-based indices? one-based indices
|
||||
markdown ; writing docs for people to ignore
|
||||
;;nim ; python + lisp at the speed of c
|
||||
;;nix ; I hereby declare "nix geht mehr!"
|
||||
;;ocaml ; an objective camel
|
||||
(org
|
||||
+journal
|
||||
+habit
|
||||
+roam2
|
||||
+dragndrop
|
||||
+pomodoro
|
||||
+publish
|
||||
;+pretty
|
||||
) ; organize your plain life in plain text
|
||||
;;php ; perl's insecure younger brother
|
||||
;;plantuml ; diagrams for confusing people more
|
||||
;;purescript ; javascript, but functional
|
||||
;;python ; beautiful is better than ugly
|
||||
;;qt ; the 'cutest' gui framework ever
|
||||
;;racket ; a DSL for DSLs
|
||||
;;raku ; the artist formerly known as perl6
|
||||
;;rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
rust
|
||||
;;scala ; java, but good
|
||||
;;(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
;;web ; the tubes
|
||||
;;yaml ; JSON, but readable
|
||||
;;zig ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
:app
|
||||
;;calendar
|
||||
;;emms
|
||||
;;everywhere ; *leave* Emacs!? You must be joking
|
||||
;;irc ; how neckbeards socialize
|
||||
;;(rss +org) ; emacs as an RSS reader
|
||||
;;twitter ; twitter client https://twitter.com/vnought
|
||||
|
||||
:config
|
||||
;;literate
|
||||
(default +bindings +smartparens))
|
530
home/default/.doom.d/lisp/org-wild-notifier/org-wild-notifier.el
Normal file
530
home/default/.doom.d/lisp/org-wild-notifier/org-wild-notifier.el
Normal file
@ -0,0 +1,530 @@
|
||||
;;; org-wild-notifier.el --- Customizable org-agenda notifications -*- lexical-binding: t -*-
|
||||
|
||||
|
||||
;; Copyright (C) 2017 Artem Khramov
|
||||
|
||||
;; Author: Artem Khramov <akhramov+emacs@pm.me>
|
||||
;; Created: 6 Jan 2017
|
||||
;; Version: 0.5.0
|
||||
;; Package-Requires: ((alert "1.2") (async "1.9.3") (dash "2.18.0") (emacs "26.1"))
|
||||
;; Keywords: notification alert org org-agenda agenda
|
||||
;; URL: https://github.com/akhramov/org-wild-notifier.el
|
||||
|
||||
;; This program is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; This program is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This package provides notification functions for org-agenda.
|
||||
;;
|
||||
;; To perform a one-time check use `org-wild-notifier-check'
|
||||
;; function.
|
||||
;; To enable timer-based notifications please use
|
||||
;;`org-wild-notifier-mode'.
|
||||
;; Notification times can be customized either globally (for all org
|
||||
;; entries) through `org-wild-notifier-alert-time' variable or on per
|
||||
;; org entry basis using `WILD_NOTIFIER_NOTIFY_BEFORE` property, which
|
||||
;; in turn is customizable via
|
||||
;; `org-wild-notifier-alert-times-property' variable.
|
||||
;; By default you get notifications about TODO events only. To
|
||||
;; customize that behavior please use
|
||||
;; `org-wild-notifier-keyword-whitelist' variable. In contrary, if
|
||||
;; you don't want to receive notifications regarding certain events,
|
||||
;; you can use `org-wild-notifier-keyword-blacklist' variable.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'dash)
|
||||
(require 'alert)
|
||||
(require 'async)
|
||||
(require 'org-agenda)
|
||||
(require 'cl-lib)
|
||||
(require 'org-duration)
|
||||
|
||||
(defgroup org-wild-notifier nil
|
||||
"org-wild-notifier customization options"
|
||||
:group 'org)
|
||||
|
||||
(defcustom org-wild-notifier-alert-time '(10)
|
||||
"Time in minutes to get a notification about upcoming event.
|
||||
Cannot be less than 1."
|
||||
:package-version '(org-wild-notifier . "0.1.0")
|
||||
:group 'org-wild-notifier
|
||||
:type '(choice (integer :tag "Notify once")
|
||||
(repeat integer)))
|
||||
|
||||
(defcustom org-wild-notifier-alert-times-property "WILD_NOTIFIER_NOTIFY_BEFORE"
|
||||
"Use this property in your agenda files to add additional notifications \
|
||||
to an event."
|
||||
:package-version '(org-wild-notifier . "0.1.0")
|
||||
:group 'org-wild-notifier
|
||||
:type 'string)
|
||||
|
||||
(defcustom org-wild-notifier-notification-title "Agenda"
|
||||
"Notifications title."
|
||||
:package-version '(org-wild-notifier . "0.1.0")
|
||||
:group 'org-wild-notifier
|
||||
:type 'string)
|
||||
|
||||
(defcustom org-wild-notifier-notification-icon nil
|
||||
"Path to notification icon file."
|
||||
:package-version '(org-wild-notifier . "0.4.1")
|
||||
:group 'org-wild-notifier
|
||||
:type 'string)
|
||||
|
||||
(defcustom org-wild-notifier-keyword-whitelist nil
|
||||
"Receive notifications for these keywords only.
|
||||
Leave this variable blank if you do not want to filter anything."
|
||||
:package-version '(org-wild-notifier . "0.2.2")
|
||||
:group 'org-wild-notifier
|
||||
:type '(repeat string))
|
||||
|
||||
(defcustom org-wild-notifier-keyword-blacklist nil
|
||||
"Never receive notifications for these keywords."
|
||||
:package-version '(org-wild-notifier . "0.2.2")
|
||||
:group 'org-wild-notifier
|
||||
:type '(repeat string))
|
||||
|
||||
(defcustom org-wild-notifier-tags-whitelist nil
|
||||
"Receive notifications for these tags only.
|
||||
Leave this variable blank if you do not want to filter anything."
|
||||
:package-version '(org-wild-notifier . "0.3.1")
|
||||
:group 'org-wild-notifier
|
||||
:type '(repeat string))
|
||||
|
||||
(defcustom org-wild-notifier-tags-blacklist nil
|
||||
"Never receive notifications for these tags."
|
||||
:package-version '(org-wild-notifier . "0.3.1")
|
||||
:group 'org-wild-notifier
|
||||
:type '(repeat string))
|
||||
|
||||
(defcustom org-wild-notifier-display-time-format-string "%I:%M %p"
|
||||
"The format string that should be passed to `format-time-string' to display a time."
|
||||
:package-version '(org-wild-notifier . "0.5.0")
|
||||
:group 'org-wild-notifier
|
||||
:type 'string)
|
||||
|
||||
(defcustom org-wild-notifier-predicate-whitelist nil
|
||||
"Receive notifications for events matching these predicates only.
|
||||
Each function should take an event POM and return non-nil iff that event should
|
||||
trigger a notification. Leave this variable blank if you do not want to filter
|
||||
anything."
|
||||
:package-version '(org-wild-notifier . "0.5.0")
|
||||
:group 'org-wild-notifier
|
||||
:type '(function))
|
||||
|
||||
(defcustom org-wild-notifier-additional-environment-regexes nil
|
||||
"Additional regular expressions that should be provided to
|
||||
`async-inject-environment' before running the async command to
|
||||
check notifications."
|
||||
:package-version '(org-wild-notifier . "0.5.0")
|
||||
:group 'org-wild-notifier
|
||||
:type '(string))
|
||||
|
||||
(defcustom org-wild-notifier-predicate-blacklist
|
||||
'(org-wild-notifier-done-keywords-predicate)
|
||||
"Never receive notifications for events matching these predicates.
|
||||
Each function should take an event POM and return non-nil iff that event should
|
||||
not trigger a notification."
|
||||
:package-version '(org-wild-notifier . "0.5.0")
|
||||
:group 'org-wild-notifier
|
||||
:type '(function))
|
||||
|
||||
(defcustom org-wild-notifier--alert-severity 'medium
|
||||
"Severity of the alert.
|
||||
options: 'high 'medium 'low"
|
||||
:package-version '(org-wild-notifier . "0.3.1")
|
||||
:group 'org-wild-notifier
|
||||
:type 'symbol
|
||||
:options '(high medium low))
|
||||
|
||||
(defcustom org-wild-notifier-extra-alert-plist nil
|
||||
"Additional arguments that should be passed to invocations of `alert'."
|
||||
:package-version "v0.5.0"
|
||||
:group 'org-wild-notifier
|
||||
:type 'plist)
|
||||
|
||||
(defcustom org-wild-notifier-day-wide-alert-times nil
|
||||
"A list of time of day strings at which alerts for day wide events should trigger."
|
||||
:package-version '(org-wild-notifier . "0.5.0")
|
||||
:group 'org-wild-notifier
|
||||
:type 'string)
|
||||
|
||||
(defcustom org-wild-notifier-show-any-overdue-with-day-wide-alerts t
|
||||
"Show any overdue TODO items along with day wide alerts whenever they are shown."
|
||||
:package-version '(org-wild-notifier . "0.5.0")
|
||||
:group 'org-wild-notifier
|
||||
:type 'string)
|
||||
|
||||
(defvar org-wild-notifier--timer nil
|
||||
"Timer value.")
|
||||
|
||||
(defvar org-wild-notifier--process nil
|
||||
"Currently-running async process.")
|
||||
|
||||
(defvar org-wild-notifier--agenda-buffer-name "*org wild notifier affairs*"
|
||||
"A name for temporary 'org-agenda' buffer.")
|
||||
|
||||
(defvar org-wild-notifier--last-check-time (seconds-to-time 0)
|
||||
"Last time checked for events.")
|
||||
|
||||
(defun org-wild-notifier--time= (&rest list)
|
||||
"Compare timestamps.
|
||||
Comparison is performed by converted each element of LIST onto string
|
||||
in order to ignore seconds."
|
||||
(->> list
|
||||
(--map (format-time-string "%d:%H:%M" it))
|
||||
(-uniq)
|
||||
(length)
|
||||
(= 1)))
|
||||
|
||||
(defun org-wild-notifier--today ()
|
||||
"Get the timestamp for the beginning of current day."
|
||||
(apply 'encode-time
|
||||
(append '(0 0 0) (nthcdr 3 (decode-time (current-time))))))
|
||||
|
||||
(defun org-wild-notifier--timestamp-within-interval-p (timestamp interval)
|
||||
"Check whether TIMESTAMP is within notification INTERVAL."
|
||||
(org-wild-notifier--time=
|
||||
(time-add (current-time) (seconds-to-time (* 60 interval)))
|
||||
timestamp))
|
||||
|
||||
(defun org-wild-notifier--notifications (event)
|
||||
"Get notifications for given EVENT.
|
||||
Returns a list of time information interval pairs."
|
||||
(->> (list
|
||||
(org-wild-notifier--filter-day-wide-events (cadr (assoc 'times event)))
|
||||
(cdr (assoc 'intervals event)))
|
||||
(apply '-table-flat (lambda (ts int) (list ts int)))
|
||||
;; When no values are provided for table flat, we get the second values
|
||||
;; paired with nil.
|
||||
(--filter (not (null (car it))))
|
||||
(--filter (org-wild-notifier--timestamp-within-interval-p (cdar it) (cadr it)))))
|
||||
|
||||
(defun org-wild-notifier--has-timestamp (s)
|
||||
(string-match org-ts-regexp0 s)
|
||||
(match-beginning 7))
|
||||
|
||||
(defun org-wild-notifier--filter-day-wide-events (times)
|
||||
(--filter (org-wild-notifier--has-timestamp (car it)) times))
|
||||
|
||||
(defun org-wild-notifier--time-left (seconds)
|
||||
"Human-friendly representation for SECONDS."
|
||||
(-> seconds
|
||||
(pcase
|
||||
((pred (>= 0)) "right now")
|
||||
((pred (>= 3600)) "in %M")
|
||||
(_ "in %H %M"))
|
||||
|
||||
(format-seconds seconds)))
|
||||
|
||||
(defun org-wild-notifier--get-hh-mm-from-org-time-string (time-string)
|
||||
"Convert given org time-string TIME-STRING into string with 'hh:mm' format."
|
||||
(format-time-string
|
||||
org-wild-notifier-display-time-format-string
|
||||
(encode-time (org-parse-time-string time-string))))
|
||||
|
||||
(defun org-wild-notifier--notification-text (str-interval event)
|
||||
"For given STR-INTERVAL list and EVENT get notification wording."
|
||||
(format "%s at %s (%s)"
|
||||
(cdr (assoc 'title event))
|
||||
(org-wild-notifier--get-hh-mm-from-org-time-string (car str-interval))
|
||||
(org-wild-notifier--time-left (* 60 (cdr str-interval)))))
|
||||
|
||||
(defun org-wild-notifier-get-minutes-into-day (time)
|
||||
(org-duration-to-minutes (org-get-time-of-day time t)))
|
||||
|
||||
(defun org-wild-notifier-get-hours-minutes-from-time (time-string)
|
||||
(let ((total-minutes (truncate (org-wild-notifier-get-minutes-into-day time-string))))
|
||||
(list (/ total-minutes 60)
|
||||
(mod total-minutes 60))))
|
||||
|
||||
(defun org-wild-notifier-set-hours-minutes-for-time (time hours minutes)
|
||||
(cl-destructuring-bind (_s _m _h day month year dow dst utcoff) (decode-time time)
|
||||
(encode-time 0 minutes hours day month year dow dst utcoff)))
|
||||
|
||||
(defun org-wild-notifier-current-time-matches-time-of-day-string (time-of-day-string)
|
||||
(let ((now (current-time)))
|
||||
(org-wild-notifier--time=
|
||||
now
|
||||
(apply 'org-wild-notifier-set-hours-minutes-for-time
|
||||
now
|
||||
(org-wild-notifier-get-hours-minutes-from-time time-of-day-string)))))
|
||||
|
||||
(defun org-wild-notifier-current-time-is-day-wide-time ()
|
||||
(--any (org-wild-notifier-current-time-matches-time-of-day-string it)
|
||||
org-wild-notifier-day-wide-alert-times))
|
||||
|
||||
(defun org-wild-notifier-day-wide-notifications (events)
|
||||
(->> events
|
||||
(-filter 'org-wild-notifier-display-as-day-wide-event)
|
||||
(-map 'org-wild-notifier--day-wide-notification-text)
|
||||
(-uniq)))
|
||||
|
||||
(defun org-wild-notifier-display-as-day-wide-event (event)
|
||||
;; `org-wild-notifier-event-has-any-passed-time' event is a requirement,
|
||||
;; regardless of whether
|
||||
;; `org-wild-notifier-show-any-overdue-with-day-wide-alerts' is set because
|
||||
;; the events list can include events scheduled tomorrow. We only want to
|
||||
;; alert for things scheduled today.
|
||||
(and (org-wild-notifier-event-has-any-passed-time event)
|
||||
(or org-wild-notifier-show-any-overdue-with-day-wide-alerts
|
||||
(org-wild-notifier-event-has-any-day-wide-timestamp event))))
|
||||
|
||||
(defun org-wild-notifier-event-has-any-day-wide-timestamp (event)
|
||||
(--any (not (org-wild-notifier--has-timestamp (car it)))
|
||||
(car (cdr (assoc 'times event)))))
|
||||
|
||||
(defun org-wild-notifier-event-has-any-passed-time (event)
|
||||
(--any (time-less-p (cdr it) (current-time))
|
||||
(car (cdr (assoc 'times event )))))
|
||||
|
||||
(defun org-wild-notifier--day-wide-notification-text (event)
|
||||
"For given STR-INTERVAL list and EVENT get notification wording."
|
||||
(format "%s is due or scheduled today"
|
||||
(cdr (assoc 'title event))))
|
||||
|
||||
(defun org-wild-notifier--check-event (event)
|
||||
"Get notifications for given EVENT.
|
||||
Returns a list of notification messages"
|
||||
(->> (org-wild-notifier--notifications event)
|
||||
(--map (org-wild-notifier--notification-text `(,(caar it) . ,(cadr it)) event))))
|
||||
|
||||
(defun org-wild-notifier--get-tags (marker)
|
||||
"Retrieve tags of MARKER."
|
||||
(-> (org-entry-get marker "TAGS")
|
||||
(or "")
|
||||
(org-split-string ":")))
|
||||
|
||||
(defun org-wild-notifier--whitelist-predicates ()
|
||||
(->> `([,org-wild-notifier-keyword-whitelist
|
||||
(lambda (it)
|
||||
(-contains-p org-wild-notifier-keyword-whitelist
|
||||
(org-entry-get it "TODO")))]
|
||||
|
||||
[,org-wild-notifier-tags-whitelist
|
||||
(lambda (it)
|
||||
(-intersection org-wild-notifier-tags-whitelist
|
||||
(org-wild-notifier--get-tags it)))]
|
||||
|
||||
[,org-wild-notifier-predicate-whitelist
|
||||
(lambda (marker)
|
||||
(--some? (funcall it marker) org-wild-notifier-predicate-whitelist))])
|
||||
(--filter (aref it 0))
|
||||
(--map (aref it 1))))
|
||||
|
||||
(defun org-wild-notifier--blacklist-predicates ()
|
||||
(->> `([,org-wild-notifier-keyword-blacklist
|
||||
(lambda (it)
|
||||
(-contains-p org-wild-notifier-keyword-blacklist
|
||||
(org-entry-get it "TODO")))]
|
||||
|
||||
[,org-wild-notifier-tags-blacklist
|
||||
(lambda (it)
|
||||
(-intersection org-wild-notifier-tags-blacklist
|
||||
(org-wild-notifier--get-tags it)))]
|
||||
|
||||
[,org-wild-notifier-predicate-blacklist
|
||||
(lambda (marker)
|
||||
(--some? (funcall it marker) org-wild-notifier-predicate-blacklist))])
|
||||
(--filter (aref it 0))
|
||||
(--map (aref it 1))))
|
||||
|
||||
(defun org-wild-notifier-done-keywords-predicate (marker)
|
||||
(save-excursion
|
||||
(set-buffer (marker-buffer marker))
|
||||
(goto-char (marker-position marker))
|
||||
(member (nth 2 (org-heading-components)) org-done-keywords)))
|
||||
|
||||
(defun org-wild-notifier--apply-whitelist (markers)
|
||||
"Apply whitelist to MARKERS."
|
||||
(-if-let (whitelist-predicates (org-wild-notifier--whitelist-predicates))
|
||||
(-> (apply '-orfn whitelist-predicates)
|
||||
(-filter markers))
|
||||
markers))
|
||||
|
||||
(defun org-wild-notifier--apply-blacklist (markers)
|
||||
"Apply blacklist to MARKERS."
|
||||
(-if-let (blacklist-predicates (org-wild-notifier--blacklist-predicates))
|
||||
(-> (apply '-orfn blacklist-predicates)
|
||||
(-remove markers))
|
||||
markers))
|
||||
|
||||
(defconst org-wild-notifier-default-environment-regex
|
||||
(macroexpand
|
||||
`(rx string-start
|
||||
(or ,@(mapcar (lambda (literal) (list 'literal literal))
|
||||
(list
|
||||
"org-agenda-files"
|
||||
"load-path"
|
||||
"org-todo-keywords"
|
||||
"org-wild-notifier-alert-time"
|
||||
"org-wild-notifier-keyword-whitelist"
|
||||
"org-wild-notifier-keyword-blacklist"
|
||||
"org-wild-notifier-tags-whitelist"
|
||||
"org-wild-notifier-tags-blacklist"
|
||||
"org-wild-notifier-predicate-whitelist"
|
||||
"org-wild-notifier-predicate-blacklist")))
|
||||
string-end)))
|
||||
|
||||
|
||||
(defun org-wild-notifier-environment-regex ()
|
||||
(macroexpand
|
||||
`(rx (or
|
||||
,@(mapcar (lambda (regexp) (list 'regexp regexp))
|
||||
(cons org-wild-notifier-default-environment-regex
|
||||
org-wild-notifier-additional-environment-regexes))))))
|
||||
|
||||
(defun org-wild-notifier--retrieve-events ()
|
||||
"Get events from agenda view."
|
||||
`(lambda ()
|
||||
(setf org-agenda-use-time-grid nil)
|
||||
(setf org-agenda-compact-blocks t)
|
||||
,(async-inject-variables (org-wild-notifier-environment-regex))
|
||||
|
||||
(package-initialize)
|
||||
(require 'org-wild-notifier)
|
||||
|
||||
(org-agenda-list 2 (org-read-date nil nil "today"))
|
||||
|
||||
(->> (org-split-string (buffer-string) "\n")
|
||||
(--map (plist-get
|
||||
(org-fix-agenda-info (text-properties-at 0 it))
|
||||
'org-marker))
|
||||
(-non-nil)
|
||||
(org-wild-notifier--apply-whitelist)
|
||||
(org-wild-notifier--apply-blacklist)
|
||||
(-map 'org-wild-notifier--gather-info))))
|
||||
|
||||
(defun org-wild-notifier--notify (event-msg)
|
||||
"Notify about an event using `alert' library.
|
||||
EVENT-MSG is a string representation of the event."
|
||||
(apply
|
||||
'alert event-msg
|
||||
:icon org-wild-notifier-notification-icon
|
||||
:title org-wild-notifier-notification-title
|
||||
:severity org-wild-notifier--alert-severity
|
||||
:category 'org-wild-notifier
|
||||
org-wild-notifier-extra-alert-plist))
|
||||
|
||||
(defun org-wild-notifier--timestamp-parse (timestamp)
|
||||
(let ((parsed (org-parse-time-string timestamp))
|
||||
(today (org-format-time-string "<%Y-%m-%d>")))
|
||||
;; seconds-to-time returns also milliseconds and nanoseconds so we
|
||||
;; have to "trim" the list
|
||||
(butlast
|
||||
(seconds-to-time
|
||||
(org-time-add
|
||||
;; we get the cycled absolute day (not hour and minutes)
|
||||
(org-time-from-absolute (org-closest-date timestamp today 'past))
|
||||
;; so we have to add the minutes too
|
||||
(+ (* (decoded-time-hour parsed) 3600)
|
||||
(* (decoded-time-minute parsed) 60))))
|
||||
2)))
|
||||
|
||||
(defun org-wild-notifier--extract-time (marker)
|
||||
"Extract timestamps from MARKER.
|
||||
Timestamps are extracted as cons cells. car holds org-formatted
|
||||
string, cdr holds time in list-of-integer format."
|
||||
(-non-nil
|
||||
(--map
|
||||
(let ((org-timestamp (org-entry-get marker it)))
|
||||
(and org-timestamp
|
||||
(cons org-timestamp
|
||||
(org-wild-notifier--timestamp-parse org-timestamp))))
|
||||
'("DEADLINE" "SCHEDULED" "TIMESTAMP"))))
|
||||
|
||||
(defun org-wild-notifier--extract-title (marker)
|
||||
"Extract event title from MARKER.
|
||||
MARKER acts like the event's identifier."
|
||||
(org-with-point-at marker
|
||||
(-let (((_lvl _reduced-lvl _todo _priority title _tags)
|
||||
(org-heading-components)))
|
||||
title)))
|
||||
|
||||
(defun org-wild-notifier--extract-notication-intervals (marker)
|
||||
"Extract notification intervals from the event's properties.
|
||||
MARKER acts like the event's identifier. Resulting list also contains
|
||||
standard notification interval (`org-wild-notifier-alert-time')."
|
||||
`(,@(-flatten (list org-wild-notifier-alert-time))
|
||||
,@(-map 'string-to-number
|
||||
(org-entry-get-multivalued-property
|
||||
marker
|
||||
org-wild-notifier-alert-times-property))))
|
||||
|
||||
(defun org-wild-notifier--gather-info (marker)
|
||||
"Collect information about an event.
|
||||
MARKER acts like event's identifier."
|
||||
`((times . (,(org-wild-notifier--extract-time marker)))
|
||||
(title . ,(org-wild-notifier--extract-title marker))
|
||||
(intervals . ,(org-wild-notifier--extract-notication-intervals marker))))
|
||||
|
||||
(defun org-wild-notifier--stop ()
|
||||
"Stops the notification timer and cancel any in-progress checks."
|
||||
(-some-> org-wild-notifier--timer (cancel-timer))
|
||||
(when org-wild-notifier--process
|
||||
(interrupt-process org-wild-notifier--process)
|
||||
(setq org-wild-notifier--process nil)))
|
||||
|
||||
(defun org-wild-notifier--start ()
|
||||
"Start the notification timer. Cancel old one, if any.
|
||||
Timer is scheduled on the beginning of every minute, so for
|
||||
smoother experience this function also runs a check without timer."
|
||||
(org-wild-notifier--stop)
|
||||
(org-wild-notifier-check)
|
||||
|
||||
(--> (format-time-string "%H:%M" (time-add (current-time) 60))
|
||||
(run-at-time it 60 'org-wild-notifier-check)
|
||||
(setf org-wild-notifier--timer it)))
|
||||
|
||||
(defun org-wild-notifier--check-events (events)
|
||||
(setq org-wild-notifier--process nil)
|
||||
(-each
|
||||
(->> events
|
||||
(-map 'org-wild-notifier--check-event)
|
||||
(-flatten)
|
||||
(-uniq))
|
||||
'org-wild-notifier--notify)
|
||||
(when (org-wild-notifier-current-time-is-day-wide-time)
|
||||
(-map 'org-wild-notifier--notify
|
||||
(org-wild-notifier-day-wide-notifications events)))
|
||||
(setq org-wild-notifier--last-check-time (current-time)))
|
||||
|
||||
;;;###autoload
|
||||
(defun org-wild-notifier-check ()
|
||||
"Parse agenda view and notify about upcoming events.
|
||||
|
||||
Do nothing if a check is already in progress in the background."
|
||||
(interactive)
|
||||
(unless (and org-wild-notifier--process
|
||||
(process-live-p org-wild-notifier--process))
|
||||
(setq org-wild-notifier--process
|
||||
(let ((default-directory user-emacs-directory))
|
||||
(async-start
|
||||
(org-wild-notifier--retrieve-events)
|
||||
'org-wild-notifier--check-events)))))
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode org-wild-notifier-mode
|
||||
"Toggle org notifications globally.
|
||||
When enabled parses your agenda once a minute and emits notifications
|
||||
if needed."
|
||||
:global
|
||||
:lighter "Org Wild Notifier"
|
||||
(if org-wild-notifier-mode
|
||||
(org-wild-notifier--start)
|
||||
(org-wild-notifier--stop)))
|
||||
|
||||
(provide 'org-wild-notifier)
|
||||
|
||||
;;; org-wild-notifier.el ends here
|
66
home/default/.doom.d/packages.el
Normal file
66
home/default/.doom.d/packages.el
Normal file
@ -0,0 +1,66 @@
|
||||
;; -*- no-byte-compile: t; -*-
|
||||
;;; $DOOMDIR/packages.el
|
||||
|
||||
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||
;; use 'M-x doom/reload'.
|
||||
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;; (package! some-package)
|
||||
|
||||
;; To install a package directly from a remote git repo, you must specify a
|
||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||
;; (package! another-package
|
||||
;; :recipe (:host github :repo "username/repo"))
|
||||
|
||||
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||
;; `:files' in the `:recipe':
|
||||
;; (package! this-package
|
||||
;; :recipe (:host github :repo "username/repo"
|
||||
;; :files ("some-file.el" "src/lisp/*.el")))
|
||||
|
||||
;; If you'd like to disable a package included with Doom, you can do so here
|
||||
;; with the `:disable' property:
|
||||
;; (package! builtin-package :disable t)
|
||||
|
||||
;; You can override the recipe of a built in package without having to specify
|
||||
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||
;; (package! builtin-package :recipe (:nonrecursive t))
|
||||
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||
|
||||
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||
;; This is required for some packages whose default branch isn't 'master' (which
|
||||
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||
;; (package! builtin-package :recipe (:branch "develop"))
|
||||
|
||||
;; Use `:pin' to specify a particular commit to install.
|
||||
;; (package! builtin-package :pin "1a2b3c4d5e")
|
||||
|
||||
|
||||
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||
;; (unpin! pinned-package)
|
||||
;; ...or multiple packages
|
||||
;; (unpin! pinned-package another-pinned-package)
|
||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||
;; (unpin! t)
|
||||
|
||||
(package! org-books)
|
||||
;(package! nov)
|
||||
;(package! org-modern) ;; try
|
||||
(package! org-wild-notifier
|
||||
:recipe (:local-repo "lisp/org-wild-notifier"))
|
||||
;(package! focus) ;; try
|
||||
;(package! dimmer) ;; try
|
||||
;(package! minions) ;; try
|
||||
;(package! mini-frame) ;; try
|
||||
(package! solaire-mode :disable t)
|
||||
;(package! simple-httpd)
|
||||
;(package! htmlize)
|
||||
;(package! esxml)
|
||||
;(package! webfeeder)
|
||||
(package! org-super-agenda)
|
125
home/default/.doom.d/themes/doom-tomorrow-night-b-theme.el
Normal file
125
home/default/.doom.d/themes/doom-tomorrow-night-b-theme.el
Normal file
@ -0,0 +1,125 @@
|
||||
;;; doom-tomorrow-night-b-theme.el --- One of the dark variants of Tomorrow -*- lexical-binding: t; no-byte-compile: t; -*-
|
||||
;;
|
||||
;; Added: May 14, 2017 (4c981f2cccf3)
|
||||
;; Author: Henrik Lissner <https://github.com/hlissner>
|
||||
;; Maintainer:
|
||||
;; Source: https://github.com/ChrisKempson/Tomorrow-Theme
|
||||
;;
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'doom-themes)
|
||||
|
||||
|
||||
;;
|
||||
;;; Variables
|
||||
|
||||
(defgroup doom-tomorrow-night-b-theme nil
|
||||
"Options for the `doom-tomorrow-night-b' theme."
|
||||
:group 'doom-themes)
|
||||
|
||||
(defcustom doom-tomorrow-night-b-padded-modeline doom-themes-padded-modeline
|
||||
"If non-nil, adds a 4px padding to the mode-line. Can be an integer to
|
||||
determine the exact padding."
|
||||
:group 'doom-tomorrow-night-b-theme
|
||||
:type '(choice integer boolean))
|
||||
|
||||
|
||||
;;
|
||||
;;; Theme definition
|
||||
|
||||
(def-doom-theme doom-tomorrow-night-b
|
||||
"A theme based off of Chris Kempson's Tomorrow Dark."
|
||||
|
||||
;; name gui 256 16
|
||||
;((bg '("#1d1f21" nil nil ))
|
||||
((bg '("#000000" nil nil ))
|
||||
;(bg-alt '("#161719" nil nil ))
|
||||
(bg-alt '("#000000" nil nil ))
|
||||
(base0 '("#0d0d0d" "black" "black" ))
|
||||
(base1 '("#1b1b1b" "#1b1b1b" ))
|
||||
(base2 '("#212122" "#1e1e1e" ))
|
||||
(base3 '("#292b2b" "#292929" "brightblack"))
|
||||
(base4 '("#3f4040" "#3f3f3f" "brightblack"))
|
||||
(base5 '("#5c5e5e" "#525252" "brightblack"))
|
||||
(base6 '("#757878" "#6b6b6b" "brightblack"))
|
||||
(base7 '("#969896" "#979797" "brightblack"))
|
||||
(base8 '("#ffffff" "#ffffff" "white" ))
|
||||
(fg '("#c5c8c6" "#c5c5c5" "white"))
|
||||
(fg-alt (doom-darken fg 0.4))
|
||||
|
||||
(grey '("#5a5b5a" "#5a5a5a" "brightblack"))
|
||||
(red '("#cc6666" "#cc6666" "red"))
|
||||
(orange '("#de935f" "#dd9955" "brightred"))
|
||||
(yellow '("#f0c674" "#f0c674" "yellow"))
|
||||
(green '("#b5bd68" "#b5bd68" "green"))
|
||||
(blue '("#81a2be" "#88aabb" "brightblue"))
|
||||
(dark-blue '("#41728e" "#41728e" "blue"))
|
||||
(teal blue) ; FIXME replace with real teal
|
||||
(magenta '("#c9b4cf" "#c9b4cf" "magenta"))
|
||||
(violet '("#b294bb" "#b294bb" "brightmagenta"))
|
||||
(cyan '("#8abeb7" "#8abeb7" "cyan"))
|
||||
(dark-cyan (doom-darken cyan 0.4))
|
||||
|
||||
;; face categories
|
||||
(highlight blue)
|
||||
(vertical-bar base0)
|
||||
(selection `(,(car (doom-lighten bg 0.1)) ,@(cdr base4)))
|
||||
(builtin blue)
|
||||
(comments grey)
|
||||
(doc-comments (doom-lighten grey 0.14))
|
||||
(constants orange)
|
||||
(functions blue)
|
||||
(keywords violet)
|
||||
(methods blue)
|
||||
(operators fg)
|
||||
(type yellow)
|
||||
(strings green)
|
||||
(variables red)
|
||||
(numbers orange)
|
||||
(region selection)
|
||||
(error red)
|
||||
(warning yellow)
|
||||
(success green)
|
||||
(vc-modified fg-alt)
|
||||
(vc-added green)
|
||||
(vc-deleted red)
|
||||
|
||||
;; custom categories
|
||||
(modeline-bg `(,(doom-darken (car bg-alt) 0.3) ,@(cdr base3)))
|
||||
(modeline-bg-alt `(,(car bg) ,@(cdr base1)))
|
||||
(modeline-fg base8)
|
||||
(modeline-fg-alt comments)
|
||||
(-modeline-pad
|
||||
(when doom-tomorrow-night-b-padded-modeline
|
||||
(if (integerp doom-tomorrow-night-b-padded-modeline)
|
||||
doom-tomorrow-night-b-padded-modeline
|
||||
4))))
|
||||
|
||||
;; --- faces ------------------------------
|
||||
(((line-number &override) :foreground base4)
|
||||
((line-number-current-line &override) :foreground blue :bold bold)
|
||||
(mode-line
|
||||
:background modeline-bg :foreground modeline-fg
|
||||
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg)))
|
||||
(mode-line-inactive
|
||||
:background modeline-bg-alt :foreground modeline-fg-alt
|
||||
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-alt)))
|
||||
|
||||
;;;; rainbow-delimiters
|
||||
(rainbow-delimiters-depth-1-face :foreground violet)
|
||||
(rainbow-delimiters-depth-2-face :foreground blue)
|
||||
(rainbow-delimiters-depth-3-face :foreground orange)
|
||||
(rainbow-delimiters-depth-4-face :foreground green)
|
||||
(rainbow-delimiters-depth-5-face :foreground magenta)
|
||||
(rainbow-delimiters-depth-6-face :foreground yellow)
|
||||
(rainbow-delimiters-depth-7-face :foreground teal)
|
||||
;;;; doom-modeline
|
||||
(doom-modeline-buffer-path :foreground violet :bold bold)
|
||||
(doom-modeline-buffer-major-mode :inherit 'doom-modeline-buffer-path))
|
||||
|
||||
;; --- variables --------------------------
|
||||
;; ()
|
||||
)
|
||||
|
||||
;;; doom-tomorrow-night-b-theme.el ends here
|
125
home/default/.doom.d/themes/doom-tomorrow-night-r-theme.el
Normal file
125
home/default/.doom.d/themes/doom-tomorrow-night-r-theme.el
Normal file
@ -0,0 +1,125 @@
|
||||
;;; doom-tomorrow-night-r-theme.el --- One of the dark variants of Tomorrow -*- lexical-binding: t; no-byte-compile: t; -*-
|
||||
;;
|
||||
;; Added: May 14, 2017 (4c981f2cccf3)
|
||||
;; Author: Henrik Lissner <https://github.com/hlissner>
|
||||
;; Maintainer:
|
||||
;; Source: https://github.com/ChrisKempson/Tomorrow-Theme
|
||||
;;
|
||||
;;; Commentary:
|
||||
;;; Code:
|
||||
|
||||
(require 'doom-themes)
|
||||
|
||||
|
||||
;;
|
||||
;;; Variables
|
||||
|
||||
(defgroup doom-tomorrow-night-r-theme nil
|
||||
"Options for the `doom-tomorrow-night-r' theme."
|
||||
:group 'doom-themes)
|
||||
|
||||
(defcustom doom-tomorrow-night-r-padded-modeline doom-themes-padded-modeline
|
||||
"If non-nil, adds a 4px padding to the mode-line. Can be an integer to
|
||||
determine the exact padding."
|
||||
:group 'doom-tomorrow-night-r-theme
|
||||
:type '(choice integer boolean))
|
||||
|
||||
|
||||
;;
|
||||
;;; Theme definition
|
||||
|
||||
(def-doom-theme doom-tomorrow-night-r
|
||||
"A theme based off of Chris Kempson's Tomorrow Dark."
|
||||
|
||||
;; name gui 256 16
|
||||
;((bg '("#1d1f21" nil nil ))
|
||||
((bg '("#161616" nil nil ))
|
||||
;(bg-alt '("#161719" nil nil ))
|
||||
(bg-alt '("#161616" nil nil ))
|
||||
(base0 '("#0d0d0d" "black" "black" ))
|
||||
(base1 '("#1b1b1b" "#1b1b1b" ))
|
||||
(base2 '("#212122" "#1e1e1e" ))
|
||||
(base3 '("#292b2b" "#292929" "brightblack"))
|
||||
(base4 '("#3f4040" "#3f3f3f" "brightblack"))
|
||||
(base5 '("#5c5e5e" "#525252" "brightblack"))
|
||||
(base6 '("#757878" "#6b6b6b" "brightblack"))
|
||||
(base7 '("#969896" "#979797" "brightblack"))
|
||||
(base8 '("#ffffff" "#ffffff" "white" ))
|
||||
(fg '("#c5c8c6" "#c5c5c5" "white"))
|
||||
(fg-alt (doom-darken fg 0.4))
|
||||
|
||||
(grey '("#5a5b5a" "#5a5a5a" "brightblack"))
|
||||
(red '("#cc6666" "#cc6666" "red"))
|
||||
(orange '("#de935f" "#dd9955" "brightred"))
|
||||
(yellow '("#f0c674" "#f0c674" "yellow"))
|
||||
(green '("#b5bd68" "#b5bd68" "green"))
|
||||
(blue '("#81a2be" "#88aabb" "brightblue"))
|
||||
(dark-blue '("#41728e" "#41728e" "blue"))
|
||||
(teal blue) ; FIXME replace with real teal
|
||||
(magenta '("#c9b4cf" "#c9b4cf" "magenta"))
|
||||
(violet '("#b294bb" "#b294bb" "brightmagenta"))
|
||||
(cyan '("#8abeb7" "#8abeb7" "cyan"))
|
||||
(dark-cyan (doom-darken cyan 0.4))
|
||||
|
||||
;; face categories
|
||||
(highlight blue)
|
||||
(vertical-bar base0)
|
||||
(selection `(,(car (doom-lighten bg 0.1)) ,@(cdr base4)))
|
||||
(builtin blue)
|
||||
(comments grey)
|
||||
(doc-comments (doom-lighten grey 0.14))
|
||||
(constants orange)
|
||||
(functions blue)
|
||||
(keywords violet)
|
||||
(methods blue)
|
||||
(operators fg)
|
||||
(type yellow)
|
||||
(strings green)
|
||||
(variables red)
|
||||
(numbers orange)
|
||||
(region selection)
|
||||
(error red)
|
||||
(warning yellow)
|
||||
(success green)
|
||||
(vc-modified fg-alt)
|
||||
(vc-added green)
|
||||
(vc-deleted red)
|
||||
|
||||
;; custom categories
|
||||
(modeline-bg `(,(doom-darken (car bg-alt) 0.3) ,@(cdr base3)))
|
||||
(modeline-bg-alt `(,(car bg) ,@(cdr base1)))
|
||||
(modeline-fg base8)
|
||||
(modeline-fg-alt comments)
|
||||
(-modeline-pad
|
||||
(when doom-tomorrow-night-r-padded-modeline
|
||||
(if (integerp doom-tomorrow-night-r-padded-modeline)
|
||||
doom-tomorrow-night-r-padded-modeline
|
||||
4))))
|
||||
|
||||
;; --- faces ------------------------------
|
||||
(((line-number &override) :foreground base4)
|
||||
((line-number-current-line &override) :foreground blue :bold bold)
|
||||
(mode-line
|
||||
:background modeline-bg :foreground modeline-fg
|
||||
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg)))
|
||||
(mode-line-inactive
|
||||
:background modeline-bg-alt :foreground modeline-fg-alt
|
||||
:box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-alt)))
|
||||
|
||||
;;;; rainbow-delimiters
|
||||
(rainbow-delimiters-depth-1-face :foreground violet)
|
||||
(rainbow-delimiters-depth-2-face :foreground blue)
|
||||
(rainbow-delimiters-depth-3-face :foreground orange)
|
||||
(rainbow-delimiters-depth-4-face :foreground green)
|
||||
(rainbow-delimiters-depth-5-face :foreground magenta)
|
||||
(rainbow-delimiters-depth-6-face :foreground yellow)
|
||||
(rainbow-delimiters-depth-7-face :foreground teal)
|
||||
;;;; doom-modeline
|
||||
(doom-modeline-buffer-path :foreground violet :bold bold)
|
||||
(doom-modeline-buffer-major-mode :inherit 'doom-modeline-buffer-path))
|
||||
|
||||
;; --- variables --------------------------
|
||||
;; ()
|
||||
)
|
||||
|
||||
;;; doom-tomorrow-night-r-theme.el ends here
|
4
home/default/.local/bin/boom
Executable file
4
home/default/.local/bin/boom
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
notify-send 'boom' 'boom.mp3'
|
||||
mpg123 $HOME/resources/sounds/alerts/boom.mp3
|
@ -7,8 +7,8 @@ bgaloc="${XDG_DATA_HOME:-$HOME/.local/share}/bga"
|
||||
|
||||
trueloc="$(readlink -f "$1")" &&
|
||||
case "$(file --mime-type -b "$trueloc")" in
|
||||
video/* ) ifinstalled mpvpaper && ln -sf "$trueloc" "$bgaloc" && notify-send -i "$bgaloc" "Changing wallpaper..." ;;
|
||||
image/gif ) ifinstalled mpvpaper && ln -sf "$trueloc" "$bgaloc" && ln -sf "$trueloc" "$bgloc" && notify-send -i "$bgaloc" "Changing wallpaper..." ;;
|
||||
video/* ) ln -sf "$trueloc" "$bgaloc" && notify-send -i "$bgaloc" "Changing wallpaper..." ;;
|
||||
image/gif ) ln -sf "$trueloc" "$bgaloc" && ln -sf "$trueloc" "$bgloc" && notify-send -i "$bgaloc" "Changing wallpaper..." ;;
|
||||
image/* ) ln -sf "$trueloc" "$bgloc" && notify-send -i "$bgloc" "Changing wallpaper..."
|
||||
if [[ -f "$bgaloc" ]]; then
|
||||
rm $bgaloc
|
||||
|
11
home/default/.local/bin/convert-paste-png.sh
Executable file
11
home/default/.local/bin/convert-paste-png.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
wl-paste -t image > /tmp/convert-paste-png.data
|
||||
#convert /tmp/convert-paste-png.data -format png "$1"
|
||||
|
||||
case "$(file --dereference --brief --mime-type -- "/tmp/convert-paste-png.data")" in
|
||||
image/jpg|image/jpeg) convert /tmp/convert-paste-png.data -format png "$1" ;;
|
||||
image/png) wl-paste -t image/png > "$1" ;;
|
||||
esac
|
||||
|
||||
rm /tmp/convert-paste-png.data
|
51
home/default/.local/bin/dark.sh
Executable file
51
home/default/.local/bin/dark.sh
Executable file
@ -0,0 +1,51 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -z "$1" ] && printf "Usage: screenshot.sh [output|active|window] \n" && exit 0
|
||||
|
||||
dark() {
|
||||
cp -f ~/.config/swaync/style.mocha.css ~/.config/swaync/style.css
|
||||
setsid -f killall swaync >/dev/null 2>&1
|
||||
sleep 2 && setsid -f swaync >/dev/null 2>&1
|
||||
echo 'swaync set'
|
||||
|
||||
# TODO
|
||||
cat ~/.config/foot/foot.ini >> ~/.config/foot/foot.ini
|
||||
echo 'foot terminal set, reopen to change'
|
||||
|
||||
# TODO emacs
|
||||
|
||||
# TODO gtk
|
||||
|
||||
# TODO gtk flatpak
|
||||
sudo flatpak override --env GTK_THEME=Materia-dark
|
||||
# TODO browser
|
||||
}
|
||||
|
||||
light() {
|
||||
cp -f ~/.config/swaync/style.latte.css ~/.config/swaync/style.css
|
||||
setsid -f killall swaync >/dev/null 2>&1
|
||||
sleep 2 && setsid -f swaync >/dev/null 2>&1
|
||||
echo 'swaync set'
|
||||
|
||||
# TODO
|
||||
cat ~/.config/foot/foot.ini >> ~/.config/foot/foot.ini
|
||||
echo 'foot terminal set, reopen to change'
|
||||
|
||||
# TODO emacs
|
||||
|
||||
# TODO gtk
|
||||
# TODO gtk flatpak
|
||||
sudo flatpak override --env GTK_THEME=Materia
|
||||
# TODO browser
|
||||
}
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
case "$1" in
|
||||
dark) dark
|
||||
*)
|
||||
echo $@ is not an argument
|
||||
break
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
setsid -f emacsclient --create-frame --alternate-editor='emacs' $@ >/dev/null 2>&1
|
@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
emacsclient -nw -c --alternate-editor='emacs -nw' $@
|
@ -1,10 +1,20 @@
|
||||
#!/bin/zsh
|
||||
if [[ -z "$1" ]]; then
|
||||
if [[ -z "$1" ]] && [[ "$WINDOW_MANAGER" == "river" ]] ; then
|
||||
swayidle -w \
|
||||
timeout 310 'swaylock' \
|
||||
timeout 300 'wlopm --off "*"' resume 'wlopm --on "*"' \
|
||||
before-sleep "swaylock"
|
||||
fi
|
||||
|
||||
if [[ -z "$1" ]] && [[ "$WINDOW_MANAGER" == "sway" ]] ; then
|
||||
swayidle -w \
|
||||
timeout 310 'swaylock' \
|
||||
timeout 300 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
|
||||
before-sleep "swaylock"
|
||||
fi
|
||||
|
||||
#timeout 300 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
|
||||
|
||||
if [[ $1 == "-k" ]]; then
|
||||
killall swayidle
|
||||
exit 0
|
||||
|
@ -15,12 +15,14 @@ fi
|
||||
case "$url" in
|
||||
*mkv|*webm|*mp4|*hooktube.com*|*bitchute.com*|*videos.lukesmith.xyz*|*odysee.com*)
|
||||
setsid -f mpv -quiet "$url" >/dev/null 2>&1 ;;
|
||||
*youtube.com/watch*|*youtube.com/playlist*|*youtube.com/shorts*|*youtu.be*)
|
||||
*youtube.com/watch*|*youtube.com/playlist*|*youtube.com/shorts*|*youtu.be*|*youtube-nocookie.com/embed*)
|
||||
setsid -f flatpak run io.freetubeapp.FreeTube "$url" >/dev/null 2>&1 ;;
|
||||
*png|*jpg|*jpe|*jpeg|*gif)
|
||||
curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||
*png|*jpg|*jpe|*jpeg|*gif|*webp|*PNG|*JPG|*JPE|*JPEG|*GIF|*WEBP)
|
||||
curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && nsxiv -a "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||
*pdf|*cbz|*cbr)
|
||||
curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||
*epub)
|
||||
curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && com.github.johnfactotum.Foliate "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||
*mp3|*flac|*opus|*mp3?source*)
|
||||
qndl "$url" 'curl -LO' >/dev/null 2>&1 ;;
|
||||
*)
|
||||
|
@ -6,7 +6,9 @@ directory="$HOME/Music"
|
||||
case "$file" in
|
||||
*youtube.com*|*youtu.be*|*bandcamp.com*|*soundcloud.com*)
|
||||
notify-send "Downloading" "$file"
|
||||
cd $directory && yt-dlp --embed-metadata --embed-thumbnail -xc -f bestaudio/best --restrict-filenames "$file" && notify-send "Music added!" "$file is now saved to the music directory."
|
||||
cd $directory && yt-dlp --embed-metadata --embed-thumbnail -xc -f 'bestaudio[ext=m4a]' "$file" && notify-send "Music added!" "$file is now saved to the music directory."
|
||||
# --restrict-filenames
|
||||
# -f bestaudio/best
|
||||
;;
|
||||
*mp3|*flac|*opus|*mp3?source*)
|
||||
notify-send "⏳ Queuing $file..."
|
||||
|
9
home/default/.local/bin/peertubetorrent
Executable file
9
home/default/.local/bin/peertubetorrent
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
# torrent peertube videos, requires the transadd script
|
||||
# first argument is the video link, second is the quality (360, 480 or 1080)
|
||||
# 13/07/20 - Arthur Bais
|
||||
|
||||
instance=$(echo "$1" | sed "s|/w.\+||")
|
||||
vidid=$(echo "$1" | sed "s|.\+/||")
|
||||
link=$(curl -s "$instance/api/v1/videos/$vidid" | grep -o "$instance/download/torrents/.\{37\}$2.torrent")
|
||||
transadd "$link"
|
4
home/default/.local/bin/pind
Executable file
4
home/default/.local/bin/pind
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
[ -z "$1" ] && echo 'usage: pind <url>' && exit 1
|
||||
read url < <(curl -Ls "$1" | pup 'img attr{src}')
|
||||
curl -LO --no-clobber $url && echo "$url downloaded"
|
6
home/default/.local/bin/record-screen
Executable file
6
home/default/.local/bin/record-screen
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
# record video
|
||||
dir=~/Videos/recordings
|
||||
(cd $dir && wf-recorder -g "$(slurp)" --audio --file=$(date +%Y-%m-%d_%H-%m-%s).mp4)
|
||||
xdg-open $dir
|
6
home/default/.local/bin/record-screen-no-audio
Executable file
6
home/default/.local/bin/record-screen-no-audio
Executable file
@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
# record video
|
||||
dir=~/Videos/recordings
|
||||
(cd $dir && wf-recorder -g "$(slurp)" --file="$(date +%Y-%m-%d_%H-%m-%s).mp4")
|
||||
xdg-open $dir
|
@ -1,18 +1,119 @@
|
||||
#!/bin/sh
|
||||
# derived from yt-id (https://codeberg.org/Denshi/Scripts) and rssadd (https://github.com/lukesmithxyz/voidrice)
|
||||
# requirements: `pup` for parsing html
|
||||
|
||||
if echo "$1" | grep -q "https*://\S\+\.[A-Za-z]\+\S*" ; then
|
||||
url="$1"
|
||||
else
|
||||
url="$(grep -Eom1 '<[^>]+(rel="self"|application/[a-z]+\+xml)[^>]+>' "$1" |
|
||||
grep -o "https?://[^\" ]")"
|
||||
## kill early
|
||||
nothing() {
|
||||
[ -z "$1" ] && printf "Usage: rssadd [RSSURL | YTURL | @Username | XMLFILE | --file FILE | --scan WEBPAGE ]\n" && exit 0
|
||||
}
|
||||
nothing "$1"
|
||||
|
||||
echo "$url" | grep -q "https*://\S\+\.[A-Za-z]\+\S*" ||
|
||||
notify-send "That doesn't look like a full URL." && exit 1
|
||||
fi
|
||||
say() {
|
||||
printf "$1 \e[1;34m$2\e[0m\n"
|
||||
}
|
||||
|
||||
add_rss() {
|
||||
RSSFILE="${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls"
|
||||
if awk '{print $1}' "$RSSFILE" | grep "^$url$" >/dev/null; then
|
||||
notify-send "You already have this RSS feed."
|
||||
say "You already have this RSS feed." "$url"
|
||||
else
|
||||
echo "$url" >> "$RSSFILE" && notify-send "RSS feed added."
|
||||
echo "$url" >> "$RSSFILE" && say "RSS feed added." "$url"
|
||||
fi
|
||||
}
|
||||
|
||||
get_yt_rss() {
|
||||
BASEURL="https://www.youtube.com/feeds/videos.xml?channel_id="
|
||||
# invidious
|
||||
# BASEURL="https://vid.puffyan.us/feed/channel/"
|
||||
# BASEURL="https://invidious.snopyta.org/feed/channel/"
|
||||
# BASEURL="https://invidious.kavin.rocks/feed/channel/"
|
||||
# BASEURL="https://inv.riverside.rocks/feed/channel/"
|
||||
URL=$url
|
||||
curl -Ls "$URL" > /dev/null || URL="https://www.youtube.com/$URL"
|
||||
# Actually getting the ID
|
||||
ID="$(curl -Ls "$URL" | grep -o -P '.{0,0}channel_id.{0,25}' | sed '$!d' | cut -c 12-35)"
|
||||
[ -z "$ID" ] && say "Channel not found." && exit 1
|
||||
#printf "%s\n" $BASEURL$ID
|
||||
url="$BASEURL$ID"
|
||||
}
|
||||
|
||||
# WIP
|
||||
find_rss() {
|
||||
echo "$url" | grep -Pq "(http|https)://" || url="https://$url"
|
||||
address="$(echo "$url" | sed 's/\/$//')"
|
||||
#domain="$(echo "$url" | grep -Po '(http://|https://)(?:[^./]+[.])*[^\./]*\.[^\./]*(?=/)')"
|
||||
domain="$(echo "$url" | grep -Po '(http://|https://)(?:[^./]+[.])*[^\./]*\.[^\./]*')"
|
||||
read atom < <(curl -Ls "$url" | pup 'link[href][type*="atom+xml"] attr{href}')
|
||||
read rss < <(curl -Ls "$url" | pup 'link[href][type*="rss+xml"] attr{href}')
|
||||
[ -n "$atom" ] && url="$atom"
|
||||
[ -n "$rss" ] && url="$rss"
|
||||
[ -z "$atom" ] && [ -z "$rss" ] && say "RSS not found." "$url" && exit 1
|
||||
if echo "$url" | grep -q '^/' ; then
|
||||
location="$(echo "$url" | sed 's/^\///')"
|
||||
url="$domain/$location"
|
||||
fi
|
||||
echo "$url" | grep -Pq "(http|https)://" || url="$address/$url"
|
||||
}
|
||||
|
||||
# WIP
|
||||
find_fedi_rss() {
|
||||
echo "$handle" | grep "^@.*@*\.*" || say "not a handle" "$url" && exit 1
|
||||
|
||||
}
|
||||
|
||||
add_yt_rss() {
|
||||
get_yt_rss
|
||||
add_rss
|
||||
}
|
||||
|
||||
execute_command() {
|
||||
if echo "$url" | grep -q "^https://www.youtube.com/feeds/videos.xml?*" ; then
|
||||
add_rss
|
||||
elif echo "$url" | grep -q "^https://www.youtube.com/*" ; then
|
||||
add_yt_rss
|
||||
elif echo "$url" | grep -q "https*://\S\+\.[A-Za-z]\+\S*" ; then
|
||||
add_rss
|
||||
elif echo "$url" | grep -q "^@.*" ; then
|
||||
add_yt_rss
|
||||
else
|
||||
url="$(grep -sEom1 '<[^>]+(rel="self"|application/[a-z]+\+xml)[^>]+>' "$url" | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*")"
|
||||
echo "$url" | grep -Eq "(http|https)://[a-zA-Z0-9./?=_%:-]*" && add_rss ||
|
||||
say "That doesn't look like a full URL." "$url"
|
||||
#TODO be more verbose
|
||||
fi
|
||||
}
|
||||
|
||||
execute_loop() {
|
||||
url="$1" && execute_command
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
printf "Usage: rssadd [RSSURL | YTURL | @Username | XMLFILE | --file FILE | --scan WEBPAGE ]
|
||||
|
||||
USAGE
|
||||
-s, --scan
|
||||
scan webpages for rss or atom links.
|
||||
format can be a domain name or http/https links
|
||||
--file
|
||||
input from file seperated with lines\n"
|
||||
exit 0
|
||||
;;
|
||||
-s|--scan)
|
||||
url="$2"
|
||||
nothing "$url"
|
||||
find_rss
|
||||
execute_command
|
||||
exit 0
|
||||
;;
|
||||
--file)
|
||||
nothing "$2"
|
||||
while IFS= read -r line; do
|
||||
execute_loop "$line"
|
||||
done < "$2"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
url="$1"
|
||||
execute_command
|
||||
|
35
home/default/.local/bin/screenshot.sh
Executable file
35
home/default/.local/bin/screenshot.sh
Executable file
@ -0,0 +1,35 @@
|
||||
#!/bin/sh
|
||||
[ -z "$1" ] && printf "Usage: screenshot.sh [output|active|window] \n" && exit 0
|
||||
|
||||
file=$HOME/Pictures/Screenshots/$(date +'%Y-%m-%d_%H.%M.%S_%Z').png
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
case "$1" in
|
||||
output) grimshot save output $file
|
||||
break
|
||||
;;
|
||||
active) grimshot save active $file
|
||||
break
|
||||
;;
|
||||
window) grimshot save window $file
|
||||
break
|
||||
;;
|
||||
screen) grimshot save screen $file
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo $@ is not an argument
|
||||
break
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ -N $file ]]; then
|
||||
echo "screenshot saved."
|
||||
notify-send "screenshot saved." -i $file
|
||||
update-recentf.py $file
|
||||
exit 0
|
||||
else
|
||||
echo "screenshot failed."
|
||||
exit 1
|
||||
fi
|
@ -1,43 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
bmdirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs"
|
||||
bmfiles="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files"
|
||||
|
||||
# Output locations. Unactivated progs should go to /dev/null.
|
||||
shell_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
|
||||
zsh_named_dirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
|
||||
lf_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcutrc"
|
||||
vim_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/nvim/shortcuts.vim"
|
||||
ranger_shortcuts="/dev/null"
|
||||
qute_shortcuts="/dev/null"
|
||||
fish_shortcuts="/dev/null"
|
||||
vifm_shortcuts="/dev/null"
|
||||
|
||||
# Remove, prepare files
|
||||
rm -f "$lf_shortcuts" "$ranger_shortcuts" "$qute_shortcuts" "$zsh_named_dirs" "$vim_shortcuts" 2>/dev/null
|
||||
printf "# vim: filetype=sh\\n" > "$fish_shortcuts"
|
||||
printf "# vim: filetype=sh\\nalias " > "$shell_shortcuts"
|
||||
printf "\" vim: filetype=vim\\n" > "$vifm_shortcuts"
|
||||
|
||||
# Format the `directories` file in the correct syntax and sent it to all three configs.
|
||||
eval "echo \"$(cat "$bmdirs")\"" | \
|
||||
awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
|
||||
printf(\"%s=\42cd %s && ls -a\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
|
||||
printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
|
||||
printf(\"abbr %s \42cd %s; and ls -a\42\n\",\$1,\$2) >> \"$fish_shortcuts\" ;
|
||||
printf(\"map g%s :cd %s<CR>\nmap t%s <tab>:cd %s<CR><tab>\nmap M%s <tab>:cd %s<CR><tab>:mo<CR>\nmap Y%s <tab>:cd %s<CR><tab>:co<CR> \n\",\$1,\$2, \$1, \$2, \$1, \$2, \$1, \$2) >> \"$vifm_shortcuts\" ;
|
||||
printf(\"config.bind(';%s', \42set downloads.location.directory %s ;; hint links download\42) \n\",\$1,\$2) >> \"$qute_shortcuts\" ;
|
||||
printf(\"map g%s cd %s\nmap t%s tab_new %s\nmap m%s shell mv -v %%s %s\nmap Y%s shell cp -rv %%s %s \n\",\$1,\$2,\$1,\$2, \$1, \$2, \$1, \$2) >> \"$ranger_shortcuts\" ;
|
||||
printf(\"map C%s cd \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" ;
|
||||
printf(\"cmap ;%s %s\n\",\$1,\$2) >> \"$vim_shortcuts\" }"
|
||||
|
||||
# Format the `files` file in the correct syntax and sent it to both configs.
|
||||
eval "echo \"$(cat "$bmfiles")\"" | \
|
||||
awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
|
||||
printf(\"%s=\42\$EDITOR %s\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
|
||||
printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
|
||||
printf(\"abbr %s \42\$EDITOR %s\42 \n\",\$1,\$2) >> \"$fish_shortcuts\" ;
|
||||
printf(\"map %s :e %s<CR> \n\",\$1,\$2) >> \"$vifm_shortcuts\" ;
|
||||
printf(\"map %s shell \$EDITOR %s \n\",\$1,\$2) >> \"$ranger_shortcuts\" ;
|
||||
printf(\"map E%s \$\$EDITOR \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" ;
|
||||
printf(\"cmap ;%s %s\n\",\$1,\$2) >> \"$vim_shortcuts\" }"
|
293
home/default/.local/bin/sway-select-window
Executable file
293
home/default/.local/bin/sway-select-window
Executable file
@ -0,0 +1,293 @@
|
||||
#!/usr/bin/env bash
|
||||
# https://gitlab.com/wef/dotfiles/-/blob/master/bin/sway-select-window
|
||||
# shellcheck disable=SC2034
|
||||
TIME_STAMP="20230129.084152"
|
||||
|
||||
# Copyright (C) 2019-2023 Bob Hepple <bob dot hepple at gmail dot com>
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or (at
|
||||
# your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# CUSTOMISE HERE IF YOU'RE NOT GETTING ALL YOUR ICONS:
|
||||
|
||||
# This array contains my most commonly used apps on f34, cached here
|
||||
# for speed. If they don't work for you, you can either just remove
|
||||
# these entries and rely on on-the-fly lookup of icons (which may be
|
||||
# slow). Or, for speedier operation, you can:
|
||||
|
||||
# 1. get all your common apps running
|
||||
# 2. remove the entries in the array
|
||||
# 3. run the script from the CLI
|
||||
# 4. copy-paste the list of "[app]=icon" lines into the array
|
||||
|
||||
# Also, if all else fails, you can hardcode your app here:
|
||||
declare -A icons=(
|
||||
[floating-kitty]=/usr/share/icons/hicolor/256x256/apps/kitty.png
|
||||
[kitty]=/usr/share/icons/hicolor/256x256/apps/kitty.png
|
||||
[foot]=/usr/share/icons/hicolor/48x48/apps/foot.png
|
||||
[emacs]=/usr/share/icons/breeze/apps/48/emacs.svg
|
||||
[firefox]=/usr/share/icons/hicolor/48x48/apps/firefox.png
|
||||
[mythfrontend]=/usr/share/pixmaps/mythfrontend.png
|
||||
[kitty]=/usr/share/icons/hicolor/256x256/apps/kitty.png
|
||||
[Gdcalc]=/usr/share/pixmaps/HP-16C-48.xpm
|
||||
[pavucontrol]=/usr/share/icons/gnome/48x48/apps/multimedia-volume-control.png
|
||||
[pulseeffects]=/usr/share/icons/hicolor/scalable/apps/pulseeffects.svg
|
||||
[blueman-manager]=/usr/share/icons/hicolor/scalable/apps/blueman.svg
|
||||
[gnome-system-monitor]=/usr/share/icons/hicolor/scalable/apps/org.gnome.SystemMonitor.svg
|
||||
[gnome-disks]=/usr/share/icons/hicolor/scalable/apps/org.gnome.DiskUtility.svg
|
||||
[org.gnome.Weather]=/usr/share/icons/hicolor/scalable/apps/org.gnome.Weather.svg
|
||||
[xfce4-appfinder]=/usr/share/icons/hicolor/scalable/apps/org.xfce.appfinder.svg
|
||||
[LibreWolf]=/var/lib/flatpak/exports/share/icons/hicolor/128x128/apps/io.gitlab.librewolf-community.png
|
||||
[firefox]=/var/lib/flatpak/exports/share/icons/hicolor/128x128/apps/org.mozilla.firefox.png
|
||||
)
|
||||
|
||||
KEYBOARD_DEVICE="/dev/input/event4"
|
||||
verbose=""
|
||||
|
||||
PROG=$( basename "$0" )
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
echo "Usage: $PROG"
|
||||
echo
|
||||
echo "show running programs and select one to display (uses wofi)."
|
||||
|
||||
echo "If evtest(1) is installed and sudo is available then you can press"
|
||||
echo "Shift-Enter to move the window here rather than move to"
|
||||
echo "the windows workspace. You may need to change KEYBOARD_DEVICE above."
|
||||
|
||||
exit 0
|
||||
;;
|
||||
-v|--verbose)
|
||||
verbose="set"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
|
||||
jq_get_windows='
|
||||
# descend to workspace or scratchpad
|
||||
.nodes[].nodes[]
|
||||
# save workspace name as .w
|
||||
| {"w": .name} + (
|
||||
if (.nodes|length) > 0 then # workspace
|
||||
[recurse(.nodes[])]
|
||||
else # scratchpad
|
||||
[]
|
||||
end
|
||||
+ .floating_nodes
|
||||
| .[]
|
||||
# select nodes with no children (windows)
|
||||
| select(.nodes==[])
|
||||
)'
|
||||
|
||||
jq_windows_to_tsv='
|
||||
[
|
||||
(.id | tostring),
|
||||
# remove markup and index from workspace name, replace scratch with "[S]"
|
||||
(.w | gsub("<[^>]*>|:$"; "") | sub("__i3_scratch"; "[S]")),
|
||||
# get app name (or window class if xwayland)
|
||||
(.app_id // .window_properties.class),
|
||||
(.name),
|
||||
(.pid)
|
||||
]
|
||||
| @tsv'
|
||||
|
||||
get_fs_win_in_ws() {
|
||||
id="${1:?}"
|
||||
|
||||
swaymsg -t get_tree |
|
||||
jq -e -r --argjson id "$id" "
|
||||
[ $jq_get_windows ]
|
||||
| (.[]|select(.id == \$id)) as \$selected_workspace
|
||||
| .[]
|
||||
| select( .w == \$selected_workspace.w and .fullscreen_mode == 1 )
|
||||
| $jq_windows_to_tsv
|
||||
"
|
||||
}
|
||||
|
||||
get_hardcoded_icon() {
|
||||
icon="${icons[$1]}"
|
||||
echo "$icon"
|
||||
}
|
||||
|
||||
get_desktop() {
|
||||
app="$1"
|
||||
p="/usr/share/applications"
|
||||
|
||||
# fast and easy cases first:
|
||||
for prefix in "" org.kde. org.gnome. org.freedesktop.; do
|
||||
d="$p/$prefix$app.desktop"
|
||||
[[ -r "$d" ]] && echo "$d" && return
|
||||
done
|
||||
|
||||
# maybe lowercase
|
||||
for prefix in "" org.kde. org.gnome. org.freedesktop.; do
|
||||
d="$p/$prefix${app,,}.desktop"
|
||||
[[ -r "$d" ]] && echo "$d" && return
|
||||
done
|
||||
|
||||
# this is fairly reliable but slow:
|
||||
# look for a .desktop file with Exec=$app eg
|
||||
# gnome-disks (but exclude gnome-disk-image-writer.desktop)
|
||||
# gnome-font-viewer
|
||||
GREP='egrep -r'
|
||||
type rg &>/dev/null && GREP=rg
|
||||
d=$( $GREP -il "^exec=$app( %u)*[[:space:]]*$" $p | head -n 1)
|
||||
[[ -r "$d" ]] && echo "$d" && return
|
||||
|
||||
# desperation - weird apps like com.github.wwmm.pulseeffects.desktop!!
|
||||
# shellcheck disable=SC2012
|
||||
d=$( ls "$p/"*".$app.desktop" 2>/dev/null | head -n 1 )
|
||||
[[ -r "$d" ]] && echo "$d" && return
|
||||
}
|
||||
|
||||
get_icon() {
|
||||
icon_locations=(
|
||||
icons/hicolor/scalable/apps
|
||||
icons/hicolor/48x48/apps
|
||||
icons/hicolor/128x128/apps
|
||||
icons/hicolor/256x256/apps
|
||||
icons/gnome/48x48/apps
|
||||
icons/gnome/48x48/devices
|
||||
pixmaps
|
||||
)
|
||||
|
||||
app="$1"
|
||||
|
||||
icon=$( get_hardcoded_icon "$app_name" )
|
||||
[[ "$icon" && -r "$icon" ]] && echo "$icon" && return
|
||||
|
||||
# let's go poke in the .desktop files:
|
||||
icon_name=""
|
||||
dt=$( get_desktop "$app" )
|
||||
|
||||
# sometimes we get the 'class' rather than the exe - so try this:
|
||||
[[ "$dt" ]] || {
|
||||
app=$( tr '\0' '\n' < "/proc/$pid/cmdline" | head -n 1 )
|
||||
dt=$( get_desktop "$( basename "$app" )" )
|
||||
}
|
||||
|
||||
[[ "$dt" ]] && {
|
||||
icon_name=$( awk -v IGNORECASE="set" -F"=" '/^icon/ {print $2}' "$dt" )
|
||||
[[ "$icon_name" ]] && {
|
||||
for d in "${icon_locations[@]}"; do
|
||||
for s in .svg .png ""; do
|
||||
icon=/usr/share/$d/$icon_name$s
|
||||
[[ -r $icon ]] && echo "$icon" && return
|
||||
done
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
# desperation street:
|
||||
icon=$( find /usr/share/icons /usr/share/pixmaps | grep -E -i "/$app.(png|svg)" | head -n 1 )
|
||||
[[ "$icon" && -r "$icon" ]] && echo "$icon" && return
|
||||
|
||||
# failed:
|
||||
#echo "/usr/share/icons/Adwaita/32x32/status/image-missing-symbolic.symbolic.png"
|
||||
echo "$HOME/.local/share/icons/img-missing-sym.png"
|
||||
}
|
||||
|
||||
focus_window() {
|
||||
id="${1}"
|
||||
ws_name="${2}"
|
||||
app_name="${3}"
|
||||
win_title="${4}"
|
||||
|
||||
[[ "$verbose" ]] && printf "focusing window (in workspace %s): [%s] (%s) \`%s\`\n" "$ws_name" "$id" "$app_name" "$win_title" >&2
|
||||
|
||||
# look for fullscreen among other windows in selected window's workspace
|
||||
if fs_win_tsv="$( get_fs_win_in_ws "$id" )" ; then
|
||||
read -r win_id ws_name app_name win_title <<<"$fs_win_tsv"
|
||||
if [ "$win_id" != "$id" ] ; then
|
||||
[[ "$verbose" ]] && printf 'found fullscreen window in target workspace (%s): [%s] (%s) "%s"\n' "$ws_name" "$win_id" "$app_name" "$win_title" >&2
|
||||
swaymsg "[con_id=$win_id] fullscreen disable"
|
||||
fi
|
||||
fi
|
||||
|
||||
swaymsg "[con_id=$id]" focus
|
||||
}
|
||||
|
||||
id_fmt='<span stretch="ultracondensed" size="xx-small">%s</span>'
|
||||
ws_fmt='<span size="small">%s</span>'
|
||||
app_fmt='<span weight="bold">%s</span>'
|
||||
title_fmt='<span style="italic">%s</span>'
|
||||
|
||||
#id_fmt='%s'
|
||||
#ws_fmt='%s'
|
||||
#app_fmt='%s'
|
||||
#title_fmt='%s'
|
||||
|
||||
# allow Alt+Tab etc to not be caught by sway:
|
||||
trap 'swaymsg "mode default"' EXIT
|
||||
swaymsg "mode passthrough"
|
||||
|
||||
swaymsg -t get_tree |
|
||||
# get list of windows as tab-separated columns
|
||||
jq -r "$jq_get_windows | $jq_windows_to_tsv" |
|
||||
# align columns w/ spaces (keep tab as separator)
|
||||
column -s $'\t' -o $'\t' -t |
|
||||
# pango format the window list
|
||||
while IFS=$'\t' read -r win_id ws_name app_name win_title pid; do
|
||||
shopt -s extglob
|
||||
app_name="${app_name%%*( )}"
|
||||
icon=$( get_icon "$app_name" "$pid" )
|
||||
[[ "$verbose" ]] && printf "[%s]=>%s\n" "$app_name" "$icon" >&2
|
||||
# shellcheck disable=SC2059
|
||||
# hide win_id for now
|
||||
#win_id=""
|
||||
# simplify ws_name instead of Scratch
|
||||
#(( ${#ws_name} > 8 )) && ws_name="${ws_name:0:1}"
|
||||
printf "img:$icon:text:${id_fmt}\t${ws_fmt}\t${app_fmt}\t${title_fmt}\n" \
|
||||
"$win_id" \
|
||||
"$ws_name" \
|
||||
"$app_name" \
|
||||
"$win_title"
|
||||
done |
|
||||
# sort by workspace name and then app_name:
|
||||
sort -k2 -k3 |
|
||||
# defeat the initial cache in order to preserve the order:
|
||||
wofi -m --cache-file=/dev/null --insensitive --allow-images --show dmenu --prompt='Focus a window' | {
|
||||
FS=$'\t' read -r win_id ws_name app_name win_title
|
||||
# printf "win_id='$win_id' ws_name='$ws_name' app_name='$app_name' win_title='$win_title'" >&2
|
||||
# use evtest (if installed) to detect the state of the left shift
|
||||
# key and if it's 'down' then move the window here rather than move
|
||||
# to the window's workspace. Should be safe if evtest or sudo are
|
||||
# not available.
|
||||
## i've disabled this
|
||||
type evtest && sudo evtest --query $KEYBOARD_DEVICE EV_KEY KEY_LEFTSHIFT
|
||||
SHIFT_STATE=$?
|
||||
if [[ "$win_id" ]]; then
|
||||
if (( SHIFT_STATE == 10 )); then
|
||||
# bring the window here
|
||||
swaymsg "[con_id=$win_id] move window to workspace current, focus"
|
||||
else
|
||||
focus_window "$win_id" "$ws_name" "$app_name" "$win_title"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
exit 0
|
||||
|
||||
# this is the example documented in 'man 7 wofi' but it doesn't understand the scratchpad:
|
||||
swaymsg -t get_tree |
|
||||
jq -r '.nodes[].nodes[] | if .nodes then [recurse(.nodes[])] else [] end + .floating_nodes | .[] | select(.nodes==[]) | ((.id | tostring) + " " + .name)' |
|
||||
wofi --show dmenu | {
|
||||
read -r id name
|
||||
swaymsg "[con_id=$id]" focus
|
||||
}
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# time-stamp-pattern: "4/TIME_STAMP=\"%:y%02m%02d.%02H%02M%02S\""
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# End:
|
@ -1,30 +1,48 @@
|
||||
#!/bin/sh
|
||||
|
||||
# A dmenu wrapper script for system functions.
|
||||
export WM=$XDG_CURRENT_DESKTOP
|
||||
#export WM=$XDG_CURRENT_DESKTOP
|
||||
if [ "$WINDOW_MANAGER" == "sway" ]; then WM="sway" ; fi
|
||||
if [ "$WINDOW_MANAGER" == "river" ]; then WM="river" ; fi
|
||||
case "$(readlink -f /sbin/init)" in
|
||||
*systemd*) ctl='systemctl' ;;
|
||||
*) ctl='loginctl' ;;
|
||||
esac
|
||||
|
||||
case "$(printf "🔒 lock\n🚪 leave $WM\n♻️ renew\n🐻 hibernate\n🔃 reboot\n🖥️ shutdown\n💤 sleep\n📺 display off\n set background\n start idle\n kill swayidle\n fcitx5\n kill fcitx5\n start emacs daemon\n kill emacs daemon" | dmenu -i -l 15 -p 'Action: ')" in
|
||||
#case "$(printf "🔒 lock\n🚪 leave $WM\n♻️ renew $WM\n🐻 hibernate\n🔃 reboot\n🖥️ shutdown\n💤 sleep\n📺 display off\n set background\n start idle\n kill swayidle\n fcitx5\n kill fcitx5\n start emacs daemon\n kill emacs daemon\n restart emacs daemon" | rofi -dmenu -i -l 16 -p 'action')" in
|
||||
case "$(printf "🔒 lock\n🚪 leave $WM\n♻️ renew $WM\n🐻 hibernate\n🔃 reboot\n🖥️ shutdown\n💤 sleep\n📺 display off\n set background\n start idle\n kill swayidle\n fcitx5\n kill fcitx5\n start emacs daemon\n kill emacs daemon\n restart emacs daemon\ntoggle sworkstyle" | wofi -L 17 --cache-file=/dev/null --show=dmenu -i -p 'action')" in
|
||||
'🔒 lock')
|
||||
setsid -f swaylock
|
||||
setsid -f sleep 2 && swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#'
|
||||
if [ "$WINDOW_MANAGER" == "river" ]; then setsid -f sleep 2 && swayidle -w timeout 1 'wlopm --off "*"' resume 'wlopm --on "*" && kill $#' ; fi
|
||||
if [ "$WINDOW_MANAGER" == "sway" ]; then setsid -f sleep 2 && swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#' ; fi
|
||||
;;
|
||||
"🚪 leave $WM")
|
||||
if [ "$WINDOW_MANAGER" == "sway" ]; then swaymsg exit ; fi
|
||||
if [ "$WINDOW_MANAGER" == "river" ]; then riverctl exit ; fi
|
||||
;;
|
||||
"♻️ renew $WM")
|
||||
if [ "$WINDOW_MANAGER" == "sway" ]; then swaymsg reload ; fi
|
||||
if [ "$WINDOW_MANAGER" == "river" ]; then $HOME/.config/river/init ; fi
|
||||
;;
|
||||
"🚪 leave $WM") swaymsg exit ;;
|
||||
"♻️ renew") swaymsg reload ;;
|
||||
'🐻 hibernate') $ctl hibernate -i ;;
|
||||
'💤 sleep') $ctl suspend -i ;;
|
||||
'🔃 reboot') $ctl reboot -i ;;
|
||||
'🖥️ shutdown') $ctl poweroff -i ;;
|
||||
'📺 display off') swayidle -w timeout 1 'wlopm --off "*"' resume 'wlopm --on "*" && kill $#' ;;
|
||||
#'📺 display off') swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#' ;;
|
||||
'📺 display off')
|
||||
if [ "$WINDOW_MANAGER" == "river" ]; then setsid -f sleep 2 && swayidle -w timeout 1 'wlopm --off "*"' resume 'wlopm --on "*" && kill $#' ; fi
|
||||
if [ "$WINDOW_MANAGER" == "sway" ]; then setsid -f sleep 2 && swayidle -w timeout 1 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on" && kill $#' ; fi
|
||||
;;
|
||||
' set background') change-background ;;
|
||||
' start idle') idle ;;
|
||||
' kill swayidle') killall swayidle ;;
|
||||
' start idle') killall swayidle && sleep 1; setsid -f idle && notify-send 'idle started.';;
|
||||
' kill swayidle') killall swayidle && notify-send 'idle killed.';;
|
||||
' fcitx5') fcitx5 ;;
|
||||
' kill fcitx5') killall fcitx5 ;;
|
||||
#' start emacs daemon') emacs --daemon && emacsclient -c ;;
|
||||
#' kill emacs daemon') emacsclient -e '(kill-emacs)' ;;
|
||||
#' restart emacs daemon') emacsclient -e '(kill-emacs)' ; emacs --daemon && emacsclient -c ;;
|
||||
' start emacs daemon') emacs --daemon && notify-send 'emacs daemon started' ;;
|
||||
' kill emacs daemon') killall emacs && notify-send 'emacs daemon killed' ;;
|
||||
' kill emacs daemon') emacsclient -e '(kill-emacs)' && notify-send 'emacs daemon killed' ;;
|
||||
' restart emacs daemon') emacsclient -e '(kill-emacs)' && notify-send 'emacs daemon killed' ; emacs --daemon && notify-send 'emacs daemon started' ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
|
2
home/default/.local/bin/timer
Executable file
2
home/default/.local/bin/timer
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
termdown $@ && mpv ~/resources/sounds/alerts/codec-mgs-classic-woalert.opus >/dev/null 2>&1
|
2
home/default/.local/bin/timer-loop
Executable file
2
home/default/.local/bin/timer-loop
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
termdown $@ && mpv --loop ~/resources/sounds/alerts/codec-mgs-classic-woalert.opus >/dev/null 2>&1
|
8
home/default/.local/bin/transadd
Executable file
8
home/default/.local/bin/transadd
Executable file
@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Mimeapp script for adding torrent to deluge, but will also start the daemon first if not running.
|
||||
|
||||
pgrep deluged >/dev/null || (deluged && notify-send "Starting deluge daemon...")
|
||||
|
||||
# BUG will always return 1 if under v2.1.2, see https://dev.deluge-torrent.org/ticket/3582#ticket
|
||||
if deluge-console add "$@" ; then notify-send "🔽 Torrent added." ; else notify-send "🔽 failed to add, maybe it exists?" ; fi
|
13
home/default/.local/bin/update-recentf.py
Executable file
13
home/default/.local/bin/update-recentf.py
Executable file
@ -0,0 +1,13 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import gi, sys
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk, Gio, GLib
|
||||
|
||||
rec_mgr = Gtk.RecentManager.get_default()
|
||||
|
||||
for arg in sys.argv[1:]:
|
||||
rec_mgr.add_item(Gio.File.new_for_path(arg).get_uri())
|
||||
|
||||
GLib.idle_add(Gtk.main_quit)
|
||||
Gtk.main()
|
4
home/default/.local/share/applications/catclock.desktop
Normal file
4
home/default/.local/share/applications/catclock.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Cat Clock
|
||||
Exec=/home/default/.local/uxn/uxnemu /home/default/.local/uxn/catclock.rom
|
13
home/default/.local/share/applications/epub.desktop
Normal file
13
home/default/.local/share/applications/epub.desktop
Normal file
@ -0,0 +1,13 @@
|
||||
[Desktop Entry]
|
||||
Name=EPUB Reader
|
||||
GenericName=eBook Viewer
|
||||
Comment=View eBooks
|
||||
Categories=Office;Viewer;
|
||||
Exec=com.github.johnfactotum.Foliate %U
|
||||
Icon=com.github.johnfactotum.Foliate
|
||||
Terminal=false
|
||||
Type=Application
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=Library
|
||||
Exec=com.github.johnfactotum.Foliate --library
|
4
home/default/.local/share/applications/file.desktop
Normal file
4
home/default/.local/share/applications/file.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=File Manager
|
||||
Exec=/usr/bin/foot -e lf %u
|
4
home/default/.local/share/applications/img.desktop
Normal file
4
home/default/.local/share/applications/img.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Image viewer
|
||||
Exec=/usr/bin/nsxiv -a %f
|
4
home/default/.local/share/applications/left.desktop
Normal file
4
home/default/.local/share/applications/left.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Left editor
|
||||
Exec=/home/default/.local/uxn/uxnemu /home/default/.local/uxn/left.rom
|
5
home/default/.local/share/applications/mail.desktop
Normal file
5
home/default/.local/share/applications/mail.desktop
Normal file
@ -0,0 +1,5 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Mail
|
||||
#Exec=/usr/bin/foot -e neomutt %u
|
||||
Exec=thunderbird-wayland --name thunderbird-wayland %u
|
4
home/default/.local/share/applications/pdf.desktop
Normal file
4
home/default/.local/share/applications/pdf.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=PDF reader
|
||||
Exec=/usr/bin/zathura %u
|
4
home/default/.local/share/applications/rss.desktop
Normal file
4
home/default/.local/share/applications/rss.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=RSS feed addition
|
||||
Exec=/usr/bin/env rssadd %U
|
4
home/default/.local/share/applications/syncplay.desktop
Normal file
4
home/default/.local/share/applications/syncplay.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Syncplay
|
||||
Exec=/home/default/.local/bin/syncplay
|
4
home/default/.local/share/applications/text.desktop
Normal file
4
home/default/.local/share/applications/text.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Text editor
|
||||
Exec=/usr/bin/foot -e nvim %u
|
5
home/default/.local/share/applications/torrent.desktop
Normal file
5
home/default/.local/share/applications/torrent.desktop
Normal file
@ -0,0 +1,5 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Torrent
|
||||
Exec=/usr/bin/env transadd %U
|
||||
#Exec=deluge-gtk %U
|
4
home/default/.local/share/applications/video.desktop
Normal file
4
home/default/.local/share/applications/video.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Video viewer
|
||||
Exec=/usr/bin/mpv -quiet %f
|
4
home/default/.local/share/applications/whatsapp.desktop
Normal file
4
home/default/.local/share/applications/whatsapp.desktop
Normal file
@ -0,0 +1,4 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Whatsapp
|
||||
Exec=io.gitlab.librewolf-community -P whatsapp --new-window https://web.whatsapp.com
|
BIN
home/default/.local/share/icons/img-missing-sym.png
Normal file
BIN
home/default/.local/share/icons/img-missing-sym.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 546 B |
BIN
home/default/.local/share/icons/img-missing-sym2.png
Normal file
BIN
home/default/.local/share/icons/img-missing-sym2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 546 B |
363
home/default/.local/share/kaomoji
Normal file
363
home/default/.local/share/kaomoji
Normal file
@ -0,0 +1,363 @@
|
||||
^_^ Overjoyed (2)
|
||||
(╯°□°)╯︵ ┻━┻ Flipping Table (3)
|
||||
ლ(ಠ益ಠლ) But At What Cost
|
||||
(//_^) Emo (5)
|
||||
ʕ •ᴥ•ʔ Koala (3)
|
||||
(っ^‿^)っ Kirby (5)
|
||||
[¬º-°]¬ Zombie (2)
|
||||
(●∈∋●) Bird (5)
|
||||
ಠ_ಠ Disapproval
|
||||
T.T Sad (2)
|
||||
◤◡ᴥ◡◥ Dog (4)
|
||||
(∩`-´)⊃━☆゚.*・。゚ Wizard
|
||||
^-^ Happy (7)
|
||||
ᕦ(ò_óˇ)ᕤ Flexing (3)
|
||||
♪┏(・o・)┛♪ Dancing (8)
|
||||
( ͡° ͜ʖ ͡°) Smiling (2)
|
||||
/人◕ ‿‿ ◕人\ Kyubey
|
||||
༼ ༎ຶ ෴ ༎ຶ༽ Distraught
|
||||
ᒄ₍⁽ˆ⁰ˆ⁾₎ᒃ♪♬ Frosty the Snowman (2)
|
||||
(╯°□°)╯︵ ┻━┻ Flipping table (2)
|
||||
<(^oo^)> Pig (3)
|
||||
¯\_(ツ)_/¯ Shrugging (2)
|
||||
U=・ x ・=U Rabbit (2)
|
||||
⊂((・▽・))⊃ Hug me (2)
|
||||
V●ᴥ●V Doggy (2)
|
||||
(=^_^=) Bunny (3)
|
||||
<コ:彡 Squid (2)
|
||||
-_-; Anime Sweat Drop (2)
|
||||
(°̥̥̥̥̥̥̥̥ᴗ°̥̥̥̥̥̥̥̥) Happy crying
|
||||
(=^・ェ・^=) Kitty (2)
|
||||
(((༼•̫͡•༽))) Ghost (2)
|
||||
(-‸ლ) Whoops
|
||||
(=^ェ^=) Cat (4)
|
||||
( ´-ω・)︻┻┳══━一 Sniper
|
||||
⊆☉ᴥ☉⊇ Bear (7)
|
||||
༼ つ ◕_◕ ༽つ Take my energy
|
||||
(  ̄┏_┓ ̄) Mustache (2)
|
||||
(;´Д`) Giving Up
|
||||
( ͡° ʖ̯ ͡°) Disgruntled
|
||||
✌(◕‿-)✌ Peace (3)
|
||||
ಠ_ರೃ Monocle (2)
|
||||
T^T Crying (5)
|
||||
ᘛ⁐̤ᕐᐷ Chameleon
|
||||
༼ つ ◕_◕ ༽つ Gimme
|
||||
ლ(ಠ益ಠ)ლ Anger
|
||||
(ง •̀_•́)ง Feisty
|
||||
(っ⌒‿⌒)っ Hug (3)
|
||||
ϵ( 'Θ' )϶ Fish (3)
|
||||
(^▽^) Laughing (5)
|
||||
¯\(°_o)/¯ Confused (4)
|
||||
̿’̿’\̵͇̿̿\З=( ͠° ͟ʖ ͡°)=Ε/̵͇̿̿/’̿̿ ̿ ̿ ̿ ̿ ̿ Outlaw
|
||||
o(^▽^)o Pumped (2)
|
||||
.∵・(゚Д゚) Scared (2)
|
||||
(*☉౪ ⊙。)ノ Imbecile (2)
|
||||
d-(^.^)z Thumbs Up (2)
|
||||
(>_<) Painful
|
||||
(¬_¬") Annoyed (4)
|
||||
(´╹〽╹`) Worried (4)
|
||||
(o^-^o) Pikachu (2)
|
||||
(▀̿Ĺ̯▀̿ ̿) Deal with it
|
||||
(∩`-´)⊃━☆゚.*・。゚ Magic Attack
|
||||
꒡ᘦ̲꒡ Sleeping (5)
|
||||
(‾ʖ̫‾) Lethargic
|
||||
^_^; Guilty
|
||||
ヽ(`⌒´メ)ノ Angry (8)
|
||||
^^ Blissful
|
||||
^_^/ High Five (2)
|
||||
ʕ•͡ᴥ•ʔ Polar bear
|
||||
❆❅❉ Snowing
|
||||
ヽ(★ω★)ノ Excited
|
||||
U^ェ^U Puppy
|
||||
⊂(^(工)^)⊃ Teddy bear
|
||||
(≧∇≦)/ Joyful (2)
|
||||
◦°˚\☺/˚°◦ Playing in the snow
|
||||
(╯°□°)╯︵ ʞooqǝɔɐɟ Flipping Facebook
|
||||
(;-_-)ノ Giving up
|
||||
⊙▂⊙ Shocked
|
||||
|∴め ϖ め∴| SpongeBob SquarePants
|
||||
◔̯◔ Rolling Eyes
|
||||
⊂(◜ᴥ◝)つ Teddy Bear
|
||||
ε=(☉_☉) Accidental farting
|
||||
(ಥ﹏ಥ) Devastated (2)
|
||||
(•͡.•͡) Skeptical
|
||||
ε=┏( >_<)┛ Running (5)
|
||||
┬─┬︵/(.□.)╯ Table Flips You
|
||||
〠_〠 Tired (3)
|
||||
∊ಠ_ಠ∍ Distressed
|
||||
V=(° °)=V Crab (2)
|
||||
ᶘ ᵒᴥᵒᶅ Seal (2)
|
||||
Ƹ̵̡Ӝ̵̨̄Ʒ Butterfly
|
||||
(- o - ) zzZ ☽ Sleepy
|
||||
◯0o。(ー。ー)y Smoking (4)
|
||||
(。々°) Herp Derp
|
||||
-_-* Frustrated (3)
|
||||
(+[__]∙:∙) PlayStation Portable
|
||||
(V) (°,,,,°) (V) Zoidberg
|
||||
/|\( ;,; )/|\ Bat
|
||||
◖㈠ ω ㈠◗ Panda
|
||||
\m/d(^_^)b\m/ Rocking Out
|
||||
ヽ(゚Д゚)ノ Freak Out (2)
|
||||
(ノ゚0゚)ノ~ Yoo-Hoo
|
||||
¤\( `⌂´ )/¤ Lifting weights
|
||||
(ò_ó) Furious
|
||||
( ˘ ³˘)♥ Kiss me
|
||||
(^▽^) Cheerful (3)
|
||||
(⌒ ͜ʖ⌒)b Attentive
|
||||
ᕦ❍ᴗ❍ᕤ Muscular Person
|
||||
(´>_●)メ(●_<`) Sword Fighting
|
||||
:-Þ Teasing
|
||||
=( ^o^)ノ___o Bowling
|
||||
(#×_×) Dead (2)
|
||||
(。・_・)ノ”【】 Painting
|
||||
(/。\) Shy (5)
|
||||
⎰≀.☮-☮≀⎰ John Lennon
|
||||
─=≡Σ(([ ⊐•̀⌂•́]⊐ Superhero
|
||||
(¬з¬)σ Pointing (2)
|
||||
(・д・)} On The Phone (3)
|
||||
㐈⦁ཽし⦁ཽ㐈 Larry David
|
||||
⨌⨀_⨀⨌ Benjamin Franklin
|
||||
(☄ฺ◣д◢)☄ฺ Scaring
|
||||
ƪ(˘▽˘ƪ) Worshiping
|
||||
[•.•ิ] Huh
|
||||
(◐‿◑) Crazy
|
||||
\(-_- ) Thank You
|
||||
(_ε_) Kiss my butt
|
||||
(⊃‿⊂) Anticipation
|
||||
(* ̄m ̄) Dissatisfied
|
||||
Q('.'Q) Put Em Up
|
||||
\(^o)(^0^)(o^)/ Caroling
|
||||
( ̄~ ̄) Unimpressed
|
||||
༼ঢ_༽ঢ༽ Perplexed
|
||||
(。♥‿♥。) Smitten
|
||||
( ̄□ ̄;) Surprised
|
||||
(^o^) Singing (3)
|
||||
(:3 っ)っ Walrus
|
||||
( `_)乂(_' ) Arm wrestle
|
||||
(ง •̀ゝ•́)ง Fighting (2)
|
||||
uwu Happy Anime Face
|
||||
└(^o^ )X( ^o^)┘ Best buddies
|
||||
d^_^b DJ
|
||||
( --)/ ==卍 Ninja Star
|
||||
C:。ミ Octopus
|
||||
(´・ω・`) Snubbing (2)
|
||||
♪(●′▽`)ノ Good Night
|
||||
(#^.^#) Embarrassed (3)
|
||||
ಥ_ಥ Bawling (3)
|
||||
†_(゚ー゚*)β Exorcism
|
||||
੯ू•́ू ໒꒱⁼³₌₃ Sonic the Hedgehog
|
||||
(^‿◕) Winking (3)
|
||||
(″・ิ_・ิ)っ Wait (3)
|
||||
。◕‿◕。 Gleeful
|
||||
ヽ( ★ω★)ノ Pumped up
|
||||
_〆(。。) Writing (2)
|
||||
(∿°○°)∿ ︵ ǝʌol Heartbroken
|
||||
^;;^ Spider
|
||||
(⓪益⓪) Staring (2)
|
||||
( ̄┏∞┓ ̄) Fu Manchu Man
|
||||
( • ∀•)っθΘʘ Hiding Easter eggs
|
||||
_φ( °-°)/ Doing Homework
|
||||
◖ර◞ʖ◟ර◗ Grandma
|
||||
¬.¬ Whatever (3)
|
||||
⫷ °⧭° ⫸ Clown
|
||||
(♥_♥) In Love
|
||||
>.< Upset (2)
|
||||
( ◢д◣) Depressed (4)
|
||||
ᕕ( ᐛ )ᕗ Celebrating
|
||||
(¬‿¬) Cunning
|
||||
└(^o^)┐ Grooving (3)
|
||||
~゜・_・゜~ Raving
|
||||
ᕦ◉▿◉ᕤ Owl (2)
|
||||
\(^O^)/ Celebrate
|
||||
(*’(OO)’*) Piggy (2)
|
||||
˃ʍ˂ Enraged (2)
|
||||
(ू˃̣̣̣̣̣̣︿˂̣̣̣̣̣̣ ू) Sobbing (3)
|
||||
( ^^)人(^^ ) Best Buds
|
||||
└@(・ェ・)@┐ Beefcake
|
||||
(☉__☉”) Yikes
|
||||
(╯˘ -˘ )╯ Praying (2)
|
||||
ε=┌( ≧▽)┘ Elated
|
||||
( •_•)O °Q(•_• ) Playing Ping Pong
|
||||
∋(°O°)∈ Blowfish
|
||||
(;一_一) Ashamed (4)
|
||||
{♥‿♥} Lovestruck
|
||||
๏-) Cyclops
|
||||
(o ̄∇ ̄)=◯)`ν゜)・ Punching (6)
|
||||
┬─┬ノ( º _ ºノ) Putting Table Back (2)
|
||||
(~_(]=--Z(◡˘) Pie Fight
|
||||
((((((^_^;) Evading
|
||||
(/o^)/°⊥\(^o\) Volleyball
|
||||
-{'''|'''|'''|''']=[] Syringe
|
||||
[^._.^]ノ彡 Nyan Cat
|
||||
---(o_ _)o Tripping (2)
|
||||
┬┴┬┴┤(・_├┬┴┬┴ Snooper
|
||||
(ㆆ_ㆆ) Unamused
|
||||
(✿◠‿◠) Hippie
|
||||
ヾ(* ̄O ̄)ツ Yelling
|
||||
(ɔ◔‿◔)ɔ ♥ Loving
|
||||
(ノ-o-)ノ 中 Olympic Hammer Throw
|
||||
(/ω・\) Peering
|
||||
(´・ω・)っ由 Gift
|
||||
[-_-]~ Ninja
|
||||
(シ_ _)シ Apology (2)
|
||||
∋∞(●゚v゚)∞∈ Pigtails
|
||||
(>o<)ρミ┳┷┳゜ Table Tennis
|
||||
(^̮^) Pleased (2)
|
||||
♪~( ̄ε ̄;) Whistling
|
||||
( ̄▼ ̄) Big Grin
|
||||
⋟^≏^⋞ Kitty Cat
|
||||
( ̄へ ̄) Discontent
|
||||
(*・_・)ノ⌒* Throwing Away
|
||||
(*@_*#) Beaten Up
|
||||
(p_-) Thinking
|
||||
(。_°)☆ Punched
|
||||
♥‿♥ Enamored
|
||||
ε-(´・`) フ Phew
|
||||
༼ঢ_㇁ঢ༽ Bad hair day
|
||||
(づ ̄ ³ ̄)づ Smooch (3)
|
||||
O(<>'<>)O Aang
|
||||
(_ _)..ooOO Dreaming
|
||||
┳┻┳° Ping Pong table
|
||||
^o^ Mog
|
||||
(゚皿゚)r┏┳-* Shooting (2)
|
||||
m( ゚皿゚)m★━━ Laser
|
||||
٩◔̯◔۶ Eye Roll With Hands Up
|
||||
ヽ(´Д`ヽミノ´Д`)ノ Frantic (2)
|
||||
(-ε- ) Pucker up (3)
|
||||
ヽ(⌐■_■)ノ♪♬ Boogie down
|
||||
「(°ヘ°) Puzzled
|
||||
d(^_^)b Listening to Music
|
||||
( -_-)旦~ Drinking
|
||||
<_< Looking (4)
|
||||
(( _ _)☆ ≡〇 Header
|
||||
^)_(^ Chubby
|
||||
(๑´•.̫ • `๑) Blushing
|
||||
(。▼皿▼) Darth Vader
|
||||
(╬☉Д⊙ฺ) Cyborg
|
||||
(ʘ‿ʘ) Smile
|
||||
ε=ε=ε=┌(๑ʘ∀ʘ)┘ Sprinting
|
||||
ƪ(˘⌣˘)ʃ Raise the roof
|
||||
( ˘︹˘ ) Smug
|
||||
(▰˘◡˘▰) Satisfied
|
||||
(¬、¬) Shifty
|
||||
¯(°_o)/¯ Confused shrug
|
||||
✖‿✖ Dead person
|
||||
(。_°☆\(- – ) Punch
|
||||
(ɔˆ ³(ˆ⌣ˆc) Loving couple
|
||||
(*▿▿* ƪ) Vampire
|
||||
o(^^o)(o^^)o Hopeful
|
||||
___ψ(‥ ) Studying
|
||||
_φ(°-°=) Doing homework
|
||||
@( o・ω・)@ Monkey
|
||||
(╭ರ_•́) Inquisitive
|
||||
੯ू‵ू ໒꒱ Poodle
|
||||
(*^^)^*) Kiss (5)
|
||||
(^~^) Meh
|
||||
(/。\) Frightened
|
||||
:þ Playful
|
||||
(>^_^)><(^o^<) Hugging
|
||||
(-_ゞ Groggy
|
||||
(*^o^)人(^o^*) Buddies
|
||||
(●´ノω`)コ Whispering (2)
|
||||
o(´^`)o Reluctant
|
||||
( つ Д `) Wiping Tears
|
||||
(o´・Υ・)ノ・ Help (2)
|
||||
(。・ˇдˇ・。) Pompous
|
||||
(´∪`*) Friendly
|
||||
ヘ(。□°)ヘ Psycho
|
||||
(人’∀’) Precious
|
||||
(っ˘ڡ˘ς) Yummy
|
||||
┗(・ω・;)┛ How Should I Know
|
||||
(о^ω^о) Giggling
|
||||
(´ー`)┌フッ Golf Clap
|
||||
\\(<.<|>.>)// Panicking
|
||||
^(#`∀´)_Ψ Demon
|
||||
(╯‵Д′)╯ Scary
|
||||
:-{ -__-: Stinky
|
||||
ಠᴗಠ Scheming
|
||||
<(; ̄ ・ ̄) Scratching
|
||||
\(^ ^)/ Glad
|
||||
(╯_╰) Bummed out
|
||||
┗( ●-﹏ `。)づ Hurt (2)
|
||||
(-_-)# Girl
|
||||
8(>_<)8 Jealous
|
||||
(*°∀°)=3 Infatuated (3)
|
||||
( ^_^)/ Waving
|
||||
o(^_-)O Boxer
|
||||
{{|└(>o< )┘|}} Up In Arms
|
||||
(^^)// Applause (2)
|
||||
( `_)?(_' ) Dueling
|
||||
(´~`) Weary
|
||||
v(^_^)v Victory (3)
|
||||
(ノ_ _)ノ Surrender
|
||||
<( ・ェ-)<} Bow and Arrow
|
||||
( `o´)_θ☆ Kicking
|
||||
(-□-)︵* Blowing a Kiss
|
||||
|д・) Hiding (4)
|
||||
(´Д゜)/゜⌒。 Discarding
|
||||
ʕʔ Bread
|
||||
(ɔ˘з˘)ɔ Romantic
|
||||
ʕ •́؈•̀) Winnie the Pooh
|
||||
(ó ì_í)=óò=(ì_í ò) Bro Pound
|
||||
ヾ(`ε´)ノ Booing
|
||||
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅| Stereo
|
||||
ʘ‿ʘ Eager
|
||||
:(¦) Frog
|
||||
( ^)/占~~~ Banksy
|
||||
(;´༎ຶД༎ຶ`) Weeping (2)
|
||||
⊂ •͡˘∠•͡˘ ⊃ Suspicious
|
||||
( ° ᴗ°)~ð Proposal
|
||||
(๑╹ڡ╹๑) Tasty
|
||||
(¬_¬ ) Neglected
|
||||
ʕु•̫͡•ʔु Bear cub (2)
|
||||
┌|°з°|┘ Cutting a rug
|
||||
(⊙_◎) Crazed
|
||||
(✖╭╮✖) Deceased
|
||||
←~(o `▽´ )oΨ Satan
|
||||
˙ ͜ʟ˙ Content
|
||||
( ˇ෴ˇ ) Hipster
|
||||
♫.(◠౪◠).♫ Jamming to music
|
||||
∊♡_ᴥ_♡∍ Puppy Love
|
||||
L(´□`L) Oh No! (2)
|
||||
(;´ρ`) Yawning
|
||||
(╯ნ_㇁ნ)╯ Defeated
|
||||
(.〜◍`皿′◍〜.) Livid (2)
|
||||
ᡊ|◔じ◔|ᡊ Woody Allen
|
||||
✌(გ_㇁გ)✌ Ringo Starr
|
||||
╹﹏╹ Cold
|
||||
☉ϖ☉ Lobster
|
||||
(๑≖ิิ益≖ิ๑) Evil Laugh
|
||||
(((☎))) Phone
|
||||
(○`д´)ノシ Σ(っ゚Д゚)っ Chasing
|
||||
o(>< )o⌒* Mad (3)
|
||||
ლ(´ڡ`ლ) Licking
|
||||
⪿ ↂ ˒̫̮ ↂ ⫀ Elton John
|
||||
(•ᴥ• )́`́'́`́'́⻍ Porcupine
|
||||
且_(゚◇゚;)ノ゙ Waiter
|
||||
◖⎚∠⎚◗ Geek
|
||||
-ˆ ω ˆ- Kitten
|
||||
•:_:• Nagato
|
||||
ε=┌(^-^)┘ Skipping
|
||||
(+.+)(-.-)(_ _) Falling Asleep
|
||||
[ ± _ ± ] Sick
|
||||
〜〜(/ ̄▽)/ 〜ф Chasing A Butterfly
|
||||
\(`0´)/ Fed Up
|
||||
¥[*.*]¥ Robot
|
||||
(*・)σσ(*゜O゜) Poking
|
||||
( ̄ー ̄(_ _( Nodding
|
||||
▼o・_・o▼ Hello
|
||||
(`_^) Wink
|
||||
/( _0_) ̄θ☆≡≡○ Scissor Kick
|
||||
ヽ(´ー`)┌ Mellow
|
||||
(^ _ ^)/~~ Goodbye
|
||||
(*・)「」「」 Magic Casting
|
||||
( `皿´)。ミ/ Hitting
|
||||
[]゛7(∀゜*) Dialing
|
||||
(((((^_^) Teleporting
|
||||
( ̄ー ̄)//”” Clapping
|
||||
(。。;)\(-_-) Comforting
|
||||
(*  ̄)( ̄ *) Kissing
|
||||
(;^_^)ッ☆( ゜o゜) Slapping
|
||||
\(~O~)/ Good Morning
|
||||
\_(´▽`)♪_/ Bathtub
|
||||
ඞ sus
|
612
instructions.org
Normal file
612
instructions.org
Normal file
@ -0,0 +1,612 @@
|
||||
#+title: Instructions
|
||||
|
||||
** information :info:
|
||||
|
||||
This org document is a list of instructions on how to install the whole setup of my personal system, including installation of standalone programs.
|
||||
|
||||
** installing fedora minimal with btrfs snapshots (snapper)
|
||||
|
||||
this sections assumes that you know how to use sway (window manager), neovim (text editor), basic terminal shell commands, burn an iso to disk, as well as using the anaconda installer.
|
||||
|
||||
get the os image (Fedora Everything) from here https://alt.fedoraproject.org/en/ and burn it to your usb/other.
|
||||
|
||||
*** verifying the iso file
|
||||
1. Download the checksum file (from https://alt.fedoraproject.org/en/) into the same directory as the image you downloaded.
|
||||
|
||||
2. Import Fedora's GPG key(s)
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
curl -O https://fedoraproject.org/fedora.gpg
|
||||
#+END_SRC
|
||||
|
||||
3. Verify the CHECKSUM file is valid
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
gpgv --keyring ./fedora.gpg *-CHECKSUM
|
||||
#+END_SRC
|
||||
|
||||
4. Verify the checksum matches
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sha256sum -c *-CHECKSUM
|
||||
#+END_SRC
|
||||
|
||||
*** installing fedora and setting up btrfs with snapshots
|
||||
|
||||
differences/notes before continuing with the installation:
|
||||
|
||||
1. some dependencies aren't available with 'fedora custom operating system'. before installing snapper install these packages:
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo dnf install neovim sway firefox locate git bzip2
|
||||
#+END_SRC
|
||||
|
||||
- ~neovim~: a text editor to edit files
|
||||
- ~firefox~: a browser to follow along guide
|
||||
- ~locate~, ~git~, ~bzip2~: missing dependencies not included in the guide.
|
||||
|
||||
2. software selection will be =fedora custom operating system=
|
||||
|
||||
boot your fedora installer media and follow this guide, make sure to boot with EUFI mode:
|
||||
https://sysguides.com/install-fedora-38-with-snapshot-and-rollback-support/
|
||||
or for full disk encryption
|
||||
https://sysguides.com/install-fedora-38-with-full-disk-encryption-snapshot-and-rollback-support/
|
||||
|
||||
** how to make new user and add to wheel
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
# make a user and add to the wheel group
|
||||
useradd -m -g wheel user_name
|
||||
# set a password
|
||||
passwd user_name
|
||||
#+END_SRC
|
||||
|
||||
** prerequisites
|
||||
|
||||
for building/installing packages, also some dependencies for doomemacs, and zsh.
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo dnf install curl ca-certificates make automake gcc gcc-c++ kernel-devel git util-linux-user zsh ntpsec dnf-plugins-core golang flatpak cmake libevdev-devel systemd-devel yaml-cpp-devel boost-devel ripgrep fd-find ShellCheck tar pip npm
|
||||
#+END_SRC
|
||||
|
||||
** installing dotfiles
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
# getting dotfiles
|
||||
git clone https://gitea.bubbletea.dev/cho/dotfiles ~/.dots
|
||||
|
||||
cp -rv ~/.dots/home/default/.* ~/
|
||||
|
||||
# or using stow
|
||||
# make sure you make directories you don't want as symlinks
|
||||
mkdir -p ~/.local/share/applications
|
||||
mkdir -p ~/.local/bin
|
||||
mkdir -p ~/.config
|
||||
mkdir -p ~/.config/shell
|
||||
mkdir -p ~/.config/mpd
|
||||
mkdir -p ~/.config/zsh
|
||||
mkdir -p ~/.config/newsboat
|
||||
mkdir -p ~/.config/nvim
|
||||
|
||||
cd ~/.dots/home/ && stow default --target=$HOME/
|
||||
#+END_SRC
|
||||
|
||||
*** how to unstow dotfiles
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
cd ~/.dots/home/ && stow -D default --target=$HOME/
|
||||
#+END_SRC
|
||||
|
||||
** setting up rpmfusion
|
||||
|
||||
from https://rpmfusion.org/Configuration and https://rpmfusion.org/Howto/Multimedia
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
# rpmfusion
|
||||
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
|
||||
sudo dnf groupupdate core
|
||||
|
||||
# multimedia
|
||||
sudo dnf swap ffmpeg-free ffmpeg --allowerasing
|
||||
sudo dnf groupupdate multimedia --setop="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
|
||||
sudo dnf groupupdate sound-and-video
|
||||
|
||||
#amd
|
||||
sudo dnf swap mesa-va-drivers mesa-va-drivers-freeworld
|
||||
sudo dnf swap mesa-vdpau-drivers mesa-vdpau-drivers-freeworld
|
||||
|
||||
#dvd
|
||||
sudo dnf install rpmfusion-free-release-tainted
|
||||
sudo dnf install libdvdcss
|
||||
|
||||
# non-free firmware
|
||||
sudo dnf install rpmfusion-nonfree-release-tainted
|
||||
sudo dnf --repo=rpmfusion-nonfree-tainted install "*-firmware"
|
||||
#+END_SRC
|
||||
|
||||
** installing dnf packages
|
||||
|
||||
this will install programs, as well as (99% of) dependencies of shell scripts and configuration included within lf (file manager)
|
||||
the other dependency not included in packages.txt is `pup` (included in a section below)
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo dnf install -y $(cat ~/.dots/packages.txt)
|
||||
#+END_SRC
|
||||
|
||||
** installing swayfx (window manager)
|
||||
|
||||
#+begin_src sh
|
||||
sudo dnf copr enable swayfx/swayfx
|
||||
sudo dnf install
|
||||
#+end_src
|
||||
|
||||
** configuring sudoers
|
||||
|
||||
Allow wheel users to sudo with password and allow several system commands
|
||||
(like `shutdown` to run without password).
|
||||
|
||||
#+BEGIN_SRC shell
|
||||
echo "%wheel ALL=(ALL:ALL) ALL" >/etc/sudoers.d/00-wheel-can-sudo
|
||||
echo "%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/shutdown,/usr/bin/reboot,/usr/bin/systemctl suspend,/usr/bin/wifi-menu,/usr/bin/mount,/usr/bin/umount,/usr/bin/dnf update,/usr/bin/dnf update -y,/usr/bin/dnf upgrade,/usr/bin/dnf upgrade,/usr/bin/dnf makecache,/usr/bin/dnf makecache -y,/usr/bin/loadkeys" >/etc/sudoers.d/01-cmds-without-password
|
||||
echo "Defaults editor=/usr/bin/nvim" >/etc/sudoers.d/02-visudo-editor
|
||||
#+END_SRC
|
||||
|
||||
** Make zsh the default shell for the user.
|
||||
|
||||
#+BEGIN_SRC shell
|
||||
name=$USER
|
||||
chsh -s /bin/zsh "$name" >/dev/null 2>&1
|
||||
sudo -u "$name" mkdir -p "/home/$name/.cache/zsh/"
|
||||
sudo -u "$name" mkdir -p "/home/$name/.config/abook/"
|
||||
sudo -u "$name" mkdir -p "/home/$name/.config/mpd/playlists/"
|
||||
#+END_SRC
|
||||
|
||||
at this point, you should logout and login again to set the variables.
|
||||
|
||||
** librewolf (browser)
|
||||
|
||||
from https://librewolf.net/installation/fedora/
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo dnf config-manager --add-repo https://rpm.librewolf.net/librewolf-repo.repo
|
||||
|
||||
sudo dnf install librewolf
|
||||
#+END_SRC
|
||||
|
||||
*** plugins, etc
|
||||
https://github.com/ranmaru22/firefox-vertical-tabs
|
||||
https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/
|
||||
https://addons.mozilla.org/en-US/firefox/addon/nicothin-dark-theme/
|
||||
https://addons.mozilla.org/en-US/firefox/addon/tomorrow-theme-night
|
||||
https://support.mozilla.org/en-US/kb/compact-mode-workaround-firefox
|
||||
|
||||
** doom emacs
|
||||
|
||||
first we need to install marked for markdown support
|
||||
#+BEGIN_SRC sh
|
||||
sudo npm install -g marked
|
||||
#+END_SRC
|
||||
|
||||
then install emacs
|
||||
#+begin_src sh
|
||||
sudo dnf install emacs
|
||||
#+end_src
|
||||
|
||||
alternatively build emacs with native compilation and pgtk for better compatibility with wayland
|
||||
#+begin_src sh
|
||||
|
||||
## clone the emacs repository
|
||||
git clone git://git.savannah.gnu.org/emacs.git
|
||||
|
||||
## install dependencies
|
||||
sudo dnf install gcc atk-devel cairo-devel freetype-devel fontconfig-devel dbus-devel giflib-devel glibc-devel libgccjit-devel libpng-devel libjpeg-turbo-devel libjpeg-turbo libtiff-devel libX11-devel libXau-devel libXdmcp-devel libXrender-devel libXt-devel libXpm-devel ncurses-devel xorg-x11-proto-devel zlib-devel gnutls-devel librsvg2-devel m17n-lib-devel libotf-devel libselinux-devel alsa-lib-devel gpm-devel liblockfile-devel libxml2-devel autoconf bzip2 cairo texinfo gzip desktop-file-utils libacl-devel harfbuzz-devel jansson-devel systemd-devel lcms2-devel systemd-rpm-macros libtree-sitter-devel gtk3-devel webkit2gtk3-devel gnupg2 sysprof-devel
|
||||
|
||||
## build emacs 29.1
|
||||
cd emacs
|
||||
git checkout emacs-29.1.90
|
||||
./autogen.sh
|
||||
./configure --with-dbus --with-gif --with-jpeg --with-png --with-rsvg \
|
||||
--with-tiff --with-xft --with-xpm --with-gpm=no \
|
||||
--with-xwidgets --with-modules --with-harfbuzz --with-cairo --with-json \
|
||||
--with-tree-sitter --with-pgtk --with-native-compilation
|
||||
make -j$(nproc)
|
||||
sudo make install
|
||||
#+end_src
|
||||
|
||||
install doom emacs:
|
||||
#+BEGIN_SRC sh
|
||||
git clone https://github.com/doomemacs/doomemacs ~/.emacs.d
|
||||
~/.emacs.d/bin/doom install
|
||||
#+END_SRC
|
||||
|
||||
** lf (file manager)
|
||||
|
||||
this fork of lf allows for sixel graphics, which allows you to see images in terminals that supports sixel
|
||||
|
||||
from https://github.com/horriblename/lf#installation
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
env CGO_ENABLED=0 go install -ldflags="-s -w" github.com/horriblename/lf@latest
|
||||
mkdir -p $HOME/.cache/lf
|
||||
#+END_SRC
|
||||
|
||||
** interception tools (keyboard input mappings)
|
||||
|
||||
change caps lock to escape (when pressed) and mod (when held down)
|
||||
|
||||
INSTALL FROM SOURCE
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
git clone https://gitlab.com/interception/linux/tools.git interception-tools
|
||||
cd interception-tools
|
||||
cmake -B build -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build
|
||||
cd build
|
||||
sudo make install
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
git clone https://gitlab.com/interception/linux/plugins/dual-function-keys.git
|
||||
cd dual-function-keys
|
||||
make && sudo make install
|
||||
#+END_SRC
|
||||
|
||||
it's a good idea to install these as well, if anything doesn't compile.
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo dnf groupinstall "Development Tools" "Development Libraries"
|
||||
#+END_SRC
|
||||
|
||||
*** installing the configuration
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo cp -rv ~/.dots/etc/interception /etc/
|
||||
sudo cp ~/.dots/etc/systemd/system/udevmon.service /etc/systemd/system/
|
||||
|
||||
# enable
|
||||
sudo systemctl enable udevmon.service
|
||||
#+END_SRC
|
||||
|
||||
** sway notifications
|
||||
|
||||
from https://github.com/ErikReider/SwayNotificationCenter#fedora
|
||||
#+BEGIN_SRC sh
|
||||
dnf copr enable erikreider/SwayNotificationCenter
|
||||
dnf install SwayNotificationCenter
|
||||
#+END_SRC
|
||||
|
||||
** autotiling in sway (optional)
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
pip install i3ipc
|
||||
pip install autotiling==1.8
|
||||
#+END_SRC
|
||||
|
||||
** sworkstyle (workspace icons) (optional)
|
||||
|
||||
this is disabled by default within sway config, but compatible with waybar and sway
|
||||
|
||||
installing this needs cargo, to install go here: [[*installing cargo]]
|
||||
this also needs [[install icon fonts (Nerd Fonts)]]
|
||||
#+begin_src sh
|
||||
cargo install sworkstyle
|
||||
#+end_src
|
||||
|
||||
*** install icon fonts (Nerd Fonts)
|
||||
for sworkstyle icons in waybar
|
||||
|
||||
#+begin_src sh
|
||||
mkdir ~/.local/share/fonts
|
||||
curl -LOv https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/NerdFontsSymbolsOnly.tar.xz --output-dir /tmp/
|
||||
tar -xvf /tmp/NerdFontsSymbolsOnly.tar.xz -C ~/.local/share/fonts/
|
||||
#+end_src
|
||||
|
||||
** uxn
|
||||
installing this just for catclock
|
||||
#+begin_src sh
|
||||
cd Downloads/
|
||||
curl -LOv https://rabbits.srht.site/uxn/uxn-essentials-lin64.tar.gz
|
||||
tar xvf uxn-essentials-lin64.tar.gz
|
||||
mv uxn ~/.local/
|
||||
#+end_src
|
||||
** sc-im (terminal spreadsheet)
|
||||
|
||||
I'm using this for sc files
|
||||
|
||||
from https://github.com/andmarti1424/sc-im/wiki/Installing-on-Fedora-27
|
||||
#+BEGIN_SRC sh
|
||||
sudo dnf install libzip libzip-devel libxml2-devel ncurses-devel byacc git gcc gnuplot
|
||||
git clone https://github.com/andmarti1424/sc-im.git
|
||||
cd sc-im/src/
|
||||
make
|
||||
sudo make install
|
||||
#+END_SRC
|
||||
|
||||
** nsxiv (image viewer)
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
dnf copr enable mamg22/nsxiv
|
||||
dnf install nsxiv
|
||||
#+END_SRC
|
||||
|
||||
** pip packages
|
||||
*** keepmenu (dmenu keepassxc client)
|
||||
|
||||
https://github.com/firecat53/keepmenu/blob/main/docs/install.md#install-recommended
|
||||
#+BEGIN_SRC sh
|
||||
pip install --user keepmenu
|
||||
#+END_SRC
|
||||
|
||||
*** pulsemixer (pulseaudio controller)
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
pip install --user pulsemixer
|
||||
#+END_SRC
|
||||
|
||||
*** termdown (terminal timer/stopwatch)
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
pip install termdown
|
||||
#+END_SRC
|
||||
|
||||
** go packages
|
||||
*** pup
|
||||
|
||||
needed for rssadd RSS scanning to work
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
go install github.com/ericchiang/pup@latest
|
||||
#+END_SRC
|
||||
|
||||
** packages from source/binaries
|
||||
*** simple-mtpfs (for mounting usb)
|
||||
|
||||
install dependencies:
|
||||
#+begin_src sh
|
||||
sudo dnf install libgcc fuse-devel libmtp-devel autoconf-archive
|
||||
#+end_src
|
||||
|
||||
https://github.com/phatina/simple-mtpfs#installation
|
||||
|
||||
#+begin_src sh
|
||||
git clone https://github.com/phatina/simple-mtpfs
|
||||
cd simple-mtpfs
|
||||
./autogen.sh
|
||||
mkdir build && cd build
|
||||
../configure
|
||||
make
|
||||
sudo make install
|
||||
#+end_src
|
||||
|
||||
*** mpvpaper
|
||||
|
||||
animated wallpapers (used by `change-background`)
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
# install dependencies
|
||||
sudo dnf install meson ninja-build pkg-config wayland-protocols-devel wayland-devel mpv-devel wlroots-devel
|
||||
# Clone
|
||||
git clone --single-branch https://github.com/GhostNaN/mpvpaper
|
||||
# Build
|
||||
cd mpvpaper
|
||||
meson build --prefix=/usr/local
|
||||
ninja -C build
|
||||
# Install
|
||||
sudo ninja -C build install
|
||||
#+END_SRC
|
||||
|
||||
*** 7-zip
|
||||
|
||||
get the downloads from https://www.7-zip.org/download.html
|
||||
if you're using modern hardware, it's usually 64-bit linux x86-x64
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
# downloading and extracting the file
|
||||
cd ~/Downloads/
|
||||
curl -O <download-url>
|
||||
mkdir 7-zip/
|
||||
cd 7-zip/
|
||||
tar -xvf ../<filename>.tar.xz
|
||||
# put it into a PATH directory
|
||||
sudo cp 7zz /usr/local/bin/
|
||||
#+END_SRC
|
||||
|
||||
** AppImages
|
||||
*** syncplay
|
||||
|
||||
from https://syncplay.pl/download/
|
||||
#+begin_src sh
|
||||
curl -LOv https://github.com/Syncplay/syncplay/releases/download/v1.7.0/Syncplay-1.7.0-x86_64.AppImage
|
||||
chmod +x Syncplay-*.AppImage
|
||||
mv Syncplay-*.AppImage ~/.local/bin/syncplay
|
||||
#+end_src
|
||||
|
||||
** installing cargo
|
||||
https://doc.rust-lang.org/cargo/getting-started/installation.html
|
||||
|
||||
when asked, choose to customize installation, and then choose `no` when it asks to modify PATH variable. (it's already set in ~~/config/shell/profile~)
|
||||
#+BEGIN_SRC shell
|
||||
curl https://sh.rustup.rs -sSf | sh
|
||||
#+END_SRC
|
||||
|
||||
** setting up flatpak
|
||||
|
||||
from https://flatpak.org/setup/Fedora
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
#+END_SRC
|
||||
|
||||
** setting up virtualbox
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo usermod -a -G vboxusers default
|
||||
#+END_SRC
|
||||
|
||||
** flatpak packages
|
||||
|
||||
remember to set permissions with Flatseal, especially access to personal files according to what you want the software to have before launching them.
|
||||
|
||||
*** flatseal
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
flatpak install -y com.github.tchx84.Flatseal
|
||||
#+END_SRC
|
||||
|
||||
*** Unity
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
flatpak install flathub com.unity.UnityHub
|
||||
#+END_SRC
|
||||
|
||||
*** Foliate (Epub reader)
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
flatpak install flathub com.github.johnfactotum.Foliate
|
||||
#+END_SRC
|
||||
|
||||
*** bottles and dependencies
|
||||
|
||||
- gamescope
|
||||
- mangohud
|
||||
- OBS VkCapture tools
|
||||
- OBS VkCapture plugin
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
flatpak install -y com.valvesoftware.Steam.Utility.gamescope com.usebottles.bottles org.freedesktop.Platform.VulkanLayer.MangoHud org.freedesktop.Platform.VulkanLayer.OBSVkCapture obs-studio-plugin-vkcapture com.obsproject.Studio
|
||||
#+END_SRC
|
||||
|
||||
*** steam
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
flatpak install -y com.valvesoftware.Steam
|
||||
#+END_SRC
|
||||
|
||||
*** rpsc3
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo flatpak install -y net.rpcs3.RPCS3
|
||||
#+END_SRC
|
||||
|
||||
limits.conf settings https://github.com/RPCS3/rpcs3/issues/9328
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo su
|
||||
printf '* hard memlock unlimited\n* soft memlock unlimited' >> /etc/security/limits.conf
|
||||
#+END_SRC
|
||||
|
||||
*** cemu
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
flatpak install flathub info.cemu.Cemu
|
||||
#+END_SRC
|
||||
|
||||
*** discord
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
flatpak install flathub com.discordapp.Discord
|
||||
#+END_SRC
|
||||
|
||||
*** spotify
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
flatpak install flathub io.github.hrkfdn.ncspot
|
||||
flatpak install flathub com.spotify.Client
|
||||
#+END_SRC
|
||||
|
||||
* fixes
|
||||
** crashes with wayland under amd gpus
|
||||
|
||||
see https://bbs.archlinux.org/viewtopic.php?id=270468
|
||||
https://forum.manjaro.org/t/graphics-glitches-freeze-up-with-new-comp-error-ring-gfx-timeout/55979/6
|
||||
#+BEGIN_SRC sh
|
||||
sudo cp ~/.dots/usr/local/bin/radcard* /usr/local/bin/
|
||||
sudo cp ~/.dots/etc/systemd/system/radcard.service /etc/systemd/system/
|
||||
sudo systemctl enable --now radcard.service
|
||||
#+END_SRC
|
||||
|
||||
you can check the status with `radcard.sh get` , make sure the output is as follows:
|
||||
#+BEGIN_SRC
|
||||
power_dpm_state: performance
|
||||
power_dpm_force_performance_level: high
|
||||
#+END_SRC
|
||||
|
||||
|
||||
* todos
|
||||
** TODO remove Virtual Box
|
||||
** TODO remove autotiling
|
||||
** TODO write dependencies and programs to separate files
|
||||
** add packages / other
|
||||
*** installing bubblejail (WIP)
|
||||
|
||||
#+begin_src sh
|
||||
git clone https://github.com/igo95862/bubblejail
|
||||
cd bubblejail
|
||||
git checkout tags/0.8.1
|
||||
sudo dnf install scdoc
|
||||
sudo dnf install python3
|
||||
sudo dnf install python3-jinja2
|
||||
sudo dnf install python3-tomli-w
|
||||
sudo dnf install python3-tomli
|
||||
sudo dnf install libseccomp
|
||||
sudo dnf install python3-pyqt6
|
||||
sudo dnf install python3-pyxdg
|
||||
sudo dnf install bubblewrap
|
||||
sudo dnf install xdg-dbus-proxy
|
||||
meson setup build
|
||||
cd build
|
||||
meson compile
|
||||
sudo meson install
|
||||
#+end_src
|
||||
|
||||
** setting up termux (WIP)
|
||||
|
||||
1. install termux-api and termux-styling from fdroid
|
||||
2. install these packages
|
||||
#+begin_src sh
|
||||
pkg install termux-api fd ripgrep git emacs neovim shellcheck rsync nodejs lf man ffmpeg jq pup recode python-pip clang fontconfig-utils which
|
||||
#+end_src
|
||||
|
||||
3. setup storage
|
||||
#+begin_src sh
|
||||
termux-setup-storage
|
||||
#+end_src
|
||||
|
||||
3. install doom emacs
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
sudo npm install -g marked
|
||||
git clone https://github.com/doomemacs/doomemacs ~/.emacs.d
|
||||
~/.emacs.d/bin/doom install
|
||||
#+END_SRC
|
||||
|
||||
4. yt-dlp
|
||||
#+begin_src sh
|
||||
pip install yt-dlp
|
||||
#+end_src
|
||||
|
||||
** ryujinx (WIP)
|
||||
sudo sysctl -w vm.max_map_count=524288
|
||||
** setup flatpak env variable for theme
|
||||
|
||||
#+begin_src
|
||||
flatpak install org.gtk.Gtk3theme.Materia-dark
|
||||
flatpak install org.gtk.Gtk3theme.Materia
|
||||
sudo flatpak override --env GTK_THEME=Materia-dark
|
||||
#+end_src
|
||||
|
||||
|
||||
** wlrobs
|
||||
|
||||
#+begin_src sh
|
||||
sudo dnf install wayland-devel obs-studio-devel pkg-config meson
|
||||
#+end_src
|
||||
|
||||
#+begin_src sh
|
||||
hg clone https://hg.sr.ht/~scoopta/wlrobs
|
||||
cd wlrobs
|
||||
meson setup build
|
||||
ninja -C build
|
||||
#+end_src
|
||||
|
||||
https://github.com/pystardust/ani-cli#tier-1-support-linux-mac-android
|
164
packages.txt
Normal file
164
packages.txt
Normal file
@ -0,0 +1,164 @@
|
||||
pip
|
||||
curl
|
||||
ca-certificates
|
||||
nss
|
||||
nss-pem
|
||||
make
|
||||
automake
|
||||
gcc
|
||||
gcc-c++
|
||||
kernel-devel
|
||||
git
|
||||
zsh
|
||||
ntpsec
|
||||
dnf-plugins-core
|
||||
golang
|
||||
flatpak
|
||||
cmake
|
||||
libevdev-devel
|
||||
systemd-devel
|
||||
yaml-cpp-devel
|
||||
boost-devel
|
||||
ripgrep
|
||||
fd-find
|
||||
ShellCheck
|
||||
tar
|
||||
pip
|
||||
npm
|
||||
polkit
|
||||
polkit-gnome
|
||||
fontawesome-fonts
|
||||
chafa
|
||||
bc
|
||||
dosfstools
|
||||
libnotify
|
||||
exfatprogs
|
||||
swaybg
|
||||
ffmpeg
|
||||
ffmpegthumbnailer
|
||||
mcomix3-thumbnailer
|
||||
gnome-kra-ora-thumbnailer
|
||||
gnome-epub-thumbnailer
|
||||
webp-pixbuf-loader
|
||||
gnome-keyring
|
||||
wl-clipboard
|
||||
neovim
|
||||
mpd
|
||||
mpc
|
||||
mpv
|
||||
man-db
|
||||
ncmpcpp
|
||||
newsboat
|
||||
google-noto-fonts-common
|
||||
google-noto-emoji-fonts
|
||||
fcitx5
|
||||
fcitx5-mozc
|
||||
ntfs-3g
|
||||
wireplumber
|
||||
pipewire-pulseaudio
|
||||
abook
|
||||
unzip
|
||||
lynx
|
||||
zathura-plugins-all
|
||||
zathura-pdf-mupdf
|
||||
krita
|
||||
poppler
|
||||
mediainfo
|
||||
atool
|
||||
fzf
|
||||
bat
|
||||
brightnessctl
|
||||
task-spooler
|
||||
htop
|
||||
waybar
|
||||
dmenu
|
||||
swaylock
|
||||
swaybg
|
||||
swayidle
|
||||
socat
|
||||
moreutils
|
||||
isync
|
||||
msmtp
|
||||
pass
|
||||
keepassxc
|
||||
NetworkManager-tui
|
||||
wtype
|
||||
fortune-mod
|
||||
cowsay
|
||||
perl-File-MimeInfo
|
||||
syncthing
|
||||
deluge
|
||||
obs-studio
|
||||
grimshot
|
||||
mumble
|
||||
dino
|
||||
gammastep
|
||||
sqlite
|
||||
gnome-themes-extra
|
||||
adwaita-qt5
|
||||
adwaita-qt6
|
||||
ImageMagick
|
||||
alerque-libertinus-fonts
|
||||
godot
|
||||
terminus-fonts
|
||||
terminus-fonts-console
|
||||
pcmanfm
|
||||
materia-gtk-theme
|
||||
papirus-icon-theme
|
||||
GraphicsMagick
|
||||
microcode_ctl
|
||||
wget
|
||||
neofetch
|
||||
dnf-utils
|
||||
steam-devices
|
||||
thunderbird
|
||||
thunderbird-wayland
|
||||
hugo
|
||||
torbrowser-launcher
|
||||
stow
|
||||
dolphin-emu
|
||||
vulkan-validation-layers
|
||||
xorg-x11-drv-amdgpu
|
||||
amd-gpu-firmware
|
||||
emacs
|
||||
tmux
|
||||
gamescope
|
||||
dotnet
|
||||
mono-devel
|
||||
@virtualization
|
||||
texlive-scheme-full
|
||||
texlive-dvipng
|
||||
rofi
|
||||
kanshi
|
||||
gvfs-mtp
|
||||
usbutils
|
||||
android-tools
|
||||
java-1.8.0-openjdk
|
||||
java-17-openjdk
|
||||
easyeffects
|
||||
java-latest-openjdk-devel
|
||||
picard
|
||||
chromaprint-tools
|
||||
rhythmbox
|
||||
python-sphinx
|
||||
wofi
|
||||
nautilus
|
||||
mpg123
|
||||
highlight
|
||||
clang
|
||||
clang-tools-extra
|
||||
sdcv
|
||||
obs-studio-plugin-vkcapture
|
||||
languagetool
|
||||
android-file-transfer
|
||||
ruby-devel
|
||||
zlib-devel
|
||||
"C Development Tools and Libraries"
|
||||
perl-Image-ExifTool
|
||||
zig
|
||||
minisign
|
||||
wlopm
|
||||
urlscan
|
||||
wlr-randr
|
||||
figlet
|
||||
ledger
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user