Giter VIP home page Giter VIP logo

ags's People

Contributors

ahmedsaadi0 avatar alvsz avatar aylur avatar benthejack-vuw avatar daulatojha17 avatar dependabot[bot] avatar dongsu8142 avatar end-4 avatar fufexan avatar h-banii avatar jappie3 avatar kotontrion avatar mariasolos avatar matt1432 avatar mauricekraus avatar micha4w avatar mrhyperbit avatar musjj avatar nenikitov avatar nicolaivds avatar notashelf avatar pixisvi avatar postsolar avatar qxb3 avatar robin-sch avatar rykerh avatar sameoldlab avatar soratenshi avatar vaxerski avatar zoriya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ags's Issues

Add scss setup guide in wiki

  • Just spent my night tearing out your setup to get the scss compiler working. Just thinking it'd be nice to have a guide for that in the wiki. It's a great start for eww users who are already familiar with scss.

Didn't launch, weird

When i try to run this app it will spit some logs like this:

(ags:38597): Gjs-WARNING **: 19:14:04.354: JS ERROR: ImportError: No JS module 'config' found in search path
getConfig@resource:///com/github/Aylur/ags/js/utils.js:114:9
_load@resource:///com/github/Aylur/ags/js/app.js:99:24
vfunc_activate@resource:///com/github/Aylur/ags/js/app.js:91:14
_init/GLib.MainLoop.prototype.runAsync/</<@resource:///org/gnome/gjs/modules/core/overrides/GLib.js:266:34


(ags:38597): Gjs-WARNING **: 19:14:04.354: JS ERROR: ImportError: No JS module 'config' found in search path
getConfig@resource:///com/github/Aylur/ags/js/utils.js:114:9
error@resource:///com/github/Aylur/ags/js/utils.js:11:5
_load@resource:///com/github/Aylur/ags/js/app.js:101:18
vfunc_activate@resource:///com/github/Aylur/ags/js/app.js:91:14
_init/GLib.MainLoop.prototype.runAsync/</<@resource:///org/gnome/gjs/modules/core/overrides/GLib.js:266:34

Gjs-Message: 19:14:04.354: JS LOG: ERROR: No config was provided or there was an error

(ags:38597): Gjs-WARNING **: 19:14:04.354: JS ERROR: ImportError: No JS module 'config' found in search path
getConfig@resource:///com/github/Aylur/ags/js/utils.js:114:9
error@resource:///com/github/Aylur/ags/js/utils.js:14:9
_load@resource:///com/github/Aylur/ags/js/app.js:101:18
vfunc_activate@resource:///com/github/Aylur/ags/js/app.js:91:14
_init/GLib.MainLoop.prototype.runAsync/</<@resource:///org/gnome/gjs/modules/core/overrides/GLib.js:266:34


** (ags:38597): WARNING **: 19:14:04.371: AT-SPI: Could not obtain desktop path or name


** (ags:38597): WARNING **: 19:14:04.388: AT-SPI: Could not obtain desktop path or name


** (ags:38597): WARNING **: 19:14:04.389: atk-bridge: get_device_events_reply: unknown signature

** (ags:38597): WARNING **: 19:14:04.389: atk-bridge: GetRegisteredEvents returned message with unknown signature

** (ags:38597): WARNING **: 19:14:04.403: AT-SPI: Could not obtain desktop path or name


** (ags:38597): WARNING **: 19:14:04.404: atk-bridge: get_device_events_reply: unknown signature

** (ags:38597): WARNING **: 19:14:04.404: atk-bridge: GetRegisteredEvents returned message with unknown signature

** (ags:38597): WARNING **: 19:14:04.420: AT-SPI: Could not obtain desktop path or name


** (ags:38597): WARNING **: 19:14:04.420: atk-bridge: get_device_events_reply: unknown signature

** (ags:38597): WARNING **: 19:14:04.420: atk-bridge: GetRegisteredEvents returned message with unknown signature

I don't know the problem since i'm still kinda new to linux. Could you help me?

Keyboard layout on Hyprland

Hi, I suspect the keyboard layout doesn't work properly. I am using ags from the latest commit 0ee0d52, Hyprland 0.28.0-1 on ArchLinux. The config.js is updated to the latest example.
I defined

const Kbl = () => Label({
    connections: [[Hyprland, (label,kbName,layoutName) => {
	label.label = kbName? ('kb:' + kbName + ', ln: ' + layoutName ) : 'yy';
    }, 'keyboard-layout']],
});

