From 0669800f5ed264a181d1649bc856bf1275077ca3 Mon Sep 17 00:00:00 2001 From: coast Date: Mon, 21 Jul 2025 12:57:44 +0330 Subject: [PATCH] suicide --- config/nvim/init.lua | 49 ++++++++++++++-------------- local/bin/abr-kill | 3 ++ local/bin/abr-listen | 21 ++++++++++++ local/bin/brwmenu | 47 ++++++++++++++++++--------- local/bin/cotray | Bin 29080 -> 26904 bytes local/bin/httpx | 8 +++++ local/bin/mpdscrobble | 33 +++++++++++++++++++ local/bin/pip | 8 +++++ local/bin/pip3 | 8 +++++ local/bin/pip3.13 | 8 +++++ local/bin/radio | 30 ++++++++++++++++++ local/bin/resmacs | 2 +- local/bin/sb-battery | 44 ++++++++++++-------------- local/bin/sb-memory | 6 ++-- local/bin/screenie | 72 ++++++++++++++++++++++++++++++++++++++++++ local/bin/shishi.sh | 38 ++++++++++++++++++++++ local/bin/stfu | 31 ++++++++++++++++++ 17 files changed, 341 insertions(+), 67 deletions(-) create mode 100755 local/bin/abr-kill create mode 100755 local/bin/abr-listen create mode 100755 local/bin/httpx create mode 100755 local/bin/mpdscrobble create mode 100755 local/bin/pip create mode 100755 local/bin/pip3 create mode 100755 local/bin/pip3.13 create mode 100755 local/bin/radio create mode 100755 local/bin/screenie create mode 100755 local/bin/shishi.sh create mode 100755 local/bin/stfu diff --git a/config/nvim/init.lua b/config/nvim/init.lua index e815982..95a787d 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -57,37 +57,37 @@ vim.opt.writebackup = false vim.opt.lazyredraw = true vim.opt.smoothscroll = true -vim.api.nvim_set_hl(0, "Normal", { fg = "#d77189", bg = "NONE", ctermfg = 168, ctermbg = "NONE" }) -vim.api.nvim_set_hl(0, "NormalNC", { fg = "#c7607a", bg = "NONE", ctermfg = 168, ctermbg = "NONE" }) -vim.api.nvim_set_hl(0, "LineNr", { fg = "#914659", bg = "NONE", ctermfg = 131, ctermbg = "NONE" }) -vim.api.nvim_set_hl(0, "CursorLine", { bg = "#1a0a0e", fg = "NONE", ctermbg = 233, ctermfg = "NONE" }) -vim.api.nvim_set_hl(0, "VertSplit", { fg = "#351f26", bg = "NONE", ctermfg = 59, ctermbg = "NONE" }) +vim.api.nvim_set_hl(0, "Normal", { fg = "#5B469A", bg = "NONE", ctermfg = 61, ctermbg = "NONE" }) +vim.api.nvim_set_hl(0, "NormalNC", { fg = "#6c55b4", bg = "NONE", ctermfg = 63, ctermbg = "NONE" }) +vim.api.nvim_set_hl(0, "LineNr", { fg = "#3f2b75", bg = "NONE", ctermfg = 60, ctermbg = "NONE" }) +vim.api.nvim_set_hl(0, "CursorLine", { bg = "#2a1f4d", fg = "NONE", blend = 30 }) +vim.api.nvim_set_hl(0, "VertSplit", { fg = "#2a1f4d", bg = "NONE", ctermfg = 238, ctermbg = "NONE" }) vim.api.nvim_set_hl(0, "StatusLine", { - fg = "#d77189", - bg = "#2a151b", - ctermfg = 168, - ctermbg = 235, + fg = "#5B469A", + bg = "#1f1832", + ctermfg = 61, + ctermbg = 234, }) vim.api.nvim_set_hl(0, "StatusLineMode", { - fg = "#ffd1dc", - bg = "#5c2f3d", + fg = "#e0d4f7", + bg = "#3b2a6d", bold = true, - ctermfg = 217, - ctermbg = 131, + ctermfg = 189, + ctermbg = 60, }) -vim.api.nvim_set_hl(0, "Visual", { bg = "#4c2934", fg = "NONE", ctermbg = 95, ctermfg = "NONE" }) -vim.api.nvim_set_hl(0, "VisualNOS", { bg = "#4c2934", fg = "NONE", ctermbg = 95, ctermbg = "NONE" }) -vim.api.nvim_set_hl(0, "VisualSB", { bg = "#4c2934", fg = "NONE", ctermbg = 95, ctermfg = "NONE" }) -vim.api.nvim_set_hl(0, "Search", { fg = "#d77189", bg = "#1a0a0e", ctermfg = 168, ctermbg = 233 }) -vim.api.nvim_set_hl(0, "IncSearch", { fg = "#ff9fb2", bg = "#1a0a0e", ctermfg = 217, ctermbg = 233 }) -vim.api.nvim_set_hl(0, "Pmenu", { fg = "#d77189", bg = "NONE", ctermfg = 168, ctermbg = "NONE" }) -vim.api.nvim_set_hl(0, "PmenuSel", { fg = "#000000", bg = "#d77189", ctermfg = 0, ctermbg = 168 }) -vim.api.nvim_set_hl(0, "WildMenu", { fg = "#d77189", bg = "NONE", ctermfg = 168, ctermbg = "NONE" }) -vim.api.nvim_set_hl(0, "Folded", { fg = "#a45b6d", bg = "NONE", ctermfg = 131, ctermbg = "NONE" }) -vim.api.nvim_set_hl(0, "SignColumn", { fg = "#ff8ca3", bg = "NONE", ctermfg = 210, ctermbg = "NONE" }) +vim.api.nvim_set_hl(0, "Visual", { bg = "#342562", fg = "NONE", ctermbg = 60, ctermfg = "NONE" }) +vim.api.nvim_set_hl(0, "VisualNOS", { bg = "#342562", fg = "NONE", ctermbg = 60, ctermbg = "NONE" }) +vim.api.nvim_set_hl(0, "VisualSB", { bg = "#342562", fg = "NONE", ctermbg = 60, ctermfg = "NONE" }) +vim.api.nvim_set_hl(0, "Search", { fg = "#5B469A", bg = "#1c1533", ctermfg = 61, ctermbg = 234 }) +vim.api.nvim_set_hl(0, "IncSearch", { fg = "#b6a3f5", bg = "#1c1533", ctermfg = 183, ctermbg = 234 }) +vim.api.nvim_set_hl(0, "Pmenu", { fg = "#5B469A", bg = "NONE", ctermfg = 61, ctermbg = "NONE" }) +vim.api.nvim_set_hl(0, "PmenuSel", { fg = "#000000", bg = "#5B469A", ctermfg = 0, ctermbg = 61 }) +vim.api.nvim_set_hl(0, "WildMenu", { fg = "#5B469A", bg = "NONE", ctermfg = 61, ctermbg = "NONE" }) +vim.api.nvim_set_hl(0, "Folded", { fg = "#7a66b1", bg = "NONE", ctermfg = 103, ctermbg = "NONE" }) +vim.api.nvim_set_hl(0, "SignColumn", { fg = "#bca4f4", bg = "NONE", ctermfg = 183, ctermbg = "NONE" }) local mode_names = { n = "NRM", @@ -128,6 +128,8 @@ map("n", "v", ":Ex") map("", "j", "gj") map("", "k", "gk") +vim.keymap.set({ "n", "v" }, "cd", vim.cmd.Ex) + vim.keymap.set({ "n", "v" }, "d", '"_d', { desc = "Delete without yanking" }) vim.keymap.set("n", "bn", ":bnext", { desc = "Next buffer" }) vim.keymap.set("n", "bp", ":bprevious", { desc = "Previous buffer" }) @@ -163,3 +165,4 @@ require('colorizer').setup { css = { names = true }, html = { names = true }, } + diff --git a/local/bin/abr-kill b/local/bin/abr-kill new file mode 100755 index 0000000..9858050 --- /dev/null +++ b/local/bin/abr-kill @@ -0,0 +1,3 @@ +#!/bin/sh +cat "$HOME/.abrpid" | xargs kill +rm "$HOME/.abrpid" diff --git a/local/bin/abr-listen b/local/bin/abr-listen new file mode 100755 index 0000000..cddbe27 --- /dev/null +++ b/local/bin/abr-listen @@ -0,0 +1,21 @@ +#!/bin/sh +SCRIPT="$HOME/.local/share/notify-send.lua" +PID="$HOME/.abrpid" + +#pick your audio quality (uncomment one to use it) + +# 128kbps Opus +URL=https://radio.animebits.moe/stream/stream128.ogg +# 256kbps Opus +#URL=https://radio.animebits.moe/stream/stream256.ogg +# ~148kbps VBR AAC +#URL=https://radio.animebits.moe/stream/stream128.aac +# ~192kbps VBR MP3 +#URL=https://radio.animebits.moe/stream/stream192.mp3 +# Lossless FLAC +#URL=https://radio.animebits.moe/stream/stream.flac + +[ -f "$PID" ] && { notify-send 'Already running'; exit 1; } +[ "$URL" = "" ] && notify-send "Please edit the script to choose the quality of audio you would like." +echo $$ > "$PID" +exec mpv --script="$SCRIPT" --no-terminal "$URL" 2>/dev/null diff --git a/local/bin/brwmenu b/local/bin/brwmenu index b7b1818..895b113 100755 --- a/local/bin/brwmenu +++ b/local/bin/brwmenu @@ -2,8 +2,8 @@ #inspired by 'firemenu' by on github # BRWMENU: set -e -DMENU_OPTS="-i -fn monospace:size=12 -nb #151515 -nf #bbbbbb -sb #663300 -sf #eeeeee" -BROWSER="brave-bin" +DMENU_OPTS="-i -fn DepartureMono:size=10 -nb #151515 -nf #bbbbbb -sb #884757 -sf #eeeeee" +BROWSER="mullvad-browser-bin" SWALLOW="" NOTIFIER="notify-send" for cmd in dmenu "$BROWSER"; do @@ -12,15 +12,15 @@ for cmd in dmenu "$BROWSER"; do exit 1 fi done -CHOICES="YouTube\nGithub\nCodeberg\nIPLeak\nQwant\nDuckDuckGo\nURL" +CHOICES="Startpage\nURL\nIncognito URL\nYouTube\nGithub\nCodeberg\ncoasteen.github.io\nIPLeak\nSafebooru\nWikipedia" PROMPT="Where to?" open_url() { if [ -z "$1" ]; then $NOTIFIER "Error" "No URL specified" 2>/dev/null || echo "Error: No URL specified" >&2 exit 1 fi - - if ! $SWALLOW "$BROWSER" "$1" >/dev/null 2>&1; then + + if ! $SWALLOW $BROWSER "$1" >/dev/null 2>&1; then $NOTIFIER "Error" "Failed to open browser with URL: $1" 2>/dev/null || \ echo "Error: Failed to open browser with URL: $1" >&2 exit 1 @@ -30,17 +30,16 @@ get_input() { prompt="$1" prefix="$2" input=$(printf '' | dmenu $DMENU_OPTS -p "$prompt" 2>/dev/null) - + if [ -z "$input" ]; then $NOTIFIER "Error" "No input provided" 2>/dev/null || echo "Error: No input provided" >&2 exit 1 fi - + input=$(printf "%s" "$input" | sed 's/ /%20/g') echo "${prefix}${input}" } CHOICE=$(printf "$CHOICES" | dmenu $DMENU_OPTS -p "$PROMPT" 2>/dev/null) - case "$CHOICE" in Github) url=$(get_input "Username & repo:" "https://github.com/") @@ -53,27 +52,45 @@ case "$CHOICE" in IPLeak) open_url "https://ipleak.net" ;; - Qwant) - query=$(get_input "Search Qwant:" "") - open_url "https://qwant.com/search?q=$query" + Startpage) + query=$(get_input "Search Startpage:" "") + open_url "https://www.startpage.com/do/search?q=" ;; - DuckDuckGo) - query=$(get_input "Search DuckDuckGo:" "") - open_url "https://duckduckgo.com/?q=$query" + Wikipedia) + query=$(get_input "Search Wikipedia:" "") + open_url "https://en.wikipedia.org/wiki/Special:Search?search=$query" ;; URL) url=$(get_input "Enter URL:" "") - # add https:// if missing case "$url" in http://*|https://*) ;; *) url="https://$url" ;; esac open_url "$url" ;; + Incognito\ URL) + url=$(get_input "Enter incognito URL:" "") + case "$url" in + http://*|https://*) ;; + *) url="https://$url" ;; + esac + if ! $SWALLOW brave-bin --incognito "$url" >/dev/null 2>&1; then + $NOTIFIER "Error" "Failed to open incognito window" 2>/dev/null || \ + echo "Error: Failed to open incognito window" >&2 + exit 1 + fi + ;; YouTube) query=$(get_input "Search YouTube:" "") open_url "https://youtube.com/results?search_query=$query" ;; + Safebooru) + query=$(get_input "Search Safebooru:" "") + open_url "https://safebooru.org/index.php?page=post&s=list&tags=$query" + ;; + coasteen.github.io) + open_url "https://coasteen.github.io/www/" + ;; *) $NOTIFIER "Error" "Invalid selection: $CHOICE" 2>/dev/null || \ echo "Error: Invalid selection: $CHOICE" >&2 diff --git a/local/bin/cotray b/local/bin/cotray index 97bcb321b908e2915d903c23448eea6dfdd77ce2..d9802c7606bd8d19b69a3c40ea0792b8df24e7b3 100755 GIT binary patch literal 26904 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%0DYmJN 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 literal 29080 zcmeHw4SZD9weOk93>ib12?{of)dL;mLyeh`Kmwu(B;kw<5J|vPz{!wI$h1i&Z*l^G z+7eCRF&&~*t)*(Ov|8=$$E(-tRW4NVvScY&DufMR!YSpVVrNKP0F*1G ziW8rza*;9yxQ)?xeK`lHXF|XgYDj6PS#$YVvfCxLSV54@s zmT>-EYm%W#3@8%H=42!N)rj#-h2^NDQqDdVCAHlS(JmFb1;2!(g9<_V`_N0+iBM(K z#PBBOtoCiaiQ1*wC-HL8PC{vCjcBJW;afMqe|c+Y?d;;qTbnLx4YhZ5U)EhZ`?A@^1)br7BGzse+LAoh?_H%0 z9>s4V+HCxl;_tzCo9ZTf|XBEUyf|?O>+MA*b5VP z=8BOj{a~4{>_k)j(;@X;J-72J$eTF^D@}; zl??RHGwA(p2Kkj4#$izgIn^2D9LmtIr!(;TGVuQ_1OKfV=(98U=f7s?*Vi)W9m>G} zVFtaJc16WsYKdi#?+0T#|JjpaoOfjCS1iN4e-ZN4RAYeOgTHioF9lu2Uutz4SNf|205P^TV@)Gb-q8g38P1=h9(6~BL7Te#idsRtsu-_KdoGS)Ba2)0*-Iy+he z8rCM2(DZyRlTO;<3ov5vU>*DbBpXSaqM1FgYIPt|%5YW1Q*zh7^Ogg5wG zgYE0|7Jo1j2}f!cH*)r}wSmr1qdyex^fuP&9#3OSAmY~}fshVDRaHr2YcLS0LQRq1 z8}6h(J)o1Sx|JXni`LDZdL$TVODlrwDTM|F@rT+w zF+$$9s;cF+;X2F*b=xzGo6;O=4X*8KPHPD|gHdGamoBc=OB(f!9YOT6v?=W05NZmx zSJ9xbj+Jm}yjz*%oxWx<8|EXZdKq;k9fA>il(u z{;JwJ{^b~yIevd*celsmDN1xF)V|JJTkNkb@z;6$RaLlzdpC9m{A=O)?f%Aq-q?~d zEvL4$xDif;RxoF_^tQEuCP?el$qQjhV*VHM`9IAmE5>SQuY$KyPnieO5^D=Lkqg4P zJ<_fG2=XF<$VPZah;;hbb$9!*k~+iff!2_|(Z9Zsx4c+k??a7i<5 z3<<{5S%QhpptaKr*(tu1t_O{EaH0~}Pb;E*16!#WyHo5ItfQx5DyA8#s(~G878!h! z3pt%xTFCb}xKaj3PcvP7;m|hHi1nfetCqJ>=l%{Eo0*}N_4tl6F+*mXV z)e$`mAEOn}C~i`1fe>-fx^5290@xH(+JbG39UG~6V_Sy;=6a8Z4nec&x>IjzyyTJu z+LpLl*9e(}d5Eo%(-$pV=$}8;9H!0k$oG8T|pSr{il!gFyx%wp7Wz{lbrud(2H4%Z<+d22dHT9k9M74}#|g(Wo? zZyc*2J}Cf=3TbnT`Uc>;zjX&95~ng-&?baJ;}lp`A@JK-eYUb#;14r=jIvVTUFU~z zG`1-L;8du0pFyHLmoGT}9Yj>QN}J&SZww!++#v7(!*i6Fz&F0|bJ*)p?i6@*^9;1N zD-Q_#rJsKl5nYz@Zvxk6+=@pIR%HM<75UsoK8F~hz!PPMi034|N6;HY946@!Z%Lv5 zXE_t2>=f}L!aJoHfBBrO3{b$0g05rqM$0oMx^tAQ44LRNO!NaL`sF72u!-(5(L02l zWY07cUB`=Q==5ws78%zPy-X4TW&BF?c_zAy%ZX0UDrAvyInil+WRY<; z(dS4app1iweuarH<9MQ%nCMCaM`*gK&$2ig_!ZINFo}}az%Pj|V{@Y9H_)d7Z{^Q` z7=jPAfnO1wbjvcmfnO1w=2(`(27X0!`je%!fnO0#`W8{j8|ahsibs(Q*BTgLGOz#= zrKW*jlAPQG74u@EW5Fg$gNg1+P!*-cM3-xmsyj^d@k9`%yMbSjUh{db$3#Dev#`%? zCi(;ueTRuY(L~>AqMvJ`?=sQ9V50xXM3-xhsvk7b#iL{*E4xkf^BIMI44CMXO!Q|= z^b1V%Arqa>ys{i<;8!$07fK@Fa05q(ei6T9pGE^mh_3QW_Ib2{BSfFfFWKku296MY z3cuu^fl>OGOmv5d?l#f$O!SLQ^n4S2x{0ou=rc|9=_dLmCVHWXF1A!wTWX?TX5ue5 z(F;s;%|tIW(Q8cfA`|`0<(UyUGXiHu;LHe|8G-+wM&JY2g&%9Ze{yIs`?FUmine7y zw~h>Hy-zs?*)WWhJO}c~)aUW(x~Lpigtt&#e0T(9>R!Svgby)%58)It#|Iex5aC&b zKgjSO6OOk4N_-c?e?T~e#_=5tzmsqZiQ_#Czm;$bTjCuI|0dxS0>>K|eiPwzM2goi zd=udm3dhSC9wB@z;e`zU3gHy`##M%|C7eRucpk&ABb<&_afRW_38&CEe)Mw?rd~}r zg}m`$hA$wTLf!Zf!{-uCA#Qwt;YEa>L->OXpGi1{wDDaGpF%i=vhf`ZKc8?4VdFgv zKbvq0UE>`L&mo*b)_4QMt%Osk8n0pa$5#TU5H()T@b?L)&@^7i@I!=CNE%le{wCoR zipKL8{yV}iBwS(mi-cc9_|ea(|IZPw5kMdB!`q^2VwSEjG@L_c*?&?yk|IK3k1vK#Nwo>$TVoZim)ypN12&7VUG_VEGvD ze>yVaiykrVWIFoX^;korYG#s}Uos7;RXJM!YImXWK6-2P)5kV^fL)6Y8jrKfBSsLy z4}V{a?l*pdD`O=D#eWMY*ZN_JF^Ab(MfMiMBwzGWw-(K{!NM&#TWkG~xsPK!$Wnra z1`%4U&+SOEa6Vc1MY0fDsz}RGD380aG&FSUUb5tbM&qcFfhyxAYVj+4G`qr;?mR8l z>Q;TxceJPtw&2<|161SdSSVVo&OIF?Gl9?2d0OlWw{ah2G;6N*!Dg?k{a4Md)+Y}? zX>2A#p%?cstfFEd|v_AI1Z?o%rB@)3w-Yx9Tl>&9!ANmS}tp^(8ic8y+lqUWCpo zq0<-plJUS_sd=lr9OLhc9wb+x@0V!3H@G#$wdLDv66Rkco8_XJ(MfGMJ9IV}_fiAw z3*}mWC3cIl{jR<;+%;*pY0&z0cZXJX)YaEPBy1t&L~o&$fQ_Zntr6NmS2fy}5m(t}^vnJW> zA~Z9$QXA7`Kf)ZzG}-!BQYJbV{&vcV)*G~F@+2PlEL6 z-t|Ubz>Vxpt@o{?HFZ@UHbL{h1(uPCgR}7E&E^8vMSU1iW?lfQaqGX1K-qD9B8~?4 zgNcp?XN?TIF6tq^K>^Vn592SHNnpn3TJ)&)6*1d>zzLnobboD^>J85PZZ(8 zIa99NhgIp&qFHQ5qW~zn5P#44qWg^c56IuRy2G~^{|q!Cua=DO{Sz#KMdgMTdo24X z4IteGREX}`T&n2jyPnvvknWdPz7I*gPeJhhRq;On*+CnK!`R9+;OYrFIBES8?KmKD zk%d~>kUlsvv`6@e*j}VQVZ2u6Ltd;ovd~v2>OKXV1<~y2J(pg zxQ0xnhEYwQm$K{9ny)CvZ{A~O6>h=8S(w)~kM1Xh+LmLwhYiR_8g?OvVIkvDgHd`z z>z^>jpz{sgG7F7^s5*Qe%|A8hpZG8fI^WQuuNafWj%SMN$6^RHEqY*8#r1>6Dm3** z_r;H62wWE-bagDE1j9o{0Tz4x7@HQ~wu!3%U&GY-iH72|M zmP;*muGTx?!1iy^qBY00Xq98$YPYR(nii`$emVy+`)|Qc29j6#0EK z*2jo$H!dazfJvqWl!Hl{u0@SiYX*%+VK{Ai8!=ZV<7mDsuB8EzF*9b59zAHWFK&m^ zVKwtH@*!-dq`FWTgGc*Q7HuwnZ05!{$!C2R5efdWWug`07l zBsI;^+uems{x~0MUE}-Qr9cU4L>5OmcJ$ld=bjE4mC^Gbt%iCcd1K!|balj7LOtuZ zAA|x5JsVgEhad@Kiq7+sp$|(m&$ySYihfSCne0E~vHen7(IJOs@)X^kL zO~f1|CeBz)!g2OXKAuOg+{yEN#flhk zc(HWiKgDjv?vJqzYVWUX#^dOC{0iE_aL<@dj|b=r>hUe07~dyLuqtk4QU~Mr3)l@9 zACGB^e}tW(Rw=kIRGq+eYP|Xi;1?jt!%|9nWL1GB7yD z(K8aTp7UCx)9VTLbT~HQ<6S40|`2eX&MFt&_ZE zuj-3UL$X7QL04=RIXgS>97;Oy{Ex#>Lk44qw&NKh9V4zLMTmAGs_RL($rNe!2d;0} ztAx*x*{EBIfuN@n&(H%2*9@E6c>WM|3lHh~)vZuA&-Y_V>3pQL?sy05>+8Vb@$&vgp0Abd)vwa#IlA7j^1P*O`8`&C^v`sYpYghJH|rpl%xLe{ z;?7W7869T5yMB<{rIj7hFQE+s_rM5LSYd`1g$1;{vDe`VlA++tSwTNgQ4W8Xxf7YX ziXF0v5upV)_3)rk1-0=A4aEcaFgXmxTgFEixIOfU7jE%O2Z8y;*gbGYZ80uk2HV}V zn?zs7o%?*c>YslOfvg%M$-kDyA?S--P?QA0zYc+hTlkl7gJJtGlQ(|?&{gqo0O9>L z1{s_EF}CZGo`>kFfBsJhr0O|nK+ic`&s9RtO%QPS4l$c5)<3^j(okW%KEsiZpZ6)^ z!YsSJWgoiw`bkC<5%V8?(P7^VoG1=Cv?mW`X}xDjebJ!6{#ivzw`l4@o%Pw{6 zjb4Nzn3KI)*>rs+n{j@9HJ|-`dYPy!)A}_qK7+tlE1QAmI^-Rk_d>0|0&y#3g!1(9 zK=QS+eO>zzx-4dKU)fRp11WCWXvnX{;9hY(TZ=X9Zrk*9KPY3anQH`BbO4HQ23}Kdc;0I$m^p|$G?qbM0PO$c);Wz_h7%q zv`oOp!2Dw@6KJ;q=l=0A_6RV1Kp=JA3f{rIseIm^6Z7^QXz-6L?qJ4GIQk)`eO3H= z2p9fwFQePPo>GbS72tD+U01iEi436$M)-4kneidKM0@h%ENlX%!E2!ajae&>e_)VEV&;etb z#N6>#>SZK8csZFNHK@&zaGOd4l#{cfGq5f=H%CI~rrcCzUxBS}@S zfH7C9wWG2HWqM1nTMaeM7-eVrIlD$Jc`q`ui?JeOm~`|nb(j(+(|8K2naO;dPPCW} zD`#9tKbcDr2$cE7sLeD3LNGHz2ZzdtZNW|&w;b~_Q6s^&@On4}8(p)LQQzTXq9lA1 zzaAlfXoBOVc8>WbvlrFUuGIFd6Rh6sKB?@Zp0=X>tL-oZGu_q(-!D*CbOzOFV&17+ z)70j0MD3!U733(ENm=t=g-*QvR1Um4GD5$@-2KML$nAiS15Utk>`lO`9NMN^z+30oDT!0MfZP7xI6EX90bH1|FY%N)S&kS3~aZ4@X9B0CeC@$FBho0G5(m zzy`F>$J-+vkjexO6w9XNilsZxGATFPu>-tB$E#gsC!$51R~4l)n>}!J;}VZ4m4V-L zTNGzrwKM-}*Vqk?9_6a@=gpkuohh@$g=l@C^GYb3za3^SYgZ3=Ze9pXEtP7m^H)kzy zs{OVF>9j70$w~V=A1bz1fw{a_gNr&Qee+oYTPpPV|b~isPk{4_Rc-ctG1D7%7bD zR;!Qqx!n3L?;FNn^i2cbA^1A$8~xzhS>Btq)vDA$7CqK(f`3j%mu;I-2TiwF;R5Mx zL+|Zbo2;;|@&xND>C0Ox{&qv=J<#_cu5FE^Z{tsjb;9LJDQAvpDd&HAD|QP6Z=-%cJdYS*B*>x zA0Foo;hOup^#(Z0VzQCe*{{*Q80(z&2OAw_G2Yv)(6W{E_u4S|S%v7Qy3m=AX=Rg6 za%q2fP0r!BNN;(sZEMzch+}$>qyADn&P}J+2Ob~leXyJIA=tjm^`68B7dwY6){(Ts zT`^XLyt^SU0(-XM+O~x38M2ti8f1Je&*G}Xpnuz9f7zluXu;YB$wnzI0LLu8#}c(B zD8zqPiDl*!7W;o6qZk%Dwt^2V9=ysPwzk|oM!C&q|IQf8>vlURN9}e{pp=)9yT)72 zS_7$@>{0q19F>u~F0;6Av)I3FQy#Y1e{56sS&F`AQ+{SW?;)EqVzvL!X4z`9gCe9b z8OtD}kIWP@Ml5+#f&Ic_KWb5iEcU||W^M^+=s?Z|fLpBgr$##gYWa*|%*n%9`A_94 zM%J5_hjW!jQ2J|f^g0bddDpn%5&95Y#A*uvx(M0&W%X4gv2M@DTy`3HXYD2L(JP;Fu{wzknADI9tGK0apsxEZ}+p zw+eWNfcFddh=BV9d__R6O;P0UzyGsbQaD7$fw}5*+kVi0^k&naqK5Qx?y| zG|zPYIE(FkNeq|nn z9#Ih{I`})p_(*@ql>ZE;hqQX1C%V;{xIat1FJ|CBLV973%)g+D2Gi{6<$hn1O!<=u_agsrkt|gq&SM4n0GlvL%C@mqDkzWxE?WpB$g3a6#)r=AXToS1Z2* zKlMxIkEjv!voW9P=4)jJI(?Ts9sk!e&>sbz`r9DZJA2Lo-S1}LcVwrRe-6>Dh;CG2 zxB%yYPJWfTPN!y&b7Kbjzht1>#CR4KaE0_di^^n1=hx=XX&LB?K~I-wE|7u$A;y2c z(vsr;Pk>JQQtH0(9~tBvVEmJmXM~?fTVKn-e>4Mq90I#^^R8u}uVD0XN)3J(K}GJj z&4ONtFCtU<3kS+3(DO`r_yk$m3Of0%%x}^oDjsKYB-bc>O7P3PC(_S9&A>k!0d%^4 zt<6CHdItLUGSJ@!T^%(qabjiA#!%DgjD*S|CQh`UO;UV8pU389faF$` zU#=K$yjs)c-%FP>Es^!@f18AY#&ByB4Dpm86`*)G=Wh?R1s9aCynbzM$sBsPL%zXV zpQtIK7ms+q$KF4Ul4os*px2VV9QhDu^Ot_!HsnY{a>ayzV!Yh+>tV?{s<(KgS)4NddFY+y0P~r10tFErai_N-<1->et z&rxK{D`y$Tc&adwSFOmulD(T`$t0z%BB>;$_d7+3x)h0?Qx1brdm2dtWqQd}6&`w< zDdvT8&3Ot#oqqA^6L_#Gpa+DO(@o}=q+&F=Xd-#&i76M8S|nG~;3Zdkmm!Z_6VgF; zbq1T1dQ*nc)Krn>qv_dF^38FHNDfCC-+0ctBoa?i$5MBupVCt%Fip1E-_!{g#j8h3 z*!njl@l29Zd2K-?*j$hydnA%CrpZ5Q7Jw9WG`5KxjpjOqQt^dO%+tqtD2rY(8E(pl zdeYp1NutfUX34=iBB6HOPp@6qi@bjcElA4;6Emkj<$H~JCt+PWt+bh$vvnp}8wrOg zOQJa&YUpIyP?H+dw)}Ubu}qPHl$I$JmXOxu&SEN0tKXD}GDRE`N~Y|mo;fFcnZkSZ z^2OL`tJYU`ETcrWDXAX0NO(rEIae^t6AE6WDE3z^t)zs+BJrw7Kl;Cxtkm2OJ_crA zIU!wX5N;63$5<;Hr{wMMy%Msv-juWY8&63zCu>_qdRLs;V?ir`b zSehhI^Hx??E%jG>eaK|$r@fu$ZrofO_a_Bj$Tj>P;TDukGv~{uKdIeG&3SiEk&3a_)4N=RIxmc5)h)$U0eA(jED4 zxlMV}hR3ijDQ_=VMt6UlhzdG4w&{VjfXL~~V2ixMR|SIw>)N{tI%I@x2VED=yI=h~Nu? zT%x=tsbm5aFmnTKp+-nUs6ZbD%o?s48=MO$02T~9hJ{{0BOx5FbLJUiz_{{K1> zmJ7NBcx;kX=y8#`{SI;dme8HVed2cqDo{^HVW~gU|L-Klh-0%v6)&#vHMFp7KP2=^ z=o6fHEXYc#{k5Rt5kf-0eBUVHZqX2r@tB>my?p+;3UpE_^~?8{63X|LU|}WI{zg#g z-JonQ-v>&#NwkypOFjuZP*3j~C9aBx9uhL6!9(_wozi|>va%VUcodwlU%u~@a99{D z^~?6M|54F?0h5Lg`65<8`M#Cf(>vqT_Vm7oRFHkFsL4>iR~A%etGp(7Gycr&Rh6iU zBH@4>7*58sH(n(CE>LrO`JPL{8M33IUAce~+=B~qd-;A`LOk(FDm2#S@)}RsSzi+E1_Kj1q27X&~oMihVkz{lglsk?=|~ z&QwywDZfFTdH+cLf5KE#Te?hb|2Ak&{K;XG-$#)DA6Kfq5|{8jw8h(|M0@#tg&m7Q zM3H9QTi6eS0Z<=P~geD5g#UpG~>m+M2em;QSW z+MD&ueBcAixQ6Lck$|$jg!Elbb9?!H2}87}@0Xg3Y$xI5l=kv@ef>4Om1=H`YuQec zr=dO3i!|SV}>azn53OTzud&1)" - printf "%s%s%d%%" "$status" "$warn" "$capacity"; unset warn -done && printf "\\n" -} - -case $(uname) in - Linux) _linux ;; - *BSD) _bsd ;; -esac +print() diff --git a/local/bin/sb-memory b/local/bin/sb-memory index b6656df..282d6f7 100755 --- a/local/bin/sb-memory +++ b/local/bin/sb-memory @@ -16,10 +16,8 @@ _freebsd() { } _linux() { - TOTAL="$(free -h | awk '/^Mem:/ {print $2}')" - MUSED="$(free -h | awk '/^Mem:/ {print $3}')" - printf "$MUSED" | grep "[0-9]{4}" > /dev/null && FUSED="$(printf "$MUSED" | cut -c -2 | sed 's/./.&/2')G" || FUSED=$MUSED - printf "$FUSED/$TOTAL\n" | sed 's/Gi/GB/g' | sed 's/Mi/MB/g' + MUSED="$(free -m | awk '/^Mem:/ {print $3}')" + echo "$MUSED" } case $(uname) in diff --git a/local/bin/screenie b/local/bin/screenie new file mode 100755 index 0000000..cc8c43a --- /dev/null +++ b/local/bin/screenie @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +set -euo pipefail +export DISPLAY="${DISPLAY:-:0}" + +# Dependencies check +for cmd in xclip import notify-send; do command -v "$cmd" &>/dev/null || { echo "Missing: $cmd" >&2; exit 1; }; done + +OUTDIR="${2:-$HOME/files/pics/screenies}"; mkdir -p "$OUTDIR" +FILE="$OUTDIR/$(date +%Y%m%d_%H%M%S).png" +TMP=$(mktemp --suffix=.png); trap 'rm -f "$TMP"' EXIT + +show_help(){ + cat </dev/null || { echo "Missing: magick" >&2; exit 1; } + # Watermark subsystem (env overrides supported) + magick "$FILE" \ + -gravity "${WATERMARK_POS:-southeast}" \ + -pointsize "${WATERMARK_SIZE:-28}" \ + -fill white -undercolor "${WATERMARK_BG:-#00000080}" \ + -annotate +20+20 "${WATERMARK_TEXT:-$(date '+%Y-%m-%d %H:%M')}" \ + "$FILE" + } + xclip -selection clipboard -t image/png -i "$FILE" && notify-send -i "$FILE" "Screenshot: $(basename "$FILE")" +} + +colorpicker(){ + command -v magick &>/dev/null || { notify-send "Missing: magick"; exit 1; } + if command -v slop &>/dev/null; then + import -window root -crop "$(slop --tolerance=0 || exit 1)" "$TMP" + else + import "$TMP" + fi + hex=$(magick "$TMP" -scale 1x1\! -format "#%[hex:p{0,0}]" info: 2>/dev/null || echo "#??????") + echo "$hex" | xclip -selection clipboard -i && notify-send -i "$TMP" "Color: $hex" +} + +capture_full(){ + import -window root "$FILE" && post +} + +capture_window(){ + command -v xdotool &>/dev/null || { echo "Missing: xdotool" >&2; exit 1; } + import -window "$(xdotool getwindowfocus -f)" "$FILE" && post +} + +capture_selection(){ + import "$FILE" && post +} + +main(){ + case "${1:-}" in + -h|--help) show_help ;; + color*) colorpicker ;; + full) capture_full ;; + window) capture_window ;; + *) capture_selection ;; + esac +} + +main "$@" diff --git a/local/bin/shishi.sh b/local/bin/shishi.sh new file mode 100755 index 0000000..2ec0b5d --- /dev/null +++ b/local/bin/shishi.sh @@ -0,0 +1,38 @@ +#!/bin/bash +hyprctl monitors > /dev/null || { echo "Hyprland IPC not available"; exit 1; } + +focused_win_id=$(hyprctl activewindow -j | jq -r '.id') + +new_win_id=$1 + +if [ -z "$focused_win_id" ] || [ -z "$new_win_id" ]; then + echo "Missing window IDs" + exit 1 +fi + +# Get all windows on current workspace +workspace_id=$(hyprctl activewindow -j | jq -r '.workspace.id') + +windows=($(hyprctl clients -j | jq -r --arg ws "$workspace_id" '.[] | select(.workspace.id==$ws) | .id')) + +# Find focused window index +idx=-1 +for i in "${!windows[@]}"; do + if [[ "${windows[$i]}" == "$focused_win_id" ]]; then + idx=$i + break + fi +done + +# If focused window not found, just bail +if [[ $idx -eq -1 ]]; then + exit 0 +fi + +# Move new window right after focused window in stack order +# Hyprland doesn’t support direct stack manipulation via IPC yet, +# but you can focus new window and then focus focused_win again +# to simulate the "attach aside" effect in focus order. + +hyprctl dispatch focuswindow "$new_win_id" +hyprctl dispatch focuswindow "$focused_win_id" diff --git a/local/bin/stfu b/local/bin/stfu new file mode 100755 index 0000000..cdc8ccc --- /dev/null +++ b/local/bin/stfu @@ -0,0 +1,31 @@ +#!/bin/sh +RED=$(printf "\033[1;31m") +NORMAL=$(printf "\033[0m") + +colors1() { + for i in 0 1 2 3 4 5 6 7; do + printf "\033[4${i}m \033[0m" + done +} + +colors2() { + for i in 0 1 2 3 4 5 6 7; do + printf "\033[10${i}m \033[0m" + done +} + +cat <