diff --git a/user/.config/newsboat/config b/user/.config/newsboat/config new file mode 100644 index 000000000..46b378366 --- /dev/null +++ b/user/.config/newsboat/config @@ -0,0 +1,62 @@ +## ____ __ +## / __ \_________ _/ /_____ +## / / / / ___/ __ `/ //_/ _ \ +## / /_/ / / / /_/ / ,< / __/ Clay Gomera (Drake) +## /_____/_/ \__,_/_/|_|\___/ My custom newsboat config +## + +show-read-feeds yes +auto-reload yes + +external-url-viewer "urlscan -dc -r 'linkhandler {}'" + +bind-key j down +bind-key k up +bind-key j next articlelist +bind-key k prev articlelist +bind-key J next-feed articlelist +bind-key K prev-feed articlelist +bind-key G end +bind-key g home +bind-key d pagedown +bind-key u pageup +bind-key l open +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 + +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 + +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 -xic -f bestaudio/best" ; 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 "youtube-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 + +highlight all "---.*---" yellow +highlight feedlist ".*(0/0))" black +highlight article "(^Feed:.*|^Title:.*|^Author:.*)" cyan default bold +highlight article "(^Link:.*|^Date:.*)" default default +highlight article "https?://[^ ]+" green default +highlight article "^(Title):.*$" blue default +highlight article "\\[[0-9][0-9]*\\]" magenta default bold +highlight article "\\[image\\ [0-9]+\\]" green default bold +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 diff --git a/user/.config/newsboat/urls b/user/.config/newsboat/urls new file mode 100644 index 000000000..c9d3bb4cf --- /dev/null +++ b/user/.config/newsboat/urls @@ -0,0 +1,38 @@ +http://static.fsf.org/fsforg/rss/news.xml "FSF News" +http://static.fsf.org/fsforg/rss/blogs.xml "FSF Blogs" +https://dot.kde.org/rss.xml "KDE Dot News" +https://planet.kde.org/global/atom.xml "Planet KDE" +https://thisweek.gnome.org/index.xml "This Week on GNOME" +https://www.omgubuntu.co.uk/feed "OMG Ubuntu!" +https://thelinuxexp.com/feed.xml "The Linux Experiment" +https://techhut.tv/feed/ "Techhut Media" +https://itsfoss.com/rss/ "Its FOSS!" +https://thelinuxcast.org/feed/feed.xml "The Linux Cast" +https://9to5linux.com/feed/atom "9to5Linux" +https://blog.elementary.io/feed.xml "elementary OS Blog" +https://blog.zorin.com/index.xml "Zorin OS Blog" +http://blog.linuxmint.com/?feed=rss2 "Linux Mint Blog" +https://lukesmith.xyz/rss.xml "Luke Smith" +https://notrelated.xyz/rss "Not Related" +https://landchad.net/rss.xml "Landchad" +https://based.cooking/rss.xml "Based Cooking" +https://artixlinux.org/feed.php "Artix Linux" +https://www.archlinux.org/feeds/news/ "Arch Linux" +https://switchedtolinux.com/tutorials?format=feed&type=rss "Switched to Linux - Tutorials" +https://switchedtolinux.com/tin-foil-hat-time?format=feed&type=rss "Switched to Linux - Tin Foil Hat Time" +https://switchedtolinux.com/news?format=feed&type=rss "Switched to Linux - Weekly News Roundup" +https://switchedtolinux.com/linux/distros?format=feed&type=rss "Switched to Linux - Distros" +https://switchedtolinux.com/linux/software/?format=feed&type=rss "Switched to Linux - Software" +https://switchedtolinux.com/linux/desktop-environments/?format=feed&type=rss "Switched to Linux - Desktop Environments" +https://www.gamingonlinux.com/article_rss.php "Gaming on linux" +https://hackaday.com/blog/feed/ "Hackaday" +https://opensource.com/feed "Opensource" +https://linux.softpedia.com/backend.xml "Softpedia Linux" +https://www.zdnet.com/topic/linux/rss.xml "Zdnet Linux" +https://www.phoronix.com/rss.php "Phoronix" +https://www.computerworld.com/index.rss "Computerworld" +https://www.networkworld.com/category/linux/index.rss "Networkworld Linux" +https://betanews.com/feed "Betanews Linux" +http://lxer.com/module/newswire/headlines.rss "Lxer" +https://distrowatch.com/news/dwd.xml "Distrowatch" +https://odysee.com/$/rss/@blenderdumbass:f "Blender Dumbass" diff --git a/user/.config/suckless/dmenu/scripts/dmenu_scrot b/user/.config/suckless/dmenu/scripts/dmenu_scrot index d079d8a8d..dd2c837e9 100755 --- a/user/.config/suckless/dmenu/scripts/dmenu_scrot +++ b/user/.config/suckless/dmenu/scripts/dmenu_scrot @@ -5,8 +5,8 @@ # - Dependencies: scrot, dmenu, notify-send ## CREATING SCREENSHOT FOLDER ## -mkdir -p "$HOME/pictures/screenshots" -cd "$HOME/pictures/screenshots" || exit 0 +mkdir -p "$HOME/Pictures/Screenshots" +cd "$HOME/Pictures/Screenshots" || exit 0 ## CHOICES ## cho1="entire screen" diff --git a/user/.config/suckless/dmenu/scripts/dmenu_wall b/user/.config/suckless/dmenu/scripts/dmenu_wall index 41e54f3ba..b9d76de31 100755 --- a/user/.config/suckless/dmenu/scripts/dmenu_wall +++ b/user/.config/suckless/dmenu/scripts/dmenu_wall @@ -5,7 +5,7 @@ # - Dependencies: dmenu, fd, feh ## MAIN VARIABLES AND COMMANDS ## -walldir="pictures/wallpapers/" # wallpapers folder, change it to yours, make sure that it ends with a / +walldir="Pictures/Wallpapers/" # wallpapers folder, change it to yours, make sure that it ends with a / cd "$walldir" || exit ## SELECT PICTURE FUNCTION ## diff --git a/user/.config/suckless/dwm/config.def.h b/user/.config/suckless/dwm/config.def.h index f9ecb805d..5346272b3 100644 --- a/user/.config/suckless/dwm/config.def.h +++ b/user/.config/suckless/dwm/config.def.h @@ -31,11 +31,11 @@ const char *spcmd4[] = {"alacritty", "-t", "spani", "--class", "spani,spani", "- const char *spcmd5[] = {"alacritty", "-t", "spytf", "--class", "spytf,spytf", "-e", "ytfzf", "-flst", NULL }; const char *spcmd6[] = {"alacritty", "-t", "spamx", "--class", "spamx,spamx", "-e", "alsamixer", NULL }; const char *spcmd7[] = {"alacritty", "-t", "sppmx", "--class", "sppmx,sppmx", "-e", "pulsemixer", NULL }; -const char *spcmd8[] = {"alacritty", "-t", "spcht", "--class", "spcht,spcht", "-e", "gomuks", NULL }; -const char *spcmd9[] = {"alacritty", "-t", "spmsc", "--class", "spmsc,spmsc", "-e", "cmus", NULL }; -const char *spcmd10[] = {"alacritty", "-t", "spflm", "--class", "spflm,spflm", "-e", "./.config/vifm/scripts/vifmrun", NULL }; -const char *spcmd11[] = {"alacritty", "-t", "sptot", "--class", "sptot,sptot", "-e", "toot", "tui", NULL }; -const char *spcmd12[] = {"alacritty", "-t", "spytm", "--class", "spytm,spytm", "-e", "ytfzf", "-mlst", NULL }; +const char *spcmd8[] = {"alacritty", "-t", "spmsc", "--class", "spmsc,spmsc", "-e", "cmus", NULL }; +const char *spcmd9[] = {"alacritty", "-t", "spflm", "--class", "spflm,spflm", "-e", "./.config/vifm/scripts/vifmrun", NULL }; +const char *spcmd10[] = {"alacritty", "-t", "sptot", "--class", "sptot,sptot", "-e", "tut", NULL }; +const char *spcmd11[] = {"alacritty", "-t", "spytm", "--class", "spytm,spytm", "-e", "ytfzf", "-mlst", NULL }; +const char *spcmd12[] = {"alacritty", "-t", "sprss", "--class", "sprss,sprss", "-e", "newsboat", "-u", "~/.config/newsboat/urls", NULL }; static Sp scratchpads[] = { /* name cmd */ {"sptrm", spcmd1}, @@ -45,11 +45,11 @@ static Sp scratchpads[] = { {"spytf", spcmd5}, {"spamx", spcmd6}, {"sppmx", spcmd7}, - {"spcht", spcmd8}, - {"spmsc", spcmd9}, - {"spflm", spcmd10}, - {"sptot", spcmd11}, - {"spytm", spcmd12}, + {"spmsc", spcmd8}, + {"spflm", spcmd9}, + {"sptot", spcmd10}, + {"spytm", spcmd11}, + {"sprss", spcmd12}, }; /* tagging */ @@ -82,7 +82,7 @@ static const Rule rules[] = { // test tag { "Virt-manager", NULL, NULL, 1, 0, -1 }, // web tag - { "librewolf", NULL, NULL, 1 << 2, 0, -1 }, + { "LibreWolf", NULL, NULL, 1 << 2, 0, -1 }, { "firefox", NULL, NULL, 1 << 2, 0, -1 }, { "qutebrowser", NULL, NULL, 1 << 2, 0, -1 }, { "Chromium", NULL, NULL, 1 << 2, 0, -1 }, @@ -100,6 +100,7 @@ static const Rule rules[] = { { "Cadence", NULL, NULL, 1 << 4, 0, -1 }, // video tag { "kdenlive", NULL, NULL, 1 << 5, 0, -1 }, + { "Pitivi", NULL, NULL, 1 << 5, 0, -1 }, { "Blender", NULL, NULL, 1 << 5, 0, -1 }, { "Natron", NULL, NULL, 1 << 5, 0, -1 }, { "SimpleScreenRecorder", NULL, NULL, 1 << 5, 0, -1 }, @@ -126,11 +127,11 @@ static const Rule rules[] = { { NULL, "spytf", NULL, SPTAG(4), 1, -1 }, { NULL, "spamx", NULL, SPTAG(5), 1, -1 }, { NULL, "sppmx", NULL, SPTAG(6), 1, -1 }, - { NULL, "spcht", NULL, SPTAG(7), 1, -1 }, - { NULL, "spmsc", NULL, SPTAG(8), 1, -1 }, - { NULL, "spflm", NULL, SPTAG(9), 1, -1 }, - { NULL, "sptot", NULL, SPTAG(10), 1, -1 }, - { NULL, "spytm", NULL, SPTAG(11), 1, -1 }, + { NULL, "spmsc", NULL, SPTAG(7), 1, -1 }, + { NULL, "spflm", NULL, SPTAG(8), 1, -1 }, + { NULL, "sptot", NULL, SPTAG(9), 1, -1 }, + { NULL, "spytm", NULL, SPTAG(10), 1, -1 }, + { NULL, "sprss", NULL, SPTAG(11), 1, -1 }, }; // layout(s) @@ -165,12 +166,14 @@ static const char *dmenucmd[] = { "dmenu_run", "-fn", dmenufont, "-nb", col_gray // terminal static const char *termcmd[] = { "alacritty", NULL }; +#include "movestack.c" + static const Key keys[] = { /* modifier key function argument */ // text editor { MODKEY, XK_e, spawn, SHCMD("emacsclient -c -a 'emacs'")}, // web browser - { MODKEY, XK_w, spawn, SHCMD("qutebrowser")}, + { MODKEY, XK_w, spawn, SHCMD("librewolf")}, // set keyboard layout to es { MODKEY|ControlMask, XK_e, spawn, SHCMD("setxkbmap -layout es")}, // set keyboard layout to us @@ -214,6 +217,9 @@ static const Key keys[] = { // increase and decrease master client size { MODKEY, XK_h, setmfact, {.f = -0.05} }, { MODKEY, XK_l, setmfact, {.f = +0.05} }, + // move windows on stack + { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } }, + { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } }, // switch master window { MODKEY|ControlMask, XK_Return, zoom, {0} }, // switch to latest tag @@ -249,11 +255,11 @@ static const Key keys[] = { { MODKEY|ShiftMask, XK_y, togglescratch, {.ui = 4 } }, { MODKEY|ShiftMask, XK_o, togglescratch, {.ui = 5 } }, { MODKEY|ShiftMask, XK_p, togglescratch, {.ui = 6 } }, - { MODKEY|ShiftMask, XK_c, togglescratch, {.ui = 7 } }, - { MODKEY|ShiftMask, XK_m, togglescratch, {.ui = 8 } }, - { MODKEY|ShiftMask, XK_v, togglescratch, {.ui = 9 } }, - { MODKEY|ShiftMask, XK_t, togglescratch, {.ui = 10 } }, - { MODKEY|ShiftMask, XK_n, togglescratch, {.ui = 11 } }, + { MODKEY|ShiftMask, XK_m, togglescratch, {.ui = 7 } }, + { MODKEY|ShiftMask, XK_v, togglescratch, {.ui = 8 } }, + { MODKEY|ShiftMask, XK_t, togglescratch, {.ui = 9 } }, + { MODKEY|ShiftMask, XK_n, togglescratch, {.ui = 10 } }, + { MODKEY|ShiftMask, XK_r, togglescratch, {.ui = 11 } }, // tag bindings TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) diff --git a/user/.config/suckless/dwm/movestack.c b/user/.config/suckless/dwm/movestack.c new file mode 100644 index 000000000..520f4ae39 --- /dev/null +++ b/user/.config/suckless/dwm/movestack.c @@ -0,0 +1,48 @@ +void +movestack(const Arg *arg) { + Client *c = NULL, *p = NULL, *pc = NULL, *i; + + if(arg->i > 0) { + /* find the client after selmon->sel */ + for(c = selmon->sel->next; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); + if(!c) + for(c = selmon->clients; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); + + } + else { + /* find the client before selmon->sel */ + for(i = selmon->clients; i != selmon->sel; i = i->next) + if(ISVISIBLE(i) && !i->isfloating) + c = i; + if(!c) + for(; i; i = i->next) + if(ISVISIBLE(i) && !i->isfloating) + c = i; + } + /* find the client before selmon->sel and c */ + for(i = selmon->clients; i && (!p || !pc); i = i->next) { + if(i->next == selmon->sel) + p = i; + if(i->next == c) + pc = i; + } + + /* swap c and selmon->sel selmon->clients in the selmon->clients list */ + if(c && c != selmon->sel) { + Client *temp = selmon->sel->next==c?selmon->sel:selmon->sel->next; + selmon->sel->next = c->next==selmon->sel?c:c->next; + c->next = temp; + + if(p && p != c) + p->next = c; + if(pc && pc != selmon->sel) + pc->next = selmon->sel; + + if(selmon->sel == selmon->clients) + selmon->clients = c; + else if(c == selmon->clients) + selmon->clients = selmon->sel; + + arrange(selmon); + } +} \ No newline at end of file diff --git a/user/.config/suckless/dwm/patches/dwm-movestack-20211115-a786211.diff b/user/.config/suckless/dwm/patches/dwm-movestack-20211115-a786211.diff new file mode 100644 index 000000000..134abb88b --- /dev/null +++ b/user/.config/suckless/dwm/patches/dwm-movestack-20211115-a786211.diff @@ -0,0 +1,95 @@ +From 9a4037dc0ef56f91c009317e78e9e3790dafbb58 Mon Sep 17 00:00:00 2001 +From: BrunoCooper17 +Date: Mon, 15 Nov 2021 14:04:53 -0600 +Subject: [PATCH] MoveStack patch + +This plugin allows you to move clients around in the stack and swap them +with the master. It emulates the behavior off mod+shift+j and mod+shift+k +in Xmonad. movestack(+1) will swap the client with the current focus with +the next client. movestack(-1) will swap the client with the current focus +with the previous client. +--- + config.def.h | 3 +++ + movestack.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 51 insertions(+) + create mode 100644 movestack.c + +diff --git a/config.def.h b/config.def.h +index a2ac963..33efa5b 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -60,6 +60,7 @@ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() + static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; + static const char *termcmd[] = { "st", NULL }; + ++#include "movestack.c" + static Key keys[] = { + /* modifier key function argument */ + { MODKEY, XK_p, spawn, {.v = dmenucmd } }, +@@ -71,6 +72,8 @@ static Key keys[] = { + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.05} }, + { MODKEY, XK_l, setmfact, {.f = +0.05} }, ++ { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } }, ++ { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, +diff --git a/movestack.c b/movestack.c +new file mode 100644 +index 0000000..520f4ae +--- /dev/null ++++ b/movestack.c +@@ -0,0 +1,48 @@ ++void ++movestack(const Arg *arg) { ++ Client *c = NULL, *p = NULL, *pc = NULL, *i; ++ ++ if(arg->i > 0) { ++ /* find the client after selmon->sel */ ++ for(c = selmon->sel->next; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); ++ if(!c) ++ for(c = selmon->clients; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); ++ ++ } ++ else { ++ /* find the client before selmon->sel */ ++ for(i = selmon->clients; i != selmon->sel; i = i->next) ++ if(ISVISIBLE(i) && !i->isfloating) ++ c = i; ++ if(!c) ++ for(; i; i = i->next) ++ if(ISVISIBLE(i) && !i->isfloating) ++ c = i; ++ } ++ /* find the client before selmon->sel and c */ ++ for(i = selmon->clients; i && (!p || !pc); i = i->next) { ++ if(i->next == selmon->sel) ++ p = i; ++ if(i->next == c) ++ pc = i; ++ } ++ ++ /* swap c and selmon->sel selmon->clients in the selmon->clients list */ ++ if(c && c != selmon->sel) { ++ Client *temp = selmon->sel->next==c?selmon->sel:selmon->sel->next; ++ selmon->sel->next = c->next==selmon->sel?c:c->next; ++ c->next = temp; ++ ++ if(p && p != c) ++ p->next = c; ++ if(pc && pc != selmon->sel) ++ pc->next = selmon->sel; ++ ++ if(selmon->sel == selmon->clients) ++ selmon->clients = c; ++ else if(c == selmon->clients) ++ selmon->clients = selmon->sel; ++ ++ arrange(selmon); ++ } ++} +\ No newline at end of file +-- +2.33.1 + diff --git a/user/.config/suckless/dwmblocks/scripts/block_volume b/user/.config/suckless/dwmblocks/scripts/block_volume index 8b878a943..8dc11d50d 100755 --- a/user/.config/suckless/dwmblocks/scripts/block_volume +++ b/user/.config/suckless/dwmblocks/scripts/block_volume @@ -1,5 +1,5 @@ #!/bin/bash # Prints the current volume or 🔇 if muted. -[ $(pamixer --get-mute) = true ] && echo " VL: [MUT] " && exit +[ $(pamixer --get-mute) = true ] && echo " vol: mut " && exit vol="$(pamixer --get-volume)" echo " vol: $vol% " diff --git a/user/.config/suckless/slock/config.def.h b/user/.config/suckless/slock/config.def.h index 1cd7372ac..85e35d9fd 100644 --- a/user/.config/suckless/slock/config.def.h +++ b/user/.config/suckless/slock/config.def.h @@ -22,7 +22,7 @@ static const char * text_color = "#d4c4a1"; static const char * font_name = "mtx"; /* Background image path, should be available to the user above */ -static const char* background_image = ".config/suckless/slock/lockscreen.png"; +static const char* background_image = ".config/suckless/slock/lockscreen.jpg"; /* PAM service that's used for authentication */ static const char* pam_service = "system-local-login"; diff --git a/user/.config/suckless/slock/lockscreen.jpg b/user/.config/suckless/slock/lockscreen.jpg new file mode 100644 index 000000000..7d2f10e5f Binary files /dev/null and b/user/.config/suckless/slock/lockscreen.jpg differ diff --git a/user/.config/suckless/slock/lockscreen.png b/user/.config/suckless/slock/lockscreen.png deleted file mode 100644 index 11143e954..000000000 Binary files a/user/.config/suckless/slock/lockscreen.png and /dev/null differ