Skip to content

Releases: Aylur/ags

v1.8.2

29 Apr 14:52
Compare
Choose a tag to compare

Features

  • Calendar.detail
  • SpinButton.range
  • SpinButton.increments
  • Network.frequency
  • recursive Utils.monitorFile
  • add: Network.vpn
  • add write and writeAsync to Utils.subprocess (#388)

Fixes

  • compiles with typescript >= 5.0.4
  • DrawingArea.draw-fn
  • hyprland: active client empty on window close
  • dispose signal on Variable
  • skip unnecessary value setting in Utils.derive and Utils.merge
  • properly log errors from Variables
  • adjust Hyprland socket (#398)

Breaking Changes

  • Stream.is_muted corresponds to actual mute state
  • Utils.exec returns stderr on error

New Contributors

Full Changelog: v1.8.0...v1.8.2

v1.8.0

03 Mar 13:45
Compare
Choose a tag to compare

Features

  • add: Utils.watch
  • custom hookable objects
  • add: App.config
  • impove widget subclasses
    • Calendar.on_day_selected
    • ColorButton.on_color_set
    • DrawingArea.draw_fn
    • FileChooserButton.on_file_set
    • FontButton.on_font_set
    • LevelBar.vertical
    • LevelBar.bar_mode
    • Separator.vertical
    • SpinButton.on_value_changed
    • Spinner starts based on visibility
    • Switch.on_activate
    • ToggleButton.on_toggled
  • print notification daemons's name when its already running

Fixes

  • Widget.attribute assign falsy values
  • Overlay child type

Breaking Changes

  • revert: hyprland service: workspace and monitor signal emit number
  • types: Label's and Icon's Props type renamed to LabelProps, IconProps
  • deprecate: default export config object in favor of App.config

Full Changelog: v1.7.7...v1.8.0

v1.7.7

22 Feb 12:35
Compare
Choose a tag to compare

Features

  • App.addIcons, App.gtkTheme, App.cursorTheme, App.iconTheme
  • add: Notifications.clearDelay
  • add MprisPlayer.track_album
  • add MprisPlayer.metadata
  • add Widget.keybind
  • App.applyCss takes stylesheets, and an optional reset parameter

Fixes

  • prepend icons from config instead of append
  • Network.wifi.enabled signal
  • Utils.merge connect to notify signal

Breaking Changes

  • deprecate: Window.popup

New Contributors

  • @qxb3 made their first contribution in #305

Full Changelog: v1.7.6...v1.7.7

v1.7.6

16 Feb 01:25
Compare
Choose a tag to compare

Breaking Changes

  • hyprland service: workspace and monitor signal emit number
  • hyprland service: deprecate sendMessage, introduce message and messageAsync
  • Variable: value check on setter, force on setValue
  • Utils.monitorFile() no longer takes the type (file or directory) parameter. It will monitor each accordingly without specifying it.
  • add: Stack.children
  • deprecate: Stack.items

What's Changed

  • Utils.writeFileSync
  • add Utils.merge, Utils.derive
  • add Binding.as alias for Binding.transform

Fixes

  • Stack.add_named
  • Scrollable destroy child on destroy event

New Contributors

Full Changelog: v1.7.4...v1.7.6

v1.7.4

31 Jan 15:30
Compare
Choose a tag to compare

Breaking Changes

  • subclassing of gtk widgets #272
  • move config options to their service instances #420

What's Changed

New Contributors

Full Changelog: v1.6.3-beta...v1.7.4

v1.6.3-beta

23 Dec 00:15
d1835ca
Compare
Choose a tag to compare

What's Changed

  • feat: Service.bind and Variable.bind
  • feat: AgsWidget.register
  • export Widget.createCtor utility
  • add: Applications.reload
  • add: Utils.idle
  • use GLib.shell_parse_argv on Utils.execAsync

Fixes

New Contributors

Full Changelog: v1.5.5-beta...v1.6.3-beta

v1.5.5-beta

15 Dec 23:57
Compare
Choose a tag to compare

What's Changed

  • feat(widget): add ListBox subclass by @matt1432 in #199
  • adding cache option for cover art by @kotontrion in #207
  • Update starter configuration by @MariaSolOs in #213
  • CI: nix binary cache by @NotAShelf in #212
  • feat: support print from client with --run-js
  • feat: support shebang with --run-file
  • add: Utils.monitorFile
  • feat: Utils.readFile and readFileAsync can take a Gio.File
  • improve Button, EventBox hover events
  • parse passed files starting with .
  • feat: binds targetProp can be in kebab, camel or snake case too
  • add: hook, on, poll, bind, attribute

New Contributors

Full Changelog: v1.5.4-beta...v1.5.5-beta

v1.5.4-beta

29 Nov 21:19
8f86ae9
Compare
Choose a tag to compare

Features

  • add: notificationForceTimeout option
  • add: bluetooth device-added, device-removed signal
  • add: cursor property
  • feat: window popup close on click away
  • add: config.onWindowToggled & config.onConfigParsed
  • add: marks property setter to slider #186
  • feat: --run-js cli flag async support
  • add: --run-file cli flag

Breaking Changes

  • feat: Window.exclusivity
  • deprecate: --run-promise cli flag

Fixes

  • overlay pass-through #168

v1.5.1-beta

12 Nov 20:25
54fd9cf
Compare
Choose a tag to compare

Types for auto suggestions

See wiki: TypeScript. NOTE: Types aren't just for TS, you use them with JS too.

What's Changed

  • Add signal for fullscreen state in Hyprland service by @matt1432 in #132
  • nix: add extraPackages option to the home manager module by @Aylur in #144
  • Fix floating mode signal in Hyprland service by @matt1432 in #151
  • Update notifications.ts by @alvsz in #159
  • send mssages to hyprland IPC by @kotontrion in #162

Breaking changes (hopefully the last one)

  • refactor how widgets are subclassed by @Aylur in #153
  • style renamed to css, css now combines how css and style worked before
  • halign and valign renamed to hpack vpack. halign and valign still work but they take the original Gtk.Align enum instead of a string
  • Window.margin renamed to Window.margins
  • Command type is no longer a thing, onEvent handlers like Button.onClicked can't take a string anymore, only a function, but one can easily make a util function like
function sh(cmd) {
  return function() {
    Utils.execAsync(['bash', '-c', cmd]);
  }; 
}

Widget.Button({
  onClicked: sh('echo hello')
})
  • stop using Widget({ type }), most widgets are available on Widget, if they are not, feel free to open up an Issue/PR
import Gtk from 'gi://Gtk';

const before = Widget({ type: Gtk.Calendar });
const after = Widget.Calendar({ });

New Contributors

Full Changelog: v1.4.0...v1.5.1-beta

v1.4.0-beta

14 Oct 13:50
Compare
Choose a tag to compare

Breaking changes

you can no longer import through the global ags object

import Widget from 'resource:///com/github/Aylur/ags/widget.js'
import { Box, Button }  from 'resource:///com/github/Aylur/ags/widget.js'

import * as Utils from 'resource:///com/github/Aylur/ags/utils.js';
import { execAsync, exec } from 'resource:///com/github/Aylur/ags/utils.js';

import App from 'resource:///com/github/Aylur/ags/app.js'
import Variable from 'resource:///com/github/Aylur/ags/variable.js'

// this is the base Service class that you want to subclass
// Service.Audio and other builtin services are no longer accessible like this
import Service from 'resource:///com/github/Aylur/ags/service.js'

// builtin services are at 'resource:///com/github/Aylur/ags/service/<lower-casename>.js'
import Audio from 'resource:///com/github/Aylur/ags/service/audio.js';

Services are now the instances themselves and not a static wrapper class

// this is no longer valid
Audio.instance.connect();

// you should now do this instead
Audio.connect()

// if you have a callback like this
onClicked: Notificatitions.clear

// update it to
onClicked: () => Notificatitions.clear()

// or
onClicked: Notificatitions.clear.bind(Notifications)

if you want to set a global variable for easier access through the cli --run-js and --run-promise
put this in config.js

import mpris from 'resource:///com/github/Aylur/ags/service/mpris.js';
globalThis.mpris = Mpris;

// or with a single line
globalThis.mpris = (await import('resource:///com/github/Aylur/ags/service/mpris.js')).default;

you can access globals like this

ags -r "mpris.playPause()"

What's Changed

New Contributors

Full Changelog: v1.3.0...v1.4.0