and added Kbl() to the Right children array.
I see two issues:

  1. At start, the label shows yy
  2. After switching layouts in Hyprland, the label shows kb:at-translated-set2-keyboard, ln: undefined. I can confirm that layout switch works properly and I can type in all the languages. Relevant Hyprland config:
 input {
    kb_layout = us,ru,il
    kb_variant = ,phonetic,
    kb_model = pc104
    kb_options = grp:ctrl_space_toggle
    ...

Please advise. Thanks in advance

[Arch] Multiple critical erros when launching ags

I get the following errors:

ags:1559): Gjs-CRITICAL **: 14:59:42.082: JS ERROR: TypeError: device is undefined
_INTERNET@resource:///com/github/Aylur/ags/js/service/network.js:5:13
get internet@resource:///com/github/Aylur/ags/js/service/network.js:77:29
Widget.widgets["network/wired-indicator"]/<.connections</<@/home/aefka/.config/ags/modules/network.js:43:37
Dynamic/box.update@resource:///com/github/Aylur/ags/js/widgets.js:214:26
Widget.widgets["network/wired-indicator"]/<.connections<@/home/aefka/.config/ags/modules/network.js:39:48
connect/bind<@resource:///com/github/Aylur/ags/js/utils.js:78:66
_sync@resource:///com/github/Aylur/ags/js/service/network.js:131:14
_clientReady@resource:///com/github/Aylur/ags/js/service/network.js:115:14
NetworkService/<@resource:///com/github/Aylur/ags/js/service/network.js:91:22
main@resource:////com/github/Aylur/ags/js/main.js:45:26
run@resource:///org/gnome/gjs/modules/script/package.js:206:19


(ags:1559): Gjs-CRITICAL **: 14:59:42.082: JS ERROR: TypeError: device is undefined
_INTERNET@resource:///com/github/Aylur/ags/js/service/network.js:5:13
get internet@resource:///com/github/Aylur/ags/js/service/network.js:77:29
Widget.widgets["network/wired-indicator"]/<.connections</<@/home/aefka/.config/ags/modules/network.js:43:37
Dynamic/box.update@resource:///com/github/Aylur/ags/js/widgets.js:214:26
Widget.widgets["network/wired-indicator"]/<.connections<@/home/aefka/.config/ags/modules/network.js:39:48
connect/bind<@resource:///com/github/Aylur/ags/js/utils.js:78:66
_sync@resource:///com/github/Aylur/ags/js/service/network.js:131:14
_clientReady@resource:///com/github/Aylur/ags/js/service/network.js:115:14
NetworkService/<@resource:///com/github/Aylur/ags/js/service/network.js:91:22
main@resource:////com/github/Aylur/ags/js/main.js:45:26
run@resource:///org/gnome/gjs/modules/script/package.js:206:19


(ags:1559): Gjs-CRITICAL **: 14:59:45.150: JS ERROR: TypeError: device is undefined
_INTERNET@resource:///com/github/Aylur/ags/js/service/network.js:5:13
get internet@resource:///com/github/Aylur/ags/js/service/network.js:77:29
Widget.widgets["network/wired-indicator"]/<.connections</<@/home/aefka/.config/ags/modules/network.js:43:37
Dynamic/box.update@resource:///com/github/Aylur/ags/js/widgets.js:214:26
Widget.widgets["network/wired-indicator"]/<.connections<@/home/aefka/.config/ags/modules/network.js:39:48
connect/bind<@resource:///com/github/Aylur/ags/js/utils.js:78:66
_sync@resource:///com/github/Aylur/ags/js/service/network.js:131:14
_activeAp/this._apBind<@resource:///com/github/Aylur/ags/js/service/network.js:44:72
main@resource:////com/github/Aylur/ags/js/main.js:45:26
run@resource:///org/gnome/gjs/modules/script/package.js:206:19


(ags:1559): Gjs-CRITICAL **: 14:59:45.151: JS ERROR: TypeError: device is undefined
_INTERNET@resource:///com/github/Aylur/ags/js/service/network.js:5:13
get internet@resource:///com/github/Aylur/ags/js/service/network.js:77:29
Widget.widgets["network/wired-indicator"]/<.connections</<@/home/aefka/.config/ags/modules/network.js:43:37
Dynamic/box.update@resource:///com/github/Aylur/ags/js/widgets.js:214:26
Widget.widgets["network/wired-indicator"]/<.connections<@/home/aefka/.config/ags/modules/network.js:39:48
connect/bind<@resource:///com/github/Aylur/ags/js/utils.js:78:66
_sync@resource:///com/github/Aylur/ags/js/service/network.js:131:14
_activeAp/this._apBind<@resource:///com/github/Aylur/ags/js/service/network.js:44:72
main@resource:////com/github/Aylur/ags/js/main.js:45:26
run@resource:///org/gnome/gjs/modules/script/package.js:206:19

