From 36f695317db31b6458cda175ebba0b121c73d536 Mon Sep 17 00:00:00 2001 From: OCbwoy3 Date: Mon, 24 Mar 2025 18:18:00 +0200 Subject: [PATCH] added r2 <3 --- bun.lockb | Bin 16016 -> 16741 bytes config/hypr/config/autoexec.conf | 2 +- config/hypr/config/keybindings/other.conf | 2 +- package.json | 2 + ...3-dotfiles-SECRET-DO-NOT-TOUCH.env.example | 5 +++ scripts/bin/handleScreenshot.ts | 12 +++-- scripts/bin/r2Upload.ts | 41 ++++++++++++++++++ scripts/hot-reload.sh | 2 +- 8 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 scripts/bin/.ocbwoy3-dotfiles-SECRET-DO-NOT-TOUCH.env.example create mode 100644 scripts/bin/r2Upload.ts diff --git a/bun.lockb b/bun.lockb index 096a3774a3f052f09cb49c7518bffd891adec861..56afe13e4f5a26cacec2f0692a52f392b19b60b2 100755 GIT binary patch delta 2634 zcmbPG`?QI1f}Unx%(3_){wwZ#|4Oks`|Zq~ar)@rI?3AIjH_EW@+w|@an*qV474VO z%hxk$f!R<(kb$A0I3uyBfPsM_kcojoiGiWPkcojofq|hxh>3wgo`Ip^3nK%A90Nnc zH7LE4k%2*$fuUh8BLjmB14Bb2lul=4V31;9Xz*ubV31&7Xs}>pU=U|uXi#EgU=U+q zXy5_S^$ZLR-x(MfL>U+w9zp4I3=9k+3=9psp!6~*J(Yoh0p!5T91INn3=9n=#W|Tt z3=9li3=9n1Acv>smZcUkFeK;amPjcEbE}6{9WzYC&vL}~4qvPaGE_=axZUzQZ28IR!1_lNe1_lQ9 z$&AeElO32j7`IG5$z{*@eljPwJ*OrQ1A{dKLj%X;Ku&X}6rRam+;)u1CUJ)EOASsx&~N3=9m|XeI^*22iF0sn>?8 z1JNLHU8sINs5mwnq)#8J&HzdqGBDJGEjD6cU;r6p0+j$IVUSrM8l=$-#DQW^0D&;Y zfdmfZ$w|CYLnEZrhzqIBmHbDz93JoLFA{M&<>qv`FmYmo;<`T~j|C2jbbNLAH7je! zubG$a+gOcjKHgd8c+#r&nF{xO(dP|EcFBw}{F}Qfny%_Q2QB&99UJ~? z0poe6`c`J$B3T89{06AOAl_1_tHH52eB?-Zes5*I~bok^M zGQ5+&N_#V^Pj-|EXVjQHQzo2IbMr?TYbM4Cn|0;o87B)cYi#yW*uy?KKsJfX0hAUQ z7#KpdCJSj;Nd5Z{0iZOZ$-uzS0F_qJo~);-G`T}VV)6w|j(S4|1_ohJ8Oy-H04f$G z7{G-(gCqmE&<7Rtph^K$A%MzUP`S+@1Sw8IWj&~T2bI~NVii;tgEK1^r1)hpW?*0d zrDHV)1_qE5K$!@XoU%&;fakf#HhbWHl|d$pKnH;-E?bRyH#+##!hY=@~OHI8C0fC20(+6JTXI z6JwmAv7Vux0RybofR*+j88bZ-J@d&Iwfq^oCM#-7GESXrtt}}HtH9oMbll-^FKl9A zG|)3P)-z>b*flv{ThbI(;dz%cdIf&IBY=>HRf&gw==@lJ;_V`Y%=gKAwI!v&btnTv zL-m`a4?N8)k>r&of7F&_w3y7TBPk85fn}tBc0V=dzlJa+eX_ldBxB>``?`|Su=@Mz zri=;uX1}y!VKme;&;teh&dI$xl8o0TPt=uU{4)8VjwGYdu7ulV8NZz`(@Cz`)DE&=APQz`(`8(D03ufq{pCq2W3g z0|OreLxUza1A`q%qay610N>=~a<&g8OZ zG?~1T%bu}lvL?4ZoGN9&Bzb&B25{PBV4VDxS6&fh5QqSY zDuFl*;1tdP;wv*SFfdNm2X@K$-B#KcsmlZnvtC}+*Y*t~hJf;{8qCyIO6xjaD8$-ux6qcNFB%R+{M;opA<0EN0b0|P?`RDp`- zdQj{MGJp#e21!uq1u2+7r5dP&0~KNnpfW=WQf`0>DNs2ADx4UE85kIZAmt3G z@BtM>;FQk6zyQjr3<14EtuWFs9lW(Ed^$>BP|laJ_#F*;7Zts^;^ zPuGvJc5mE zd`AGG>gweCx{{`_a=c)f-HxW}*Ygqb;G&*^p`rRs(g&XAm5UHEqLX#?B&A_h!^+(W zuNF6@l_BJvCMW7iGDc0V){|r`nJjG}$v9y$qk*I}tkUskk(SNnK9tD9XsBnPXTre1 zaB}ileM!dWlmF^TO2euw=WW05UfeUk7@%t{0Czo$zVvIA?v(z&{)K5u;Dz*;X{1!}%aYlLudWH-Pfs^MN zNJ_)%t&0(>E_i;K{}im#0HpK!8gJtI)0GA!hooM$M(w2Ei)9zzKkSarskZ*%Nb;H=$DjCE#uMj(qI3b-zS5+ { + const _d = new Date(); + const windowClass = await $`hyprctl activewindow -j`.json(); + return `${windowClass.initialClass || "Hyprland"}-${_d.getTime()}`; +} + const program = new Command("handle-screenshot"); const SCREENSHOT_PATH = `/home/ocbwoy3/Pictures/Screenshots`; @@ -48,8 +54,7 @@ async function transformImage(b: Buffer): Promise { const _BUF = await $`grim -t png -l 0 -g ${selection.stdout.toString().trim()} -`.arrayBuffer(); let BUF = Buffer.from(_BUF) as Buffer; - const _d = new Date(); - const FILENAME = `${SCREENSHOT_PATH}/${_d.toISOString()}-${_d.getTime()}.png` + const FILENAME = `${SCREENSHOT_PATH}/${await getFilename()}.png`; // BUF = await transformImage(BUF); writeFileSync(FILENAME,BUF); @@ -66,8 +71,7 @@ async function transformImage(b: Buffer): Promise { const _BUF = await $`grim -t png -l 0 -o ${selection.trim()} -`.arrayBuffer(); let BUF = Buffer.from(_BUF) as Buffer; - const _d = new Date(); - const FILENAME = `${SCREENSHOT_PATH}/${_d.toISOString()}-${_d.getTime()}.png` + const FILENAME = `${SCREENSHOT_PATH}/${await getFilename()}.png`; // BUF = await transformImage(BUF); writeFileSync(FILENAME,BUF); diff --git a/scripts/bin/r2Upload.ts b/scripts/bin/r2Upload.ts new file mode 100644 index 0000000..faad17a --- /dev/null +++ b/scripts/bin/r2Upload.ts @@ -0,0 +1,41 @@ +import { $, S3Client } from "bun"; +import { configDotenv } from "dotenv"; +import { homedir } from "os"; +import { readdirSync, readFileSync, statSync } from "fs"; +import { join } from "path"; + +try { + configDotenv({ + path: `${homedir()}/.ocbwoy3-dotfiles-SECRET-DO-NOT-TOUCH.env` + }); + + const bucket = new S3Client({ + accessKeyId: process.env.S3_ACCESS_KEY, + secretAccessKey: process.env.S3_SECRET_KEY, + bucket: process.env.S3_BUCKET_NAME, + endpoint: process.env.S3_ENDPOINT_URL, + }); + + const screenshotsDir = join(homedir(), "Pictures", "Screenshots"); + const files = readdirSync(screenshotsDir); + + const latestFile = files + .map(file => ({ + file, + time: statSync(join(screenshotsDir, file)).mtime.getTime() + })) + .sort((a, b) => b.time - a.time)[0].file; + + const filePath = join(screenshotsDir, latestFile); + + const start = Date.now(); + const file = bucket.file(latestFile) + await file.write(readFileSync(filePath), { + type: "image/png" + }) + $`echo "https://i.darktru.win/${latestFile}" | wl-copy -n`.nothrow().catch(a => { }); + $`notify-send "Screenshot" "Uploaded in ${Date.now() - start}ms"`.nothrow().catch(a => { }); +} catch (e_) { + $`notify-send "Screenshot" "${`${e_}`}"`.nothrow().catch(a => { }); +} + diff --git a/scripts/hot-reload.sh b/scripts/hot-reload.sh index 2361dfa..6f07374 100755 --- a/scripts/hot-reload.sh +++ b/scripts/hot-reload.sh @@ -1,6 +1,6 @@ #!/bin/bash -pkill -9 waybar +trap "pkill -9 waybar" EXIT hyprctl dispatch exec "GTK_THEME=Adwaita waybar -c ~/config/config/waybar/config -s ~/config/config/waybar/style.css" & hyprctl reload