From 864433e39ad5714ba85eb08b752204f5483bb025 Mon Sep 17 00:00:00 2001 From: Anthony Rodriguez Date: Mon, 10 Feb 2025 02:55:59 +0100 Subject: [PATCH] chore: initialize project structure --- .editorconfig | 5 ++++ .envrc | 1 + .gitignore | 4 +++ app.ts | 10 ++++++++ env.d.ts | 21 +++++++++++++++ flake.lock | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 49 +++++++++++++++++++++++++++++++++++ style.scss | 20 +++++++++++++++ tsconfig.json | 12 +++++++++ widget/Bar.tsx | 31 ++++++++++++++++++++++ 10 files changed, 223 insertions(+) create mode 100644 .editorconfig create mode 100644 .envrc create mode 100644 .gitignore create mode 100644 app.ts create mode 100644 env.d.ts create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 style.scss create mode 100644 tsconfig.json create mode 100644 widget/Bar.tsx diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..e566e72 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*.ts] +indent_style = space +indent_size = 4 diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..afcdb1e --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.direnv/ +node_modules/ +@girs/ +package.json diff --git a/app.ts b/app.ts new file mode 100644 index 0000000..9974e59 --- /dev/null +++ b/app.ts @@ -0,0 +1,10 @@ +import { App } from "astal/gtk3"; +import style from "./style.scss"; +import Bar from "./widget/Bar"; + +App.start({ + css: style, + main() { + App.get_monitors().map(Bar); + }, +}); diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..467c0a4 --- /dev/null +++ b/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/flake.lock b/flake.lock new file mode 100644 index 0000000..bd25a2b --- /dev/null +++ b/flake.lock @@ -0,0 +1,70 @@ +{ + "nodes": { + "ags": { + "inputs": { + "astal": "astal", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1738087375, + "narHash": "sha256-GLyNtU9A2VN22jNRHZ2OXuFfTJLh8uEVVt+ftsKUX0c=", + "owner": "aylur", + "repo": "ags", + "rev": "a6a7a0adb17740f4c34a59902701870d46fbb6a4", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "ags", + "type": "github" + } + }, + "astal": { + "inputs": { + "nixpkgs": [ + "ags", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737670815, + "narHash": "sha256-ZCxxshGN7XooabArcoGkYSNx5yVunqjKJi2aTv6cznI=", + "owner": "aylur", + "repo": "astal", + "rev": "127e9cdcbf173846a3c40ddc0abfbb038df48042", + "type": "github" + }, + "original": { + "owner": "aylur", + "repo": "astal", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1739020877, + "narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a79cfe0ebd24952b580b1cf08cd906354996d547", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "ags": "ags", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..209d1f2 --- /dev/null +++ b/flake.nix @@ -0,0 +1,49 @@ +{ + description = "My Awesome Desktop Shell"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + + ags = { + url = "github:aylur/ags"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { + self, + nixpkgs, + ags, + }: let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in { + packages.${system} = { + default = ags.lib.bundle { + inherit pkgs; + src = ./.; + name = "coquille"; + entry = "app.ts"; + + # additional libraries and executables to add to gjs' runtime + extraPackages = [ + # ags.packages.${system}.battery + # pkgs.fzf + ]; + }; + }; + + devShells.${system} = { + default = pkgs.mkShell { + buildInputs = [ + # includes astal3 astal4 astal-io by default + (ags.packages.${system}.default.override { + extraPackages = [ + # cherry pick packages + ]; + }) + ]; + }; + }; + }; +} diff --git a/style.scss b/style.scss new file mode 100644 index 0000000..1d0d3a9 --- /dev/null +++ b/style.scss @@ -0,0 +1,20 @@ +// https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-3-24/gtk/theme/Adwaita/_colors-public.scss +$fg-color: #{"@theme_fg_color"}; +$bg-color: #{"@theme_bg_color"}; + +window.Bar { + background: transparent; + color: $fg-color; + font-weight: bold; + + >centerbox { + background: $bg-color; + border-radius: 10px; + margin: 8px; + } + + button { + border-radius: 8px; + margin: 2px; + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..7519786 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "experimentalDecorators": true, + "jsx": "react-jsx", + "jsxImportSource": "astal/gtk3", + "module": "ES2022", + "moduleResolution": "Bundler", + "strict": true, + "target": "ES2022" + } +} \ No newline at end of file diff --git a/widget/Bar.tsx b/widget/Bar.tsx new file mode 100644 index 0000000..0384535 --- /dev/null +++ b/widget/Bar.tsx @@ -0,0 +1,31 @@ +import { App, Astal, Gtk, Gdk } from "astal/gtk3" +import { Variable } from "astal" + +const time = Variable("").poll(1000, "date") + +export default function Bar(gdkmonitor: Gdk.Monitor) { + const { TOP, LEFT, RIGHT } = Astal.WindowAnchor + + return + + + + + + +}