...

Also, I don't know if something went wrong with Aylur's dotfiles, or I'm missing some installs, but some icons seems to be bugged, as well as not being able to apply the themes, and his extension (Aylur's Widgets) is "Not compatible" apparently ? Here is what it ressembles now:
20230721_15h22m19s_grim

How would I got about spawning the example for each monitor

How would I got about spawning the example bar for each monitor? Cannot figure how I would do that.
I know how to spawn more of the bars. Right now it launches on the monitor that I am on when launching ags. Do I need to like add some padding or something?

Toggle-window behavior question

Hi @Aylur ,
Given the following config:

import {
    Window
} from 'resource:///com/github/Aylur/ags/widget.js';

const InfoPopup = () => Window({
    name: 'InfoPopup',
    style: 'background-color: red',
    visible: false,
})

export default {
    windows: [
	InfoPopup(),
    ],
};

if I run ags --toggle-window 'InfoPopup', the window is shown after the command run the third time only and not the first. If the window has visible: true property, the command works obviously the second time, but it means the window should be shown immediately at the start of ags, no?
This is a reduced example, the goal is to bind onClicked: () => App.toggleWindow('InfoPopup') to a button.
Thank you in advance

mpris service/dbus issue after system has been up a while

If I restart ags after my system has been up for over 12 hours or so I get this error from the mpris service:

image

The mpris service at this point also no longer works no matter the restarting of players etc I do I have to reboot to get it working again.

Playerctl is still working as normal as are anything else I have that interacts with mpris.
I'm guessing if I used them any other service that does ListNamesRemote would also start failing.

At a loss here as I can't see anything wrong in ags and everything else on my system using dbus seems to be working fine.

setup copr repo

First of all, this is looking like an amazing project. You clearly are putting in loads of work, so thanks! it looks very promising!

I'd love to test it out, but i'm currently running on silverblue (universal blue), so build it from source isn't any easy option.

Any chance of setting up a copr repo to make to easier for people to install and test it?

Document Utils.subprocess and don't filter out empty lines

Utils.subprocess is very useful for writing custom services, and can easily equate eww's deflisten. It's a shame it's not documented in the wiki.

Also, here, empty lines are filtered out on the function level, which I don't believe should happen. I've had some scripts that output an empty line or some special value depending on the state, and I would rather keep being able to use the empty value. I think the empty lines should still be sent to the callback, and the person using the subprocess should have to filter them on their own if they choose to do so.

Build failing on Arch

Trying to build this on Arch, and after meson install -C build, i get error TS2307 Cannot find modules error

Cant compile after the latest update

Below error appear

[15/18] Generating src/typescript-compile with a custom command
FAILED: src/tsc-output
/usr/bin/tsc --outDir /home/thyeun/Public/ags/build/tsc-out
../src/app.ts(1,17): error TS2307: Cannot find module 'gi://Gtk?version=3.0' or its corresponding type declarations.
../src/app.ts(2,17): error TS2307: Cannot find module 'gi://Gdk?version=3.0' or its corresponding type declarations.
../src/app.ts(45,26): error TS2339: Property 'emit' does not exist on type 'App'.
../src/app.ts(65,22): error TS2576: Property 'quit' does not exist on type 'App'. Did you mean to access the static member 'App.quit' instead?
../src/app.ts(88,17): error TS2345: Argument of type 'this' is not assignable to parameter of type 'Object'.
  Type 'App' is missing the following properties from type 'Object': g_type_instance, bind_property, bind_property_full, force_floating, and 30 more.
