diff --git a/.config/nvim/lua/rocketcamel/plugins/lsp.lua b/.config/nvim/lua/rocketcamel/plugins/lsp.lua
index a98b07e..0af0412 100644
--- a/.config/nvim/lua/rocketcamel/plugins/lsp.lua
+++ b/.config/nvim/lua/rocketcamel/plugins/lsp.lua
@@ -30,6 +30,8 @@ local function setup_luau()
enabled = true,
suggestServices = true,
suggestRequires = true,
+ requireStyle = "alwaysAbsolute",
+ stringRequires = { enabled = true },
},
},
},
diff --git a/astal/.gitignore b/astal/.gitignore
deleted file mode 100644
index 298eb4d..0000000
--- a/astal/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules/
-@girs/
diff --git a/astal/app.ts b/astal/app.ts
deleted file mode 100644
index 20076c2..0000000
--- a/astal/app.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { App, Gdk } from "astal/gtk3";
-import style from "./style.scss";
-import Bar from "./widget/Bar";
-import { GLib } from "astal";
-
-App.start({
- css: style,
- icons: "icons",
- main() {},
-});
-
-let knownMonitors = new Set();
-
-function checkMonitors() {
- const currentMonitors = App.get_monitors();
- currentMonitors.forEach((monitor) => {
- if (!knownMonitors.has(monitor.model)) {
- knownMonitors.add(monitor.model);
- Bar(monitor);
- }
- });
-}
-
-checkMonitors();
-
-GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 10, () => {
- checkMonitors();
- return true;
-});
diff --git a/astal/bun.lock b/astal/bun.lock
deleted file mode 100644
index 56a42a2..0000000
--- a/astal/bun.lock
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "lockfileVersion": 1,
- "workspaces": {
- "": {
- "name": "astal-shell",
- "dependencies": {
- "astal": "/nix/store/pvb3x021mr6xknm91gqq76gy32n96vj0-astal-gjs/share/astal/gjs",
- },
- },
- },
- "packages": {
- "astal": ["astal@file:../../../../nix/store/pvb3x021mr6xknm91gqq76gy32n96vj0-astal-gjs/share/astal/gjs", {}],
- }
-}
diff --git a/astal/env.d.ts b/astal/env.d.ts
deleted file mode 100644
index 467c0a4..0000000
--- a/astal/env.d.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-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/astal/flake.lock b/astal/flake.lock
deleted file mode 100644
index 562d628..0000000
--- a/astal/flake.lock
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "nodes": {
- "ags": {
- "inputs": {
- "astal": "astal",
- "nixpkgs": [
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1744557573,
- "narHash": "sha256-XAyj0iDuI51BytJ1PwN53uLpzTDdznPDQFG4RwihlTQ=",
- "owner": "aylur",
- "repo": "ags",
- "rev": "3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6",
- "type": "github"
- },
- "original": {
- "owner": "aylur",
- "repo": "ags",
- "type": "github"
- }
- },
- "astal": {
- "inputs": {
- "nixpkgs": [
- "ags",
- "nixpkgs"
- ]
- },
- "locked": {
- "lastModified": 1742571008,
- "narHash": "sha256-5WgfJAeBpxiKbTR/gJvxrGYfqQRge5aUDcGKmU1YZ1Q=",
- "owner": "aylur",
- "repo": "astal",
- "rev": "dc0e5d37abe9424c53dcbd2506a4886ffee6296e",
- "type": "github"
- },
- "original": {
- "owner": "aylur",
- "repo": "astal",
- "type": "github"
- }
- },
- "nixpkgs": {
- "locked": {
- "lastModified": 1750365781,
- "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54",
- "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/astal/flake.nix b/astal/flake.nix
deleted file mode 100644
index 7554ded..0000000
--- a/astal/flake.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- description = "Desktop widgets";
-
- 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};
-
- extraPkgs = with ags.packages.${system}; [
- hyprland
- battery
- wireplumber
- network
- ];
- in
- {
- packages.${system} = {
- status-bar = ags.lib.bundle {
- inherit pkgs;
- src = ./.;
- name = "status-bar";
- entry = "app.ts";
-
- extraPackages =
- with pkgs;
- extraPkgs
- ++ [
- libgtop
- ];
- };
- };
-
- devShells.${system} = {
- default = pkgs.mkShell {
- buildInputs = [
- (ags.packages.${system}.default.override {
- extraPackages =
- with pkgs;
- extraPkgs
- ++ [
- libgtop
- ];
- })
- ];
- };
- };
- };
-}
diff --git a/astal/icons/nixos-2.svg b/astal/icons/nixos-2.svg
deleted file mode 100644
index 40e5de8..0000000
--- a/astal/icons/nixos-2.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/astal/icons/nixos-3.svg b/astal/icons/nixos-3.svg
deleted file mode 100644
index fb26b80..0000000
--- a/astal/icons/nixos-3.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/astal/icons/nixos.svg b/astal/icons/nixos.svg
deleted file mode 100644
index 63e504c..0000000
--- a/astal/icons/nixos.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/astal/package-lock.json b/astal/package-lock.json
deleted file mode 100644
index 635a9c5..0000000
--- a/astal/package-lock.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "name": "astal-shell",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "astal-shell",
- "dependencies": {
- "astal": "/nix/store/pvb3x021mr6xknm91gqq76gy32n96vj0-astal-gjs/share/astal/gjs"
- }
- },
- "../../../../nix/store/pvb3x021mr6xknm91gqq76gy32n96vj0-astal-gjs/share/astal/gjs": {
- "name": "astal",
- "license": "LGPL-2.1"
- },
- "node_modules/astal": {
- "resolved": "../../../../nix/store/pvb3x021mr6xknm91gqq76gy32n96vj0-astal-gjs/share/astal/gjs",
- "link": true
- }
- }
-}
diff --git a/astal/package.json b/astal/package.json
deleted file mode 100644
index 32f5d43..0000000
--- a/astal/package.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "name": "astal-shell",
- "dependencies": {
- "astal": "/nix/store/pvb3x021mr6xknm91gqq76gy32n96vj0-astal-gjs/share/astal/gjs"
- }
-}
diff --git a/astal/style.scss b/astal/style.scss
deleted file mode 100644
index 522b9db..0000000
--- a/astal/style.scss
+++ /dev/null
@@ -1,134 +0,0 @@
-@use "sass:color";
-
-$bg: #212223;
-$fg: #f1f1f1;
-$accent: #378DF7;
-$accent-white: #ffffff;
-$radius: 7px;
-$bg-color-6: rgb(40, 42, 54);
-$inactive-bg-color: rgb(68, 71, 90);
-
-window.Bar {
- border: none;
- box-shadow: none;
- font-family: Dejavu Sans Mono;
- background-color: color.adjust($bg, $alpha: -0.2);
- color: $fg;
- font-size: 1.1em;
-
- label {
- margin: 0 8px;
- }
-
- .status-box {
- background-color: $bg-color-6;
- padding: 0 4px;
- margin: 0 2px;
- font-size: 16px;
- }
-
- .inactive {
- background-color: $inactive-bg-color;
- }
-
- .client-title label {
- font-weight: bold;
- }
-
- .nix-icon {
- font-size: 24px;
- padding: 0 2px;
- background-color: #003366;
- border-top-right-radius: 4px;
- border: none;
- }
-
- .workspaces {
- font-weight: bold;
-
- button {
- all: unset;
- background-color: transparent;
-
- &:hover label {
- background-color: color.adjust($fg, $alpha: -0.84);
- border-color: color.adjust($accent, $alpha: -0.8);
- }
-
- &:active label {
- background-color: color.adjust($fg, $alpha: -0.8)
- }
- }
-
- label {
- transition: 200ms;
- padding: 3px 8px;
- margin: 0px;
- border-radius: 0;
- border: 3px solid transparent;
- }
-
- .focused label {
- background-color: color.adjust($accent-white, $alpha: -0.84);
- border-bottom: 3px solid $accent-white;
- }
- }
-
- .SysTray {
- margin-right: 8px;
-
- button {
- padding: 0 4px;
- }
- }
-
- .FocusedClient {
- color: $accent;
- }
-
- .Media .Cover {
- min-height: 1.2em;
- min-width: 1.2em;
- border-radius: $radius;
- background-position: center;
- background-size: contain;
- }
-
- .Battery label {
- padding-left: 0;
- margin-left: 0;
- }
-
- .AudioSlider {
- * {
- all: unset;
- }
-
- icon {
- margin-right: .6em;
- }
-
- & {
- margin: 0 1em;
- }
-
- trough {
- background-color: color.adjust($fg, $alpha: -0.8);
- border-radius: $radius;
- }
-
- highlight {
- background-color: $accent;
- min-height: .8em;
- border-radius: $radius;
- }
-
- slider {
- background-color: $fg;
- border-radius: $radius;
- min-height: 1em;
- min-width: 1em;
- margin: -.2em;
- }
- }
-}
diff --git a/astal/tsconfig.json b/astal/tsconfig.json
deleted file mode 100644
index 58e16ed..0000000
--- a/astal/tsconfig.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/tsconfig",
- "compilerOptions": {
- "experimentalDecorators": true,
- "strict": false,
- "target": "ES2022",
- "module": "ES2022",
- "moduleResolution": "Bundler",
- // "checkJs": true,
- // "allowJs": true,
- "jsx": "react-jsx",
- "jsxImportSource": "astal/gtk3",
- }
-}
diff --git a/astal/widget/Bar.tsx b/astal/widget/Bar.tsx
deleted file mode 100644
index 8b9990c..0000000
--- a/astal/widget/Bar.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { App, Astal, Gtk, Gdk } from "astal/gtk3";
-import Workspaces from "./workspaces";
-import Audio from "./audio";
-import NetworkModule from "./network";
-import Cpu from "./cpu-widget";
-import Ram from "./ram";
-import Disk from "./disk";
-import Battery from "./battery";
-import Time from "./time";
-import Title from "./title";
-
-export default function Bar(gdkmonitor: Gdk.Monitor) {
- const { TOP, LEFT, RIGHT } = Astal.WindowAnchor;
-
- //@ts-ignore
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/astal/widget/audio.tsx b/astal/widget/audio.tsx
deleted file mode 100644
index ec3db8a..0000000
--- a/astal/widget/audio.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import { bind, Variable } from "astal"
-import AstalWp from "gi://AstalWp?version=0.1"
-
-export default function Audio() {
- const speaker = AstalWp.get_default()?.default_speaker!
- const derived = Variable.derive([bind(speaker, "volume"), bind(speaker, "mute")], (volume: number, muted: boolean) => {
- if (muted) {
- return { label: ` (muted)`, muted }
- }
- return { label: `${Math.floor(volume * 100)}% ` }
- })
-
- return ["status-box", v.muted && "inactive"].filter(Boolean).join(" "))}>
-
-}
diff --git a/astal/widget/battery.tsx b/astal/widget/battery.tsx
deleted file mode 100644
index ed08c49..0000000
--- a/astal/widget/battery.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import { bind, Variable } from "astal"
-import AstalBattery from "gi://AstalBattery?version=0.1"
-
-export default function Battery() {
- const battery = AstalBattery.get_default()
- const battery_info = Variable.derive([bind(battery, "percentage"), bind(battery, "charging")], (percentage, charging) => {
- const full_percentage = Math.floor(percentage * 100)
- if (charging) {
- return { label: `${full_percentage == 100 ? "FULL" : "CHR"}: ${full_percentage}%` }
- }
- return { label: `${full_percentage == 100 ? "FULL" : "BAT"}: ${full_percentage}%` }
- })
-
- if (!battery.is_battery) {
- return <>>
- }
- return
-
-}
-
diff --git a/astal/widget/cpu-widget.tsx b/astal/widget/cpu-widget.tsx
deleted file mode 100644
index 3d8af80..0000000
--- a/astal/widget/cpu-widget.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { bind, GLib, Variable } from "astal";
-import { calc_cpu_usage, get_cpu_snapshot } from "./cpu";
-
-let s1 = get_cpu_snapshot();
-let cpu_usage_percent = Variable(0);
-GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
- const s2 = get_cpu_snapshot();
- cpu_usage_percent.set(calc_cpu_usage(s1, s2));
- s1 = s2;
-
- return true;
-});
-
-export default function Cpu() {
- return
-
-}
-
diff --git a/astal/widget/cpu.ts b/astal/widget/cpu.ts
deleted file mode 100644
index 3863c3a..0000000
--- a/astal/widget/cpu.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { GLib, Variable } from "astal";
-import GTop from "gi://GTop";
-import Wp05 from "gi://Wp";
-
-type Snapshot = {
- total: number;
- user: number;
- sys: number;
- idle: number;
-};
-
-export function get_cpu_snapshot() {
- const cpu = new GTop.glibtop_cpu();
- GTop.glibtop_get_cpu(cpu);
- return {
- total: cpu.total,
- user: cpu.user + cpu.nice,
- sys: cpu.sys,
- idle: cpu.idle,
- };
-}
-
-export function calc_cpu_usage(a: Snapshot, b: Snapshot) {
- const total_diff = b.total - a.total;
- const active_diff = b.user + b.sys - (a.user + a.sys);
- return Math.round(total_diff > 0 ? (100 * active_diff) / total_diff : 0);
-}
-
-export function get_ram_info() {
- const mem = new GTop.glibtop_mem();
- GTop.glibtop_get_mem(mem);
- return {
- total: mem.total,
- used: mem.total - mem.free - mem.cached - mem.buffer,
- free: mem.free,
- };
-}
-
-function format_bytes(bytes: number) {
- let units = ["B", "KiB", "MiB", "GiB", "TiB"];
- let i = 0;
- let num: number = bytes;
- while (num >= 1024 && i < units.length - 1) {
- num /= 1024;
- i++;
- }
-
- return `${num.toFixed(2)}${units[i]}`;
-}
-
-export function get_disk_space() {
- const usage = new GTop.glibtop_fsusage();
- GTop.glibtop_get_fsusage(usage, "/");
-
- const free_bytes = usage.bavail * usage.block_size;
-
- return format_bytes(free_bytes);
-}
diff --git a/astal/widget/disk.tsx b/astal/widget/disk.tsx
deleted file mode 100644
index 590fa44..0000000
--- a/astal/widget/disk.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { bind, Variable } from "astal"
-import { get_disk_space } from "./cpu"
-
-let disk_space = Variable(get_disk_space()).poll(5000, () => get_disk_space())
-export default function Disk() {
- return
-
-}
-
diff --git a/astal/widget/network.tsx b/astal/widget/network.tsx
deleted file mode 100644
index f5c8f0b..0000000
--- a/astal/widget/network.tsx
+++ /dev/null
@@ -1,47 +0,0 @@
-import { bind, Variable } from "astal";
-import AstalNetwork from "gi://AstalNetwork?version=0.1";
-
-const disconnected_label = { label: `Disconnected ⚠` };
-
-function create_label(
- primary: AstalNetwork.Primary,
- wired: AstalNetwork.Wired,
- wifi?: AstalNetwork.Wifi,
-) {
- if (primary === AstalNetwork.Primary.WIRED) {
- return { label: `🖧 Wired ${wired.device.interface}` };
- }
- if (!wifi) {
- return disconnected_label;
- }
- if (wifi.active_access_point !== null) {
- return { label: `${wifi.ssid} (${wifi.strength}%) ` };
- }
- return disconnected_label;
-}
-
-export default function NetworkModule() {
- const network = AstalNetwork.get_default();
- const wifi = network.wifi;
- const wired = network.wired;
-
- let derived;
- if (!wifi) {
- derived = Variable.derive([bind(network, "primary")], (primary) => {
- return create_label(primary, wired);
- });
- } else {
- derived = Variable.derive(
- [bind(network, "primary"), bind(wifi, "ssid"), bind(wifi, "strength")],
- (primary) => {
- return create_label(primary, wired, wifi);
- },
- );
- }
-
- return (
-
-
- );
-}
diff --git a/astal/widget/ram.tsx b/astal/widget/ram.tsx
deleted file mode 100644
index 8abea28..0000000
--- a/astal/widget/ram.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import { bind, GLib, Variable } from "astal"
-import { get_ram_info } from "./cpu"
-
-let info = Variable(get_ram_info())
-GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
- info.set(get_ram_info())
-
- return true
-})
-
-export default function Ram() {
- return
-
-}
-
diff --git a/astal/widget/time.tsx b/astal/widget/time.tsx
deleted file mode 100644
index b453be8..0000000
--- a/astal/widget/time.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import { bind, GLib, Variable } from "astal"
-
-let current_time = Variable(GLib.DateTime.new_now_local().format("%H:%M"))
-GLib.timeout_add(GLib.PRIORITY_DEFAULT, 1000, () => {
- const now = GLib.DateTime.new_now_local()
- current_time.set(now.format("%b %e (%a) %H:%M"))
- return true
-})
-export default function Time() {
-
- return
-
-
-}
-
diff --git a/astal/widget/title.tsx b/astal/widget/title.tsx
deleted file mode 100644
index 8d18d12..0000000
--- a/astal/widget/title.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import { bind, Variable } from "astal"
-import AstalHyprland from "gi://AstalHyprland?version=0.1";
-
-const hyprland = AstalHyprland.get_default()
-
-function get_title() {
- return hyprland.focusedClient?.title ?? ""
-}
-
-const title = Variable(get_title()).poll(200, () => get_title())
-
-export default function Title() {
- return (
-