From 37687b3e624dcea8cb1dd93750370c52016a218a Mon Sep 17 00:00:00 2001 From: retrozinndev Date: Wed, 22 Jan 2025 13:45:59 -0300 Subject: [PATCH] :sparkles: ags,hypr: initial code! --- ags/.gitignore | 2 + ags/app.ts | 13 + ags/env.d.ts | 21 ++ ags/package-lock.json | 21 ++ ags/package.json | 6 + ags/scripts/pywal.ts | 10 + ags/scripts/style-handler.ts | 57 ++++ ags/scripts/user.ts | 11 + ags/style.scss | 16 ++ ags/style/_bar.scss | 47 +++ ags/style/_mixins.scss | 0 ags/style/_wal.scss | 26 ++ ags/tsconfig.json | 14 + ags/widget/bar/Audio.tsx | 0 ags/widget/bar/CCToggle.tsx | 11 + ags/widget/bar/Clock.tsx | 14 + ags/widget/bar/Logo.tsx | 10 + ags/widget/bar/Tray.tsx | 17 ++ ags/widget/bar/Workspaces.tsx | 21 ++ ags/window/Bar.tsx | 44 +++ apply.sh | 2 +- eww/eww.scss | 10 - eww/eww.yuck | 17 -- eww/scripts/active-window.sh | 12 - eww/scripts/color-picker.sh | 18 -- eww/scripts/eww-reload.sh | 17 -- eww/scripts/eww-window.sh | 104 ------- eww/scripts/get-volume-watch.sh | 26 -- eww/scripts/mediaplayer.py | 205 ------------- eww/scripts/night-light.sh | 17 -- eww/scripts/notification-clear.sh | 8 - eww/scripts/notification-handler.sh | 73 ----- eww/scripts/notification-popup-remove.sh | 21 -- eww/scripts/notification-popup.sh | 51 ---- eww/scripts/notification-remove.sh | 23 -- eww/scripts/notification-watch.sh | 32 --- eww/scripts/screen-recording.sh | 28 -- eww/scripts/volume-popup-trigger.sh | 13 - eww/scripts/workspaces.sh | 37 --- eww/styles/bar.scss | 270 ------------------ eww/styles/calendar.scss | 41 --- eww/styles/control-center.scss | 202 ------------- eww/styles/floating-notifications.scss | 76 ----- eww/styles/general.scss | 230 --------------- eww/styles/powermenu.scss | 32 --- eww/styles/volume-control.scss | 36 --- eww/variables.yuck | 59 ---- eww/widgets/bar/audio.yuck | 13 - eww/widgets/bar/battery.yuck | 6 - eww/widgets/bar/cc-toggle.yuck | 10 - eww/widgets/bar/clock.yuck | 26 -- eww/widgets/bar/hardware.yuck | 19 -- eww/widgets/bar/logo.yuck | 5 - eww/widgets/bar/media.yuck | 65 ----- eww/widgets/bar/network.yuck | 8 - eww/widgets/bar/window.yuck | 29 -- eww/widgets/bar/workspaces.yuck | 13 - eww/widgets/big-media.yuck | 84 ------ eww/widgets/control-center/notification.yuck | 59 ---- eww/widgets/control-center/notifications.yuck | 38 --- eww/widgets/control-center/tiles.yuck | 75 ----- eww/widgets/control-center/top-bar.yuck | 46 --- eww/widgets/separator.yuck | 4 - eww/widgets/volume-control/output-slider.yuck | 19 -- eww/widgets/volume-control/source-slider.yuck | 20 -- eww/windows/bar.yuck | 60 ---- eww/windows/calendar-window.yuck | 24 -- eww/windows/control-center.yuck | 47 --- eww/windows/floating-media.yuck | 24 -- eww/windows/floating-notifications.yuck | 115 -------- eww/windows/hardware-monitor.yuck | 15 - eww/windows/powermenu.yuck | 33 --- eww/windows/volume-control.yuck | 39 --- eww/windows/volume-popup.yuck | 16 -- hypr/bindings.conf | 6 +- hypr/rules.conf | 2 + mako/config | 46 --- update-repo.sh | 2 +- wallpapers/Balcony Girl.png | Bin 0 -> 953964 bytes wallpapers/Chinatown.png | Bin 0 -> 4693019 bytes wallpapers/Garden Kita.png | Bin 0 -> 4697791 bytes wallpapers/Gruvbox Girl.png | Bin 0 -> 869985 bytes ....png => Hitori Gotoh College Corridor.png} | Bin wallpapers/Pixel Girl Reading Book.png | Bin 0 -> 56439 bytes 84 files changed, 368 insertions(+), 2621 deletions(-) create mode 100644 ags/.gitignore create mode 100644 ags/app.ts create mode 100644 ags/env.d.ts create mode 100644 ags/package-lock.json create mode 100644 ags/package.json create mode 100644 ags/scripts/pywal.ts create mode 100644 ags/scripts/style-handler.ts create mode 100644 ags/scripts/user.ts create mode 100644 ags/style.scss create mode 100644 ags/style/_bar.scss create mode 100644 ags/style/_mixins.scss create mode 100644 ags/style/_wal.scss create mode 100644 ags/tsconfig.json create mode 100644 ags/widget/bar/Audio.tsx create mode 100644 ags/widget/bar/CCToggle.tsx create mode 100644 ags/widget/bar/Clock.tsx create mode 100644 ags/widget/bar/Logo.tsx create mode 100644 ags/widget/bar/Tray.tsx create mode 100644 ags/widget/bar/Workspaces.tsx create mode 100644 ags/window/Bar.tsx delete mode 100644 eww/eww.scss delete mode 100644 eww/eww.yuck delete mode 100644 eww/scripts/active-window.sh delete mode 100644 eww/scripts/color-picker.sh delete mode 100644 eww/scripts/eww-reload.sh delete mode 100644 eww/scripts/eww-window.sh delete mode 100644 eww/scripts/get-volume-watch.sh delete mode 100755 eww/scripts/mediaplayer.py delete mode 100644 eww/scripts/night-light.sh delete mode 100644 eww/scripts/notification-clear.sh delete mode 100644 eww/scripts/notification-handler.sh delete mode 100644 eww/scripts/notification-popup-remove.sh delete mode 100644 eww/scripts/notification-popup.sh delete mode 100644 eww/scripts/notification-remove.sh delete mode 100644 eww/scripts/notification-watch.sh delete mode 100644 eww/scripts/screen-recording.sh delete mode 100644 eww/scripts/volume-popup-trigger.sh delete mode 100644 eww/scripts/workspaces.sh delete mode 100644 eww/styles/bar.scss delete mode 100644 eww/styles/calendar.scss delete mode 100644 eww/styles/control-center.scss delete mode 100644 eww/styles/floating-notifications.scss delete mode 100644 eww/styles/general.scss delete mode 100644 eww/styles/powermenu.scss delete mode 100644 eww/styles/volume-control.scss delete mode 100644 eww/variables.yuck delete mode 100644 eww/widgets/bar/audio.yuck delete mode 100644 eww/widgets/bar/battery.yuck delete mode 100644 eww/widgets/bar/cc-toggle.yuck delete mode 100644 eww/widgets/bar/clock.yuck delete mode 100644 eww/widgets/bar/hardware.yuck delete mode 100644 eww/widgets/bar/logo.yuck delete mode 100644 eww/widgets/bar/media.yuck delete mode 100644 eww/widgets/bar/network.yuck delete mode 100644 eww/widgets/bar/window.yuck delete mode 100644 eww/widgets/bar/workspaces.yuck delete mode 100644 eww/widgets/big-media.yuck delete mode 100644 eww/widgets/control-center/notification.yuck delete mode 100644 eww/widgets/control-center/notifications.yuck delete mode 100644 eww/widgets/control-center/tiles.yuck delete mode 100644 eww/widgets/control-center/top-bar.yuck delete mode 100644 eww/widgets/separator.yuck delete mode 100644 eww/widgets/volume-control/output-slider.yuck delete mode 100644 eww/widgets/volume-control/source-slider.yuck delete mode 100644 eww/windows/bar.yuck delete mode 100644 eww/windows/calendar-window.yuck delete mode 100644 eww/windows/control-center.yuck delete mode 100644 eww/windows/floating-media.yuck delete mode 100644 eww/windows/floating-notifications.yuck delete mode 100644 eww/windows/hardware-monitor.yuck delete mode 100644 eww/windows/powermenu.yuck delete mode 100644 eww/windows/volume-control.yuck delete mode 100644 eww/windows/volume-popup.yuck delete mode 100644 mako/config create mode 100644 wallpapers/Balcony Girl.png create mode 100644 wallpapers/Chinatown.png create mode 100644 wallpapers/Garden Kita.png create mode 100644 wallpapers/Gruvbox Girl.png rename wallpapers/{Hitori Gotou College Corridor.png => Hitori Gotoh College Corridor.png} (100%) create mode 100644 wallpapers/Pixel Girl Reading Book.png diff --git a/ags/.gitignore b/ags/.gitignore new file mode 100644 index 0000000..298eb4d --- /dev/null +++ b/ags/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +@girs/ diff --git a/ags/app.ts b/ags/app.ts new file mode 100644 index 0000000..221ce58 --- /dev/null +++ b/ags/app.ts @@ -0,0 +1,13 @@ +import { Gio, monitorFile, readFile, Process } from "astal"; +import { App } from "astal/gtk3" + +import { Bar } from "./window/Bar"; +import { runStyleHandler } from "./scripts/style-handler"; + +runStyleHandler(); + +App.start({ + main() { + Bar(0); + } +}); diff --git a/ags/env.d.ts b/ags/env.d.ts new file mode 100644 index 0000000..467c0a4 --- /dev/null +++ b/ags/env.d.ts @@ -0,0 +1,21 @@ +declare const SRC: string + +declare module "inline:*" { + const content: string + export default content +} + +declare module "*.scss" { + const content: string + export default content +} + +declare module "*.blp" { + const content: string + export default content +} + +declare module "*.css" { + const content: string + export default content +} diff --git a/ags/package-lock.json b/ags/package-lock.json new file mode 100644 index 0000000..c9970a7 --- /dev/null +++ b/ags/package-lock.json @@ -0,0 +1,21 @@ +{ + "name": "astal-shell", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "astal-shell", + "dependencies": { + "astal": "/usr/share/astal/gjs" + } + }, + "../../../../usr/share/astal/gjs": { + "name": "astal", + "license": "LGPL-2.1" + }, + "node_modules/astal": { + "resolved": "../../../../usr/share/astal/gjs", + "link": true + } + } +} diff --git a/ags/package.json b/ags/package.json new file mode 100644 index 0000000..44226f2 --- /dev/null +++ b/ags/package.json @@ -0,0 +1,6 @@ +{ + "name": "astal-shell", + "dependencies": { + "astal": "/usr/share/astal/gjs" + } +} diff --git a/ags/scripts/pywal.ts b/ags/scripts/pywal.ts new file mode 100644 index 0000000..25e2f17 --- /dev/null +++ b/ags/scripts/pywal.ts @@ -0,0 +1,10 @@ +import { readFile } from "astal"; +import { getUserDirs } from "./user"; + +export abstract class Wal { + getColors(): JSON { + return JSON.parse( + readFile(`${getUserDirs().cache}/wal/colors.json`)! + ); + } +} diff --git a/ags/scripts/style-handler.ts b/ags/scripts/style-handler.ts new file mode 100644 index 0000000..433305e --- /dev/null +++ b/ags/scripts/style-handler.ts @@ -0,0 +1,57 @@ +// handles reloading stylesheet and pywal colors + +import { readFile, monitorFile, Process, Gio } from "astal"; +import { App } from "astal/gtk3"; +import { getUserDirs } from "./user"; + +const stylePath = `${getUserDirs().state}/ags/style` +const watchPaths = [ + "./style", + "./style.scss" +]; + +export function runStyleHandler(): void { + reloadStyle(); + watch(); +} + +export function reloadStyle(): void { + compileStyle(); + applyStyle(); +} + +export function compileStyle(): void { + console.log("[LOG] Compiling sass (stylesheet)"); + Process.exec(`mkdir -p ${stylePath}`); + Process.exec(`bash -c "sass -I ./style ./style.scss ${stylePath}/style.css"`); +} + +export function applyStyle(): void { + console.log("[LOG] Applying stylesheet"); + App.reset_css(); + App.apply_css( + readFile(`${stylePath}/style.css`)! + ); +} + +function watch(): void { + // Monitor changes on stylesheet at runtime + watchPaths.map((path: string) => + monitorFile( + `${path}`, + (file: string) => { + console.log(`[LOG] Stylesheet ${file} file updated`) + compileStyle(); + applyStyle(); + } + ) + ) + + // Monitor PyWal colorscheme file + monitorFile( + `${getUserDirs().cache}/wal/colors.scss`, + (file: string) => { + Process.exec(`bash -c "cp -f ${file} ./style/_wal.scss"`) + } + ); +} diff --git a/ags/scripts/user.ts b/ags/scripts/user.ts new file mode 100644 index 0000000..db36739 --- /dev/null +++ b/ags/scripts/user.ts @@ -0,0 +1,11 @@ +import { GLib } from "astal"; + +export function getUserDirs() { + return { + home: GLib.getenv("HOME"), + state: GLib.getenv("XDG_STATE_HOME"), + cache: GLib.getenv("XDG_CACHE_HOME"), + config: GLib.getenv("XDG_CONFIG_HOME"), + data: GLib.getenv("XDG_DATA_HOME") + } as const; +} diff --git a/ags/style.scss b/ags/style.scss new file mode 100644 index 0000000..4275cd5 --- /dev/null +++ b/ags/style.scss @@ -0,0 +1,16 @@ +@use "./style/bar"; +@use "./style/wal"; + +* { + all: unset; + transition: 120ms linear; +} + +button { + padding: 6px; + border-radius: 12px; + + &:hover { + background: wal.$color1; + } +} diff --git a/ags/style/_bar.scss b/ags/style/_bar.scss new file mode 100644 index 0000000..ba430bb --- /dev/null +++ b/ags/style/_bar.scss @@ -0,0 +1,47 @@ +@use "./_wal"; + +.bar-container { + padding: 6px; + padding-bottom: 0px; + .bar-centerbox > * { + background: rgba($color: wal.$background, $alpha: .6); + padding: 6px; + border-radius: 18px; + } +} + +label { + font-size: 12px; + font-family: "Cantarell", "Noto Sans"; + font-weight: 500; +} + +.workspaces { + & button { + transition: 80ms linear; + padding: 0 12px; + background: wal.$color1; + margin: 3px 2px; + + &.focus { + background: wal.$foreground; + padding: 0 20px; + } + } +} + +.logo button { + $padding-inline: 12px; + padding-left: $padding-inline; + padding-right: calc($padding-inline + 3.9px); + + & label { + font-size: 14px; + } +} + +.cc-toggle button { + $padding-inline: 12px; + padding-left: $padding-inline; + padding-right: calc($padding-inline + 2px); +} diff --git a/ags/style/_mixins.scss b/ags/style/_mixins.scss new file mode 100644 index 0000000..e69de29 diff --git a/ags/style/_wal.scss b/ags/style/_wal.scss new file mode 100644 index 0000000..e2dc560 --- /dev/null +++ b/ags/style/_wal.scss @@ -0,0 +1,26 @@ +// SCSS Variables +// Generated by 'wal' +$wallpaper: "/home/joaov/wallpapers/Garden Kita.png"; + +// Special +$background: #101212; +$foreground: #c3c3c3; +$cursor: #c3c3c3; + +// Colors +$color0: #101212; +$color1: #59662a; +$color2: #517047; +$color3: #87863c; +$color4: #707b48; +$color5: #4b6266; +$color6: #84876e; +$color7: #8e9898; +$color8: #596d6d; +$color9: #778839; +$color10: #6C965F; +$color11: #B4B350; +$color12: #96A460; +$color13: #658388; +$color14: #B0B493; +$color15: #c3c3c3; diff --git a/ags/tsconfig.json b/ags/tsconfig.json new file mode 100644 index 0000000..1fc22db --- /dev/null +++ b/ags/tsconfig.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "experimentalDecorators": true, + "strict": true, + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "Bundler", + "checkJs": true, + "allowJs": true, + "jsx": "react-jsx", + "jsxImportSource": "astal/gtk3" + } +} diff --git a/ags/widget/bar/Audio.tsx b/ags/widget/bar/Audio.tsx new file mode 100644 index 0000000..e69de29 diff --git a/ags/widget/bar/CCToggle.tsx b/ags/widget/bar/CCToggle.tsx new file mode 100644 index 0000000..896036e --- /dev/null +++ b/ags/widget/bar/CCToggle.tsx @@ -0,0 +1,11 @@ +import {Process} from "astal"; +import { Box, Button } from "astal/gtk3/widget"; + +export function CCToggle() { + return ( + +