Skip to content

Commit

Permalink
Upgrade to Agsv2 + Astal (#533)
Browse files Browse the repository at this point in the history
* migrate to astal

* Reorganize project structure.

* progress

* Migrate Dashboard and Window Title modules.

* Migrate clock and notification bar modules.

* Remove unused code

* Media menu

* Rework network and volume modules

* Finish custom modules.

* Migrate battery bar module.

* Update battery module and organize helpers.

* Migrate workspace module.

* Wrap up bar modules.

* Checkpoint before I inevitbly blow something up.

* Updates

* Fix event propagation logic.

* Type fixes

* More type fixes

* Fix padding for event boxes.

* Migrate volume menu and refactor scroll event handlers.

* network module WIP

* Migrate network service.

* Migrate bluetooth menu

* Updates

* Migrate notifications

* Update scrolling behavior for custom modules.

* Improve popup notifications and add timer functionality.

* Migration notifications menu header/controls.

* Migrate notifications menu and consolidate notifications menu code.

* Migrate power menu.

* Dashboard progress

* Migrate dashboard

* Migrate media menu.

* Reduce media menu nesting.

* Finish updating media menu bindings to navigate active player.

* Migrate battery menu

* Consolidate code

* Migrate calendar menu

* Fix workspace logic to update on client add/change/remove and consolidate code.

* Migrate osd

* Consolidate hyprland service connections.

* Implement startup dropdown menu position allocation.

* Migrate settings menu (WIP)

* Settings dialo menu fixes

* Finish Dashboard menu

* Type updates

* update submoldule for types

* update github ci

* ci

* Submodule update

* Ci updates

* Remove type checking for now.

* ci fix

* Fix a bunch of stuff, losing track... need rest. Brb coffee

* Validate dropdown menu before render.

* Consolidate code and add auto-hide functionality.

* Improve auto-hide behavior.

* Consolidate audio menu code

* Organize bluetooth code

* Improve active player logic

* Properly dismiss a notification on action button resolution.

* Implement CLI command engine and migrate CLI commands.

* Handle variable disposal

* Bar component fixes and add hyprland startup rules.

* Handle potentially null bindings network and bluetooth bindings.

* Handle potentially null wired adapter.

* Fix GPU stats

* Handle poller for GPU

* Fix gpu bar logic.

* Clean up logic for stat bars.

* Handle wifi and wired bar icon bindings.

* Fix battery percentages

* Fix switch behavior

* Wifi staging fixes

* Reduce redundant hyprland service calls.

* Code cleanup

* Document the option code and reduce redundant calls to optimize performance.

* Remove outdated comment.

* Add JSDocs

* Add meson to build hyprpanel

* Consistency updates

* Organize commands

* Fix images not showing up on notifications.

* Remove todo

* Move hyprpanel configuration to the ~/.config/hyprpanel directory and add utility commands.

* Handle SRC directory for the bundled/built hyprpanel.

* Add namespaces to all windows

* Migrate systray

* systray updates

* Update meson to include ts, tsx and scss files.

* Remove log from meson

* Fix file choose path and make it float.

* Added a command to check the dependency status

* Update dep names.

* Get scale directly from env

* Add todo
  • Loading branch information
Jas-SinghFSU authored Dec 21, 2024
1 parent 955eed6 commit 2ffd602
Show file tree
Hide file tree
Showing 605 changed files with 19,542 additions and 15,998 deletions.
2 changes: 1 addition & 1 deletion .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module.exports = {
plugins: ['@typescript-eslint', 'import'],
extends: ['plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'],
root: true,
ignorePatterns: ['.eslintrc.js', 'types/**/*.ts', 'scripts/**/*.js'],
ignorePatterns: ["/*", "!/src"],
env: {
es6: true,
browser: true,
Expand Down
33 changes: 17 additions & 16 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,22 @@ jobs:
runs-on: ubuntu-latest

steps:
- name: Checkout main repository
- name: Checkout main repository with submodules
uses: actions/checkout@v3

- name: Clone ags-types to temp dir
uses: actions/checkout@v3
with:
repository: Jas-SinghFSU/ags-types
path: temp-ags-types

- name: Copy types to types/
run: |
rm -rf types
mkdir -p types
cp -R temp-ags-types/types/* types/
rm -rf temp-ags-types
# with:
# submodules: true
#
# - name: Clone astal repository to /usr/share/astal/gjs
# run: |
# sudo mkdir -p /usr/share/astal/
# sudo git clone https://github.com/Jas-SinghFSU/astalgjs.git /usr/share/astal
#
# - name: Copy types to @girs/
# run: |
# rm -rf @girs
# mkdir -p @girs
# cp -R external/ags-types/@girs/* @girs/
# rm -rf external/ags-types

- name: Node Setup
uses: actions/setup-node@v3
Expand All @@ -37,5 +38,5 @@ jobs:
- name: ESLint
run: npm run lint

- name: Type Check
run: npx tsc --noEmit --pretty --extendedDiagnostics
# - name: Type Check
# run: npx tsc --noEmit --pretty --extendedDiagnostics
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
.weather.json
node_modules

@girs
5 changes: 3 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[submodule "external/ags-types"]
path = external/ags-types
url = https://github.com/Jas-SinghFSU/ags-types.git
path = external/ags-types
url = https://github.com/Jas-SinghFSU/ags-types.git

49 changes: 0 additions & 49 deletions PKGBUILD

This file was deleted.

107 changes: 107 additions & 0 deletions app.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
import './src/lib/session';
import './src/scss/style';
import './src/globals/useTheme';
import './src/globals/wallpaper';
import './src/globals/systray';
import './src/globals/dropdown';
import './src/globals/utilities';
import './src/components/bar/utils/sideEffects';

import { Bar } from './src/components/bar';
import { DropdownMenus, StandardWindows } from './src/components/menus/exports';
import Notifications from './src/components/notifications';
import SettingsDialog from './src/components/settings/index';
import { bash, forMonitors } from 'src/lib/utils';
import options from 'src/options';
import OSD from 'src/components/osd/index';
import { App } from 'astal/gtk3';
import { exec, execAsync } from 'astal';
import { hyprlandService } from 'src/lib/constants/services';
import { handleRealization } from 'src/components/menus/shared/dropdown/helpers';
import { isDropdownMenu } from 'src/lib/constants/options.js';
import { initializeSystemBehaviors } from 'src/lib/behaviors';
import { runCLI } from 'src/cli/commander';

const initializeStartupScripts = (): void => {
execAsync(`python3 ${SRC_DIR}/scripts/bluetooth.py`).catch((err) => console.error(err));
};

const initializeMenus = (): void => {
StandardWindows.forEach((window) => {
return window();
});

DropdownMenus.forEach((window) => {
return window();
});

DropdownMenus.forEach((window) => {
const windowName = window.name.replace('_default', '').concat('menu').toLowerCase();

if (!isDropdownMenu(windowName)) {
return;
}

handleRealization(windowName);
});
};

App.start({
instanceName: 'hyprpanel',
requestHandler(request: string, res: (response: unknown) => void) {
runCLI(request, res);
},
main() {
initializeStartupScripts();

Notifications();
OSD();
forMonitors(Bar).forEach((bar: JSX.Element) => bar);
SettingsDialog();
initializeMenus();

initializeSystemBehaviors();
},
});

/**
* Function to determine if the current OS is NixOS by parsing /etc/os-release.
* @returns True if NixOS, false otherwise.
*/
const isNixOS = (): boolean => {
try {
const osRelease = exec('cat /etc/os-release').toString();
const idMatch = osRelease.match(/^ID\s*=\s*"?([^"\n]+)"?/m);

if (idMatch && idMatch[1].toLowerCase() === 'nixos') {
return true;
}

return false;
} catch (error) {
console.error('Error detecting OS:', error);
return false;
}
};

/**
* Function to generate the appropriate restart command based on the OS.
* @returns The modified or original restart command.
*/
const getRestartCommand = (): string => {
const isNix = isNixOS();
const command = options.hyprpanel.restartCommand.get();

if (isNix) {
return command.replace(/\bags\b/g, 'hyprpanel');
}

return command;
};

hyprlandService.connect('monitor-added', () => {
if (options.hyprpanel.restartAgs.get()) {
const restartAgsCommand = getRestartCommand();
bash(restartAgsCommand);
}
});
1 change: 1 addition & 0 deletions astal
58 changes: 0 additions & 58 deletions config.js

This file was deleted.

Loading

0 comments on commit 2ffd602

Please sign in to comment.