../src/app.ts(102,14): error TS2339: Property 'hold' does not exist on type 'App'.
../src/app.ts(126,53): error TS2339: Property 'emit' does not exist on type 'App'.
../src/app.ts(136,14): error TS2339: Property 'emit' does not exist on type 'App'.
../src/app.ts(148,14): error TS2551: Property 'add_action' does not exist on type 'App'. Did you mean '_addAction'?
../src/dbus/dbus.ts(26,26): error TS2352: Conversion of type '(bus: DBusConnection, name: string, object: string, asyncCallback?: ((initable: DBusProxy | null, error: unknown) => void) | undefined, cancellable?: Cancellable | null | undefined, flags?: DBusProxyFlags | undefined) => DBusProxy' to type 'TDBusProxy' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
../src/dbus/mpris.ts(87,33): error TS2352: Conversion of type '(bus: DBusConnection, name: string, object: string, asyncCallback?: ((initable: DBusProxy | null, error: unknown) => void) | undefined, cancellable?: Cancellable | null | undefined, flags?: DBusProxyFlags | undefined) => DBusProxy' to type 'TPlayerProxy' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
../src/dbus/mpris.ts(88,27): error TS2352: Conversion of type '(bus: DBusConnection, name: string, object: string, asyncCallback?: ((initable: DBusProxy | null, error: unknown) => void) | undefined, cancellable?: Cancellable | null | undefined, flags?: DBusProxyFlags | undefined) => DBusProxy' to type 'TMprisProxy' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
../src/main.ts(52,26): error TS2339: Property 'run' does not exist on type 'App'.
../src/service/apps.ts(46,5): error TS2322: Type 'string | null' is not assignable to type 'string'.
  Type 'null' is not assignable to type 'string'.
../src/service/battery.ts(34,23): error TS7009: 'new' expression, whose target lacks a construct signature, implicitly has an 'any' type.
../src/service/mpris.ts(97,63): error TS2551: Property 'deep_unpack' does not exist on type 'Variant'. Did you mean 'deepUnpack'?
../src/service/notifications.ts(2,23): error TS2307: Cannot find module 'gi://GdkPixbuf' or its corresponding type declarations.
../src/service/notifications.ts(14,20): error TS2315: Type 'Variant' is not generic.
../src/service/notifications.ts(15,23): error TS2315: Type 'Variant' is not generic.
../src/service/notifications.ts(16,17): error TS2315: Type 'Variant' is not generic.
../src/service/notifications.ts(138,67): error TS2339: Property 'new' does not exist on type 'typeof Variant'.
../src/service/notifications.ts(149,62): error TS2339: Property 'new' does not exist on type 'typeof Variant'.
../src/service/notifications.ts(210,44): error TS2315: Type 'Variant' is not generic.
../src/service/service.ts(2,17): error TS2307: Cannot find module 'gi://Gtk?version=3.0' or its corresponding type declarations.
../src/utils.ts(1,17): error TS2307: Cannot find module 'gi://Gtk?version=3.0' or its corresponding type declarations.
../src/utils.ts(244,35): error TS2345: Argument of type 'string | null' is not assignable to parameter of type 'string'.
  Type 'null' is not assignable to type 'string'.
../src/utils.ts(249,32): error TS2345: Argument of type 'string | null' is not assignable to parameter of type 'string'.
  Type 'null' is not assignable to type 'string'.
../src/widget.ts(1,17): error TS2307: Cannot find module 'gi://Gtk?version=3.0' or its corresponding type declarations.
../src/window.ts(1,17): error TS2307: Cannot find module 'gi://Gtk?version=3.0' or its corresponding type declarations.
../src/window.ts(2,17): error TS2307: Cannot find module 'gi://Gdk?version=3.0' or its corresponding type declarations.
../src/window.ts(126,41): error TS7006: Parameter '_' implicitly has an 'any' type.
../src/window.ts(126,44): error TS7006: Parameter 'event' implicitly has an 'any' type.
[16/18] Generating subprojects/gvc/...mmand (wrapped by meson to set env)
ninja: build stopped: subcommand failed.
Could not rebuild /home/thyeun/Public/ags/build

Slider min

Hi, I'm trying to set min value of brightness slider to 10% so my screen didn't get black.
I try:

