diff --git a/apps/update/default.nix b/apps/update/default.nix index f949f5bd..75610c37 100644 --- a/apps/update/default.nix +++ b/apps/update/default.nix @@ -16,7 +16,7 @@ in inherit (packageJSON) version; src = ./.; - npmDepsHash = "sha256-nYdr7jbe5wW9Rg0G4l5jbZg8G0o8DioeSGpx+8e0VZI="; + npmDepsHash = "sha256-cg+U7MSeeSDrzSWfXAd69FBLN3R8n4+aCSggrdThZHw="; runtimeInputs = [ (callPackage ../../nixosModules/docker/updateImage.nix {}) diff --git a/apps/update/package-lock.json b/apps/update/package-lock.json index 210cfc49..258b88f4 100644 Binary files a/apps/update/package-lock.json and b/apps/update/package-lock.json differ diff --git a/apps/update/package.json b/apps/update/package.json index 0719ee6e..7243bedd 100644 --- a/apps/update/package.json +++ b/apps/update/package.json @@ -7,15 +7,15 @@ "build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs" }, "dependencies": { - "@eslint/js": "9.11.1", - "@stylistic/eslint-plugin": "2.8.0", + "@eslint/js": "9.12.0", + "@stylistic/eslint-plugin": "2.9.0", "@types/eslint__js": "8.42.3", - "@types/node": "22.6.0", + "@types/node": "22.7.5", "esbuild": "0.24.0", - "eslint": "9.11.1", - "eslint-plugin-jsdoc": "50.2.4", - "jiti": "1.21.6", - "typescript": "5.6.2", - "typescript-eslint": "8.7.0" + "eslint": "9.12.0", + "eslint-plugin-jsdoc": "50.3.2", + "jiti": "2.3.3", + "typescript": "5.6.3", + "typescript-eslint": "8.8.1" } } diff --git a/devices/nos/modules/subtitles/extract-subs/.eslintrc.json b/devices/nos/modules/subtitles/extract-subs/.eslintrc.json deleted file mode 100644 index 0bdffacc..00000000 --- a/devices/nos/modules/subtitles/extract-subs/.eslintrc.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "env": { - "es2021": true - }, - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], - "parser": "@typescript-eslint/parser", - "overrides": [], - "parserOptions": { - "ecmaVersion": "latest", - "sourceType": "module" - }, - "plugins": ["@stylistic", "@typescript-eslint"], - "rules": { - "array-callback-return": ["error", { - "allowImplicit": true, - "checkForEach": true - }], - "no-constructor-return": ["error"], - "no-unreachable-loop": ["error", { "ignore": [ - "ForInStatement", "ForOfStatement" - ]}], - - - "block-scoped-var": ["error"], - "class-methods-use-this": ["error"], - "curly": ["warn"], - "default-case-last": ["warn"], - "default-param-last": ["error"], - "eqeqeq": ["error", "smart"], - "func-names": ["warn", "never"], - "logical-assignment-operators": ["warn", "always"], - "no-array-constructor": ["error"], - "no-empty-function": ["warn"], - "no-empty-static-block": ["warn"], - "no-extend-native": ["error"], - "no-extra-bind": ["warn"], - "no-implicit-coercion": ["warn"], - "no-iterator": ["error"], - "no-labels": ["error"], - "no-lone-blocks": ["error"], - "no-lonely-if": ["error"], - "no-loop-func": ["error"], - "no-magic-numbers": ["error", { - "ignore": [-2, -1, 0.1, 0, 1, 2, 3, 10, 33, 66, 100, 255, 360, 450, 1000], - "ignoreDefaultValues": true, - "ignoreArrayIndexes": true - }], - "no-multi-assign": ["error"], - "no-new": ["error"], - "no-new-func": ["error"], - "no-new-wrappers": ["error"], - "no-object-constructor": ["error"], - "no-proto": ["error"], - "no-return-assign": ["error"], - "no-sequences": ["error"], - "no-shadow": ["error", { "builtinGlobals": true }], - "no-undef-init": ["warn"], - "no-undefined": ["error"], - "no-useless-constructor": ["warn"], - "no-useless-escape": ["off"], - "no-useless-return": ["error"], - "no-var": ["error"], - "no-void": ["error"], - "no-with": ["error"], - "object-shorthand": ["error", "always"], - "one-var": ["error", "never"], - "operator-assignment": ["warn", "always"], - "prefer-arrow-callback": ["error"], - "prefer-const": ["error"], - "prefer-object-has-own": ["error"], - "prefer-regex-literals": ["error"], - "prefer-template": ["warn"], - - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": "warn", - "@typescript-eslint/no-unsafe-declaration-merging": "off", - - "@stylistic/array-bracket-newline": ["warn", "consistent"], - "@stylistic/array-bracket-spacing": ["warn", "never"], - "@stylistic/arrow-parens": ["warn", "always"], - "@stylistic/brace-style": ["warn", "stroustrup"], - "@stylistic/comma-dangle": ["warn", "always-multiline"], - "@stylistic/comma-spacing": ["warn", { "before": false, "after": true }], - "@stylistic/comma-style": ["error", "last"], - "@stylistic/dot-location": ["error", "property"], - "@stylistic/function-call-argument-newline": ["warn", "consistent"], - "@stylistic/function-paren-newline": ["warn", "consistent"], - "@stylistic/indent": ["warn", 4, { - "SwitchCase": 1, - "ignoreComments": true - }], - "@stylistic/key-spacing": ["warn", { "beforeColon": false, "afterColon": true }], - "@stylistic/keyword-spacing": ["warn", { "before": true }], - "@stylistic/linebreak-style": ["error", "unix"], - "@stylistic/lines-between-class-members": ["warn", "always", { "exceptAfterSingleLine": true }], - "@stylistic/max-len": ["warn", { - "code": 100, - "ignoreComments": true, - "ignoreTrailingComments": true, - "ignoreUrls": true - }], - "@stylistic/multiline-ternary": ["warn", "always-multiline"], - "@stylistic/new-parens": ["error"], - "@stylistic/no-mixed-operators": ["warn"], - "@stylistic/no-mixed-spaces-and-tabs": ["error"], - "@stylistic/no-multi-spaces": ["error"], - "@stylistic/no-tabs": ["error"], - "@stylistic/no-trailing-spaces": ["error"], - "@stylistic/no-whitespace-before-property": ["warn"], - "@stylistic/nonblock-statement-body-position": ["error", "below"], - "@stylistic/object-curly-newline": ["warn", { "consistent": true }], - "@stylistic/object-property-newline": ["warn", {"allowAllPropertiesOnSameLine": false}], - "@stylistic/object-curly-spacing": ["warn", "always"], - "@stylistic/operator-linebreak": ["warn", "after"], - "@stylistic/padded-blocks": ["error", "never"], - "@stylistic/padding-line-between-statements": ["warn", - { "blankLine": "always", "prev": "*", "next": "return" }, - { "blankLine": "always", "prev": ["const", "let", "var"], "next": "*"}, - { "blankLine": "any", "prev": ["const", "let", "var"], "next": ["const", "let", "var"]}, - { "blankLine": "always", "prev": ["case", "default"], "next": "*" } - ], - "@stylistic/quote-props": ["error", "consistent-as-needed"], - "@stylistic/quotes": ["error", "single", { "avoidEscape": true }], - "@stylistic/semi": ["error", "always"], - "@stylistic/semi-spacing": ["warn"], - "@stylistic/space-before-blocks": ["warn"], - "@stylistic/space-before-function-paren": ["warn", "never"], - "@stylistic/space-infix-ops": ["warn"], - "@stylistic/spaced-comment": ["warn", "always"], - "@stylistic/switch-colon-spacing": ["warn"], - "@stylistic/wrap-regex": ["warn"] - } -} diff --git a/devices/nos/modules/subtitles/extract-subs/default.nix b/devices/nos/modules/subtitles/extract-subs/default.nix index 685ce90d..24909c73 100644 --- a/devices/nos/modules/subtitles/extract-subs/default.nix +++ b/devices/nos/modules/subtitles/extract-subs/default.nix @@ -11,7 +11,7 @@ extract-subs = buildNpmPackage { name = "${pname}-npm"; src = ./.; - npmDepsHash = "sha256-O00VQPCUX6T+rtK3VcAibBipXFwNs4AFA3251qycPBQ="; + npmDepsHash = "sha256-mIRn7MsQJCwBYNEL3IK4cV8X+kDouEdc9x59XWgUkYw="; nativeBuildInputs = [ nodejs_20 @@ -46,6 +46,4 @@ in text = '' exec ${pname} "$@" ''; - - meta.mainProgram = pname; } diff --git a/devices/nos/modules/subtitles/extract-subs/main.ts b/devices/nos/modules/subtitles/extract-subs/main.ts index f50c4fc5..3467fd98 100755 --- a/devices/nos/modules/subtitles/extract-subs/main.ts +++ b/devices/nos/modules/subtitles/extract-subs/main.ts @@ -3,6 +3,7 @@ import { spawnSync as spawn } from 'child_process'; import { ISO6393To1 } from './lang-codes'; + const SPAWN_OPTS = { shell: true, stdio: [process.stdin, process.stdout, process.stderr], @@ -17,19 +18,8 @@ const SPAWN_OPTS = { const video = process.argv[2]; const languages = process.argv[3]?.split(','); -const escapePath = (p: string): string => p.replaceAll("'", "'\\''"); -// Check if there are 2 params -if (video && languages) { - main(escapePath(video)); -} -else { - console.error('Error: no argument passed'); - process.exit(1); -} - - -function getSubPath(baseName: string, sub: Ffmpeg.FfprobeStream): string { +const getSubPath = (baseName: string, sub: Ffmpeg.FfprobeStream): string => { const language = ISO6393To1.get(sub.tags.language); const forced = sub.disposition?.forced === 0 ? @@ -41,9 +31,9 @@ function getSubPath(baseName: string, sub: Ffmpeg.FfprobeStream): string { '.sdh'; return `${baseName}${forced}.${language}${hearingImpaired}.srt`; -} +}; -function main(videoPath: string) { +const main = (videoPath: string) => { const subIndexes: number[] = []; const baseName = videoPath.split('/').at(-1)!.replace(/\.[^.]*$/, ''); @@ -58,9 +48,9 @@ function main(videoPath: string) { languages.forEach((lang) => { let subs = data.streams.filter((s) => { return s['tags'] && - s['tags']['language'] && - s['tags']['language'] === lang && - s.codec_type === 'subtitle'; + s['tags']['language'] && + s['tags']['language'] === lang && + s.codec_type === 'subtitle'; }); const pgs = subs.filter((s) => s.codec_name === 'hdmv_pgs_subtitle'); @@ -110,4 +100,15 @@ function main(videoPath: string) { `'${videoPath}.bak'`, ], SPAWN_OPTS); }); +}; + +const escapePath = (p: string): string => p.replaceAll("'", "'\\''"); + +// Check if there are 2 params +if (video && languages) { + main(escapePath(video)); +} +else { + console.error('Error: no argument passed'); + process.exit(1); } diff --git a/devices/nos/modules/subtitles/extract-subs/package-lock.json b/devices/nos/modules/subtitles/extract-subs/package-lock.json index b4dd66f2..390a22c1 100644 Binary files a/devices/nos/modules/subtitles/extract-subs/package-lock.json and b/devices/nos/modules/subtitles/extract-subs/package-lock.json differ diff --git a/devices/nos/modules/subtitles/extract-subs/package.json b/devices/nos/modules/subtitles/extract-subs/package.json index ed3f8425..3d07ec09 100644 --- a/devices/nos/modules/subtitles/extract-subs/package.json +++ b/devices/nos/modules/subtitles/extract-subs/package.json @@ -1,14 +1,18 @@ { - "devDependencies": { - "@stylistic/eslint-plugin": "^1.4.0", - "@types/node": "^20.10.5", - "@typescript-eslint/eslint-plugin": "^6.9.1", - "@typescript-eslint/parser": "^6.9.1", - "eslint": "^8.52.0", - "typescript": "^5.3.3" - }, - "dependencies": { - "@types/fluent-ffmpeg": "^2.1.24", - "fluent-ffmpeg": "^2.1.2" - } + "devDependencies": { + "@eslint/js": "9.12.0", + "@stylistic/eslint-plugin": "2.9.0", + "@types/eslint__js": "8.42.3", + "@types/node": "22.7.5", + "eslint": "9.12.0", + "eslint-plugin-jsdoc": "50.3.2", + "fzf": "0.5.2", + "jiti": "2.3.3", + "typescript": "5.6.3", + "typescript-eslint": "8.8.1" + }, + "dependencies": { + "@types/fluent-ffmpeg": "2.1.26", + "fluent-ffmpeg": "2.1.3" + } } diff --git a/nixosModules/ags/config/package-lock.json b/nixosModules/ags/config/package-lock.json index 239aa943..680a7f70 100644 Binary files a/nixosModules/ags/config/package-lock.json and b/nixosModules/ags/config/package-lock.json differ diff --git a/nixosModules/ags/config/package.json b/nixosModules/ags/config/package.json index d5dd426a..0215baec 100644 --- a/nixosModules/ags/config/package.json +++ b/nixosModules/ags/config/package.json @@ -4,15 +4,15 @@ "main": "config.js", "type": "module", "dependencies": { - "@eslint/js": "9.11.1", - "@stylistic/eslint-plugin": "2.8.0", + "@eslint/js": "9.12.0", + "@stylistic/eslint-plugin": "2.9.0", "@types/eslint__js": "8.42.3", - "@types/node": "22.6.0", - "eslint": "9.11.1", - "eslint-plugin-jsdoc": "50.2.4", + "@types/node": "22.7.5", + "eslint": "9.12.0", + "eslint-plugin-jsdoc": "50.3.2", "fzf": "0.5.2", - "jiti": "1.21.6", - "typescript": "5.6.2", - "typescript-eslint": "8.7.0" + "jiti": "2.3.3", + "typescript": "5.6.3", + "typescript-eslint": "8.8.1" } } diff --git a/nixosModules/ags/default.nix b/nixosModules/ags/default.nix index 5dd9ea63..e56cc935 100644 --- a/nixosModules/ags/default.nix +++ b/nixosModules/ags/default.nix @@ -110,7 +110,7 @@ in { ''; "${agsConfigDir}/config/node_modules".source = - buildNodeModules ./config "sha256-Xv8p7XfUoEJIDf3/78MG6xLoUBSobjmjYwzno+YzP8o="; + buildNodeModules ./config "sha256-4ybtwyZs7AgIYiGm1RuWwEgrnkxAqIEkPZjJJfQV/6I="; } // (import ./icons.nix {inherit pkgs agsConfigDir;}) ); @@ -139,7 +139,9 @@ in { })); }; - wayland.windowManager.hyprland = { + wayland.windowManager.hyprland = let + runAgs = "pgrep ags -a | grep '/bin/gjs' && ags"; + in { settings = { animations = { bezier = [ @@ -167,18 +169,18 @@ in { ]; bind = [ - "$mainMod SHIFT, E , exec, ags -t win-powermenu" - "$mainMod , D , exec, ags -t win-applauncher" - "$mainMod , V , exec, ags -t win-clipboard" - " , Print, exec, ags -t win-screenshot" + "$mainMod SHIFT, E , exec, ${runAgs} -t win-powermenu" + "$mainMod , D , exec, ${runAgs} -t win-applauncher" + "$mainMod , V , exec, ${runAgs} -t win-clipboard" + " , Print, exec, ${runAgs} -t win-screenshot" ]; binde = [ ## Brightness control - ", XF86MonBrightnessUp , exec, ags -r 'Brightness.screen += 0.05'" - ", XF86MonBrightnessDown, exec, ags -r 'Brightness.screen -= 0.05'" + ", XF86MonBrightnessUp , exec, ${runAgs} -r 'Brightness.screen += 0.05'" + ", XF86MonBrightnessDown, exec, ${runAgs} -r 'Brightness.screen -= 0.05'" ]; - bindn = [" , Escape , exec, ags -r 'closeAll()'"]; - bindr = ["CAPS, Caps_Lock, exec, ags -r 'Brightness.fetchCapsState()'"]; + bindn = [" , Escape , exec, ${runAgs} -r 'closeAll()'"]; + bindr = ["CAPS, Caps_Lock, exec, ${runAgs} -r 'Brightness.fetchCapsState()'"]; }; }; }) diff --git a/nixosModules/ags/v2/default.nix b/nixosModules/ags/v2/default.nix index 0268b736..a63a98f5 100644 --- a/nixosModules/ags/v2/default.nix +++ b/nixosModules/ags/v2/default.nix @@ -37,7 +37,7 @@ self: { }) // { "${configDir}/node_modules".source = - buildNodeModules ./. "sha256-WjCfS8iEw5Mjor/sQ2t+i0Q1pqVpSDEDbbgrKwK+3cg="; + buildNodeModules ./. "sha256-u2LDbIKA32urN/NqqJrdAl46pUloPaoa5HoYDRJDh1k="; "${configDir}/tsconfig.json".source = pkgs.writers.writeJSON "tsconfig.json" { "$schema" = "https://json.schemastore.org/tsconfig"; diff --git a/nixosModules/ags/v2/package-lock.json b/nixosModules/ags/v2/package-lock.json index 18213386..a5f26363 100644 Binary files a/nixosModules/ags/v2/package-lock.json and b/nixosModules/ags/v2/package-lock.json differ diff --git a/nixosModules/ags/v2/package.json b/nixosModules/ags/v2/package.json index 09c32a46..e8997f45 100644 --- a/nixosModules/ags/v2/package.json +++ b/nixosModules/ags/v2/package.json @@ -3,14 +3,14 @@ "version": "0.0.0", "main": "app.ts", "dependencies": { - "@eslint/js": "9.11.1", - "@stylistic/eslint-plugin": "2.8.0", + "@eslint/js": "9.12.0", + "@stylistic/eslint-plugin": "2.9.0", "@types/eslint__js": "8.42.3", - "@types/node": "22.6.0", - "eslint": "9.11.1", - "eslint-plugin-jsdoc": "50.2.4", - "jiti": "1.21.6", - "typescript": "5.6.2", - "typescript-eslint": "8.7.0" + "@types/node": "22.7.5", + "eslint": "9.12.0", + "eslint-plugin-jsdoc": "50.3.2", + "jiti": "2.3.3", + "typescript": "5.6.3", + "typescript-eslint": "8.8.1" } } diff --git a/nixosModules/ags/v2/widgets/bar/items/workspaces.tsx b/nixosModules/ags/v2/widgets/bar/items/workspaces.tsx index 3b866b10..8dbafef5 100644 --- a/nixosModules/ags/v2/widgets/bar/items/workspaces.tsx +++ b/nixosModules/ags/v2/widgets/bar/items/workspaces.tsx @@ -1,4 +1,4 @@ -import { Gtk, idle, timeout, Widget } from 'astal'; +import { Gtk, timeout, Widget } from 'astal'; import AstalHyprland from 'gi://AstalHyprland?version=0.1'; const Hyprland = AstalHyprland.get_default(); @@ -23,7 +23,7 @@ const Workspace = ({ id = 0 }) => ( valign={Gtk.Align.CENTER} className="button" - setup={(self) => idle(() => { + setup={(self) => { const update = ( _: Widget.Box, client?: AstalHyprland.Client, @@ -37,10 +37,10 @@ const Workspace = ({ id = 0 }) => ( return; } - const isThisUrgent = client && + const isUrgent = client && client.get_workspace().get_id() === id; - if (isThisUrgent) { + if (isUrgent) { self.toggleClassName('urgent', true); // Only show for a sec when urgent is current workspace @@ -52,6 +52,7 @@ const Workspace = ({ id = 0 }) => ( } }; + update(self); self .hook(Hyprland, 'event', () => update(self)) @@ -63,7 +64,7 @@ const Workspace = ({ id = 0 }) => ( self.toggleClassName('urgent', false); } }); - })} + }} />