export const BrightnessSlider = (props) =>
  Slider({
    ...props,
    drawValue: false,
    hexpand: true,
    min: 0.1,

But when I slide it still go till 0.
Am I doing something wrong?

QOL change for className prop

When accessing via the setter, replace all classes.

Why: It feels more logical since a setter is meant to "set" a value, not just "append" it. As it is currently, doing widget.className in, say a setup call will simply add a class to the classNames, not replace them.

Main reason I'm bringing this up is that I'm trying to write dark/light themes for my config. My thought process was that I could have two classes, dark and light, define colors for each of them based on other, parent classes .modules.dark, .modules.light, and wrote a Service to change the classes when it emits "changed". Unfortunately, doing widget.className = Theme.theme does not replace the classes, it seems to append to it, which is a problem since then I can't really use this method without going deep into the GTK/GJS code and modifying it through a StyleContext instead.

If this isn't possible what would you suggest as an alternative to what I'm trying to do.

can labwc work with your project

i like the look would love to see a application or start menu. but can i use your project with labwc current labwc for example doesn't support multiple desktops aka workspaces? help info pointers or alternative config and need files would be a huge help.
i have kanashi for my wallpaper manager it uses waybg to load the wallpaper as a backend. mako for events and libindecator for tray support for different wayland bar and panles use it. wire plumber and pipewire is my sound network manager is for network and bauh if my gui application manager. i want to switch to eww instead of waybar and rofi. please help?

applauncher broken

I am on the latest build and I seem to be having a few issues:

  1. Audio is completely broken, no audio at all and the widgets are missing
    I get this error on trying to increase/decrease volume:
(ags:90262): Gjs-CRITICAL **: 15:13:03.651: JS ERROR: TypeError: ags.Service.Audio.speaker is undefined
anonymous@resource:///com/github/Aylur/ags/js/app.js line 114 > Function:3:1
_exportActions/<@resource:///com/github/Aylur/ags/js/app.js:115:13
main@resource:////com/github/Aylur/ags/js/main.js:45:26
run@resource:///org/gnome/gjs/modules/script/package.js:206:19
  1. Application launcher also seems to be broken, it displays nothing
    Error when trying to search something:
(ags:90262): Gjs-CRITICAL **: 15:13:50.664: JS ERROR: TypeError: search.toLowerCase is not a function
_match@resource:///com/github/Aylur/ags/js/service/apps.js:16:48
_search@resource:///com/github/Aylur/ags/js/service/apps.js:20:12
query/<@resource:///com/github/Aylur/ags/js/service/apps.js:39:48
query@resource:///com/github/Aylur/ags/js/service/apps.js:39:27
query@resource:///com/github/Aylur/ags/js/service/apps.js:61:38
onChange@/home/incognitux/.config/ags/modules/applauncher.js:128:26
Entry/<@resource:///com/github/Aylur/ags/js/widgets.js:277:19
Widget.widgets.applauncher/<.connections<@/home/incognitux/.config/ags/modules/applauncher.js:143:19
connect/bind<@resource:///com/github/Aylur/ags/js/utils.js:78:66
_load/</<@resource:///com/github/Aylur/ags/js/app.js:94:53
closeWindow@resource:///com/github/Aylur/ags/js/app.js:40:15
Window/<@resource:///com/github/Aylur/ags/js/window.js:74:43
main@resource:////com/github/Aylur/ags/js/main.js:45:26
run@resource:///org/gnome/gjs/modules/script/package.js:206:19

nix flake type lib does not exist

When I use ags with nix as a flake i get the warning:

** (ags:296756): WARNING **: 11:46:12.888: Failed to load shared library '/nix/store/xcskqs03w7nbpl7mb22prk27xq74n3jb-ags-1.0.0/lib/libgvc.so' referenced by the typelib: /nix/store/xcskqs03w7nbpl7mb22prk27xq74n3jb-ags-1.0.0/lib/libgvc.so: cannot open shared object file: No such file or directory

I checked the given path, and i found that the library is under /nix/store/xcskqs03w7nbpl7mb22prk27xq74n3jb-ags-1.0.0/lib/ags/libgvc.so which leads to the error.

So this leads me to believe the lib-patch is the cause of the error.

Dismiss popups via click away

Clicking out of a popup window should close it. The eww way of doing this is to create an invisible button the size of the screen and close the popup when this button is pressed but I would prefer having it automatically by ags.

Mpris module not showing non-square album art

Hi, I just recently switched to ags and it's been amazing so far. Just found a small issue with the Mpris module not showing album art when the album art is rectangle and wanted to let you know

onClick triggers on mouse release, not on press

  • The function assigned to onClick runs when the mouse button is released, not pressed
  • This makes interaction feel slower
  • Can we have onClick for mouse press and onClickRelease for release?

Suddently stop working as of latest update

I updated Hyprland, and AGS last night, it seems that for some reason AGS no longer renders the windows on screen anymore.

There are no errors on ags side when running ags just a couple of warnings, but no windows render sadly.

Any idea on how to even debug this?

Toggling quick settings and interval/timeout of the script

I've implemented a nightlight (using wlsunset) toggle in the quick settings.
On/Off toggling is working fine.
I have 2 problems with my implementation:

  1. I have automatic script in the background that turns on nightlight in night hours and disables it in the morning. I can not work it out where should I implement timeout or interval script and how to?
  2. Icon does not change on startup/on restart of ags depending on if the nightlight is enabled or disabled

What is expected behavior:
The icon is representing exact state of night-light and by clicking of the toggle I can choose to either enable/disable the night-light effect on the screen - hard switch.

This is my nightlight.js file:
https://github.com/cafetestrest/dotfiles/blob/develop/.config/ags/modules/nightlight.js

PS: Is there a right-click command of the icon?

Alternative config path

Given that it seems the goal of ags (+ your dot files) is pretty close to making a full desktop environment, would it make sense to allow the option to have the config files inside /etc/ ?

network module error

When the wifi menu is opened it doesn't show the available wifi networks and outputs:

(ags:78839): Gjs-CRITICAL **: 14:55:49.131: JS ERROR: TypeError: ap.ssid is null
get accessPoints/<@resource:///com/github/Aylur/ags/js/service/network.js:68:13
get accessPoints@resource:///com/github/Aylur/ags/js/service/network.js:64:49
Widget.widgets["network/wifi-selection"]/<.connections<@/home/incognitux/.config/ags/modules/network.js:115:9
connect/bind<@resource:///com/github/Aylur/ags/js/utils.js:78:66
_sync@resource:///com/github/Aylur/ags/js/service/network.js:150:14
Wifi/<@resource:///com/github/Aylur/ags/js/service/network.js:43:51
main@resource:////com/github/Aylur/ags/js/main.js:45:26
run@resource:///org/gnome/gjs/modules/script/package.js:206:19

Additional info

  • Built from source on Fedora Linux 38
  • NetworkManager version: 1.42.8-1.fc38
  • ags version: 0.1.0

If this is a problem on my side how would I go about fixing it?

Any chances of adopting a different name?

This might sound very silly and I guess understandably so but is there any possibility that the project might go under a different name? ags makes it difficult to find it and really just doesn't give any idea what it is about upfront, plus it conflicts with another project that is apparently meant to be a game engine

[Arch] Fail meson setup build

When arriving at the step meson setup build, it fails and I got stuck trying to fix it.

$ meson setup build
The Meson build system
Version: 1.2.0
Source dir: /home/aefka/Downloads/ags
Build dir: /home/aefka/Downloads/ags/build
Build type: native build
Project name: ags
Project version: 0.1.0
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.8.1)
Run-time dependency gobject-introspection-1.0 found: YES 1.76.1
Run-time dependency gio-2.0 found: YES 2.76.4
Run-time dependency gjs-1.0 found: YES 1.76.2
Run-time dependency gtk+-3.0 found: YES 3.24.38

Executing subproject gvc 

gvc| Project name: gvc
gvc| Project version: undefined
gvc| C compiler for the host machine: cc (gcc 13.1.1 "cc (GCC) 13.1.1 20230714")
gvc| C linker for the host machine: cc ld.bfd 2.40.0
gvc| Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
gvc| Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
gvc| Dependency gio-2.0 found: YES 2.76.4 (cached)
gvc| Run-time dependency gobject-2.0 found: YES 2.76.4
gvc| Run-time dependency libpulse found: YES 16.1
gvc| Run-time dependency libpulse-mainloop-glib found: YES 16.1
gvc| Dependency gobject-introspection-1.0 found: YES 1.76.1 (cached)
gvc| Dependency gobject-introspection-1.0 found: YES 1.76.1 (cached)
gvc| Program g-ir-scanner found: YES (/usr/bin/g-ir-scanner)
gvc| Dependency gobject-introspection-1.0 found: YES 1.76.1 (cached)
gvc| Program g-ir-compiler found: YES (/usr/bin/g-ir-compiler)
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/mesonbuild/mesonmain.py", line 194, in run
    return options.run_func(options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/msetup.py", line 358, in run
    app.generate()
  File "/usr/lib/python3.11/site-packages/mesonbuild/msetup.py", line 183, in generate
    return self._generate(env, capture, vslite_ctx)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/msetup.py", line 228, in _generate
    intr.run()
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreter/interpreter.py", line 2997, in run
    super().run()
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 164, in run
    self.evaluate_codeblock(self.ast, start=1)
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 196, in evaluate_statement
    return self.function_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 521, in function_call
    res = func(node, func_args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/decorators.py", line 277, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/decorators.py", line 596, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreter/interpreter.py", line 878, in func_subproject
    return self.do_subproject(args[0], 'meson', kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreter/interpreter.py", line 959, in do_subproject
    raise e
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreter/interpreter.py", line 943, in do_subproject
    return self._do_subproject_meson(subp_name, subdir, default_options, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreter/interpreter.py", line 986, in _do_subproject_meson
    subi.run()
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreter/interpreter.py", line 2997, in run
    super().run()
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 164, in run
    self.evaluate_codeblock(self.ast, start=1)
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 206, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 301, in evaluate_if
    self.evaluate_codeblock(i.block)
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 190, in evaluate_codeblock
    raise e
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 182, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 198, in evaluate_statement
    self.assignment(cur)
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 635, in assignment
    value = self.evaluate_statement(node.value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 200, in evaluate_statement
    return self.method_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 550, in method_call
    res = obj.method_call(method_name, args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreter/interpreterobjects.py", line 811, in method_call
    ret = method(state, args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/decorators.py", line 277, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/interpreterbase/decorators.py", line 596, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/modules/gnome.py", line 1144, in generate_gir
    self._get_dependencies_flags(deps, state, depends, use_gir_args=True)
  File "/usr/lib/python3.11/site-packages/mesonbuild/modules/gnome.py", line 737, in _get_dependencies_flags
    cflags, internal_ldflags_raw, external_ldflags_raw, gi_includes, depends = self._get_dependencies_flags_raw(deps, state, depends, include_rpath, use_gir_args)
                                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/modules/gnome.py", line 716, in _get_dependencies_flags_raw
    if use_gir_args and self._gir_has_option('--extra-library'):
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/modules/gnome.py", line 794, in _gir_has_option
    p, o, _ = Popen_safe(exe.get_command() + ['--help'], stderr=subprocess.STDOUT)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mesonbuild/utils/universal.py", line 1485, in Popen_safe
    p = subprocess.Popen(args, universal_newlines=True, encoding=encoding, close_fds=False,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1024, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.11/subprocess.py", line 1805, in _execute_child
    self._posix_spawn(args, executable, env, restore_signals,
  File "/usr/lib/python3.11/subprocess.py", line 1749, in _posix_spawn
    self.pid = os.posix_spawn(executable, args, env, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/g-ir-scanner'

ERROR: Unhandled python OSError. This is probably not a Meson bug, but an issue with your build environment.

One problem

When I enter ags, it reports the following error:

(ags:23609): Gjs-WARNING **: 13:31:34.064: JS ERROR: SyntaxError: import declarations may only appear at top level of a module @ /home/ash/.config/ags/config.js:1:0

(ags:23609): Gjs-WARNING **: 13:31:34.064: JS ERROR: SyntaxError: import declarations may only appear at top level of a module @ /home/ash/.config/ags/config.js:1:0
Gjs-Message: 13:31:34.064: JS LOG: ERROR: No config was provided or there was an error

(ags:23609): Gjs-WARNING **: 13:31:34.064: JS ERROR: SyntaxError: import declarations may only appear at top level of a module @ /home/ash/.config/ags/config.js:1:0

Can someone give me some help

Reasoning behind GTK3

Hi, I'd like to know the reasoning on using GTK3 instead of GTK4.

Some things are easier with GTK4, just wanted to understand :)

Hyprland monitor property should be mapped <Number, Monitor>

Why? Window takes a monitor property and uses a number to determine which monitor id should be used. It breaks the logical following for Hyprland.monitors to not be mapped via numbers, because it makes it harder to try and perform any kinds of connections or setup based on a specific monitor.

Example: I want to position my bar 1% from the top and left-right. Because I can't do this via GTK css nor (from what I can find) with ags as is, I need to use Hyprland.monitors["MONITOR"].width/.height to access the properties needed for calculation, then dynamically rewrite the Window.margin property. However, because I can only access the monitors with a "name", I now need to manually loop through to find id == 0, then get its width/height props. It's just strange, please make one or the other, preferrably numbers because thats more portable across systems (laptops have eDP-1, pcs have HDMI-A-1, and who knows what else, but numbers are consistent).

EDIT:

Scratch that I can't even access window.margin from a setup call haha, are there ways to accomplish what im trying to do here?

X11 support

Any possibility of supporting X11? Since it's GTK-based, I'd assume that X11 support shouldn't be impossible.

I've been looking for something better than eww, so I took a cursory glance through the wiki and examples and I'm already loving it (real icons!!!).

I'm stuck on an old machine with a legacy nvidia card, making wayland a non-option, so X11 support would be absolutely wonderful.

Dynamic monitors

All windows have to be defined inside the windows array of the default export of config.js, and we can't register new windows at runtime (I think). I would like to automatically create new bars for newly plugged in monitors so to do that ags should either:

  • Support a monitor factory method in the config that would create a list of windows for a given monitor id/name.
  • Support dynamic windows creation via a connect or an event to a service that will be notified when a monitor is created/destroyed.

Is there a discord?

Hey, great job @Aylur this + your dotfiles.

In few minutes I had this up and running and was great.
I think your dotfiles is a good starting point but instead of everyone doing its own ags config, we could provide one more customizable.

BUt a side from that, I wanted to ask if there is, or there's an idea to have a discord or anything to talk about ags etc and try to make it more mainstream with amazing things.

nix flake with gtk4

Hey @dongsu8142
I want to migrate to Gtk4, but gtk4-layer-shell is not packaged on nixpkgs. Is a flake still possible?
I could make everything work on Fedora by placing the .typelib and .so file in the correct path. On Arch gtk4-layer-shell is packaged on the AUR, and It works without tweaking. I have no idea how this works on Nix though

how to choose gtk with two bluetooth different version?

On your ags how you choose gtk that have two bluetooth different version?

As from your eww, we can choose which gtk version to be use on the file myshell.

myshell

imports.gi.versions.Gtk = '3.0'
imports.gi.versions.Gio = '2.0'
imports.gi.versions.GLib = '2.0'
imports.gi.versions.GObject = '2.0'
imports.gi.versions.UPowerGlib = '1.0'
imports.gi.versions.GnomeBluetooth = '3.0'
imports.gi.versions.NM = '1.0'
imports.gi.versions.GdkPixbuf = '2.0'

process name

Currently the ags process is under gjs (makes sense given it's a gjs project) but is it possible to rename it? (not sure about this - fairly new to linux development)

If there is another instance of gjs using killall etc will kill those processes also. It is also not so obvious, and would be nice to be able to pkill or killall ags

Make style property use relative pathing to the config file, not executable

One complaint I have about the way ags seems to work the paths is that if its relative, its sourced from wherever ags was run. Now in my setup I run it through a shell executable with the PWD in $HOME, but I'd like to make my dotfiles flexible to all workloads, but I can't develop anything like that because of the way style works.

Using style: "~/.config/ags/style.css" causes ags to try and find the config in $PWD/~/.config/ags/style.css. I have to use explicit pathing, but that breaks if I use a different user, since $HOME won't work there.

One solution would be to make pathing relative to the config, which iirc is also how eww works (if we want to bring up parity with the inspiration project). Another would be to allow ~, $HOME, or just .config/ags/style.css as values that can just work as is. There's probably more solutions, and I'm open to any fix, I'd just like some clarity on this choice of path resolving.

Intellisense

Hi there !

Great work with ags looking forwad to use it,

How can one get intellisense on its config file using ags ?

Even better, is it possible to write it in typescript ?

Thanks in advance :)

edit : wrong repo, my bad

run-js parameter output

Currently the run-js parameter does not output anything. It would be a great addition to change that. Then it would be possible to access some internal ags services and variables from external scripts, which could be quite useful.

network module error

When the wifi menu is opened it doesn't show the available wifi networks and outputs:

(ags:78839): Gjs-CRITICAL **: 14:55:49.131: JS ERROR: TypeError: ap.ssid is null
get accessPoints/<@resource:///com/github/Aylur/ags/js/service/network.js:68:13
get accessPoints@resource:///com/github/Aylur/ags/js/service/network.js:64:49
Widget.widgets["network/wifi-selection"]/<.connections<@/home/incognitux/.config/ags/modules/network.js:115:9
connect/bind<@resource:///com/github/Aylur/ags/js/utils.js:78:66
_sync@resource:///com/github/Aylur/ags/js/service/network.js:150:14
Wifi/<@resource:///com/github/Aylur/ags/js/service/network.js:43:51
main@resource:////com/github/Aylur/ags/js/main.js:45:26
run@resource:///org/gnome/gjs/modules/script/package.js:206:19

Additional info

  • Built from source on Fedora Linux 38
  • NetworkManager version: 1.42.8-1.fc38
  • ags version: 0.1.0

Installation ubuntu

Installation using ubuntu is not working:

user@pop-os:~/ags$ gjs --version
gjs 1.72.2
user@pop-os:~/ags$ meson setup build
The Meson build system
Version: 1.1.1
Source dir: /home/user/ags
Build dir: /home/user/ags/build
Build type: native build
Project name: ags
Project version: 0.1.0
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Run-time dependency gobject-introspection-1.0 found: YES 1.72.0
Run-time dependency gio-2.0 found: YES 2.72.4
Found CMake: /usr/bin/cmake (3.22.1)
Run-time dependency gjs-1.0 found: NO (tried pkgconfig and cmake)

meson.build:12:0: ERROR: Dependency "gjs-1.0" not found, tried pkgconfig and cmake

A full log can be found at /home/user/ags/build/meson-logs/meson-log.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.