Skip to content

Releases: linkfrg/ignis

v0.4

30 Dec 18:48
Compare
Choose a tag to compare

Happy New Year everyone! Bringing you a new update with many new features and fixes...

Breaking Changes

  • HyprlandIPCNotFoundError doesn't raise during Hyprland Service initialization, use the new HyprlandService.is_available property instead

New Features

  • feat(nix): remove submodules for nix build (#43)
  • feat: add HyprlandService.is_available property
  • feat: Niri Service (#54)
  • feat: Hyprland keyboard layout widget in example bar (also #54)
  • feat: allow passing **kwargs to Utils.exec_sh()
  • feat: IgnisApp.add_icons() (#53)
  • feat: Power Menu in example bar (#57)
  • feat(network): support wireguard vpn connections (#63)
  • feat: Bluetooth Service (#28)
  • feat(fetch): add cpu_temp property (#73)
  • feat: Systemd Service (#62)
  • feat: Utils.DebounceTask & Utils.debounce (#76)
  • feat(Widget.EventBox): add support for on scroll [right, left] events (#82)
  • feat(network): refactor signal handling (#80)
  • feat: Utils.listen_socket() & Utils.send_socket(): add 'errors' argument
  • feat(logging): log 'Happy New Year!'

Fixes

  • fix(nix): add gstreamer, gst-plugins, pipewire to buildInputs (#44)
  • fix: UPower Device State always return false (#59)
  • fix: display the latest notification in example bar
  • fix: use the icon provided by a Spotify installation when it is unavailable in the icon theme (#67)
  • fix(nix): prefix PATH instead of overwriting it (#72)
  • fix: Widget.Grid: prevent from calling __apply() two times during init
  • fix(nix): use librsvg pixbuf module loader cache to allow loading SVG icons (#78)
  • fix(notifications): dismiss the oldest popup in the list (0), not the newest (-1)
  • fix(docs): Widget.Window.monitor: move the docstring from the setter to the GObject.Property itself
  • fix(network): use rsn_flags & wpa_flags to check the security protocol of an access point (#86)
  • fix: remove windows gracefully by overriding destroy() and unreliaze() methods
  • fix(network): WifiConnectDialog: use an unique window name based on the bssid (#89)
  • fix(hyprland): use 'errors=ignore' when decoding the response from the socket (closes: #91)
  • fix(niri): use 'errors=ignore' when decoding the response from the socket
  • fix(network): Ethernet: watch for available device connections
  • fix: do not remove window on close request when hide_on_close is True
  • other minor typing and typos fixes

Misc

  • docs: update user/installation.rst
  • add ruff to dev.txt
  • stubs: remove UPowerGlib.pyi (not required)
  • github(workflows): run ruff & mypy on examples
  • move ruff config to pyproject.toml
  • specify default selection for ruff
  • docs: add a note about symbolic icons in IgnisApp.add_icons()
  • README.md: add note about #60
  • fix(stubs/NM.pyi): typing issue with enum with zero members

PRs

  • feat(nix): remove submodules for nix build by @ratson in #43
  • fix(nix): add GStreamer & PipeWire to build inputs by @0x006E in #44
  • feat: Niri Service by @regenman in #54
  • feat: IgnisApp.add_icons() by @linkfrg in #53
  • fix: UPower Device State always return false by @newor0599 in #59
  • feat: Power Menu in example bar by @regenman in #57
  • feat(network): support wireguard vpn connections by @regenman in #63
  • fix: use the icon provided by a Spotify installation when it is unavailable in the icon theme by @linkfrg in #67
  • feat: Bluetooth Service by @linkfrg in #28
  • fix(nix): prefix PATH instead of overwriting it by @campbellcole in #72
  • feat: add cpu_temp to fetch service by @trolljoe in #73
  • feat: Systemd Service by @regenman in #62
  • fix(nix): use librsvg pixbuf module loader cache to allow loading SVG icons by @campbellcole in #78
  • feat: Utils.DebounceTask & Utils.debounce by @linkfrg in #76
  • Feat(Widget.EventBox): Add support for right & left scroll events by @regenman in #82
  • feat(network): refactor signal handling by @linkfrg in #80
  • fix(network): use rsn_flags & wpa_flags to check the security protocol of an access point by @linkfrg in #86
  • fix(network): WifiConnectDialog: use an unique window name based on the bssid by @linkfrg in #89

New Contributors

Full Changelog: v0.3...v0.4

v0.3

15 Nov 23:24
Compare
Choose a tag to compare

Breaking Changes

  • fix!(gobject): IgnisGObject.set_property: do not return when a value is None
  • feat!(Utils.ThreadTask): use explicit run()
  • feat!(Utils.FileMonitor): pass self as the first argument to a callback
  • feat!(applications): rename search() -> search_apps(); add support for searching in a custom list of applications (new required argument)

New Features

  • feat: add Utils.get_ignis_branch() and Utils.get_ignis_commit_msg()
  • feat(cli): print the git branch and the git commit message in --version
  • feat(cli): add systeminfo subcommand
  • feat: add support for custom paths and xml in Utils.load_interface_xml()
  • feat: DBusProxy: add support for system bus
  • feat: DBusProxy: add support for setting dbus properties
  • feat: Backlight Service (#16)
  • feat: add UPower Service (#10, #26)
  • feat(logging): log GTK errors
  • feat: add Utils.send_socket() & Utils.listen_socket()
  • feat(network): add VPN functionality (#29)
  • feat: Widget.Window: add margin properties
  • feat(system tray): SystemTrayItem: add activate(), secondary_activate(), context_menu() and scroll() functions (closes #36)
  • feat(Utils.FileMonitor): add the prevent_gc property

Fixes

  • fix(Widget.Window): wrong type hint for anchor property;
  • fix(Widget.Window): unset all anchors if the anchor property is set to None
  • fix(hyprland): messages from sockets is limited by the buffer size (1024/4096 bytes)
  • fix(app): reload CSS only on the changes_done_hint event type (closes #18)
  • fix(applications): disable python virtual env for subprocess & set cwd to home dir
  • fix(cli): set prog_name explicitly
  • fix(dbus menu): call AboutToShow on popup (closes #33)
  • fix(notifications): popup_timeout setter function is not working (#38)
  • fix(Utils.FileMonitor): "changed" signal is called only if a callback is present
  • fix: use TypeAlias annotation for classes in Utils

Other

  • github: add issue forms
  • github(workflows): build documentation on pull requests
  • Package for NixOS (and some fixes for it) (#13, #14, #21, #25)
  • docs: fix incorrect import of services in examples (closes #20)
  • docs: General improvements to the API Reference (#35)
  • docs: refactor versioning stuff

New Contributors

Full Changelog: v0.2...v0.3

v0.2

29 Sep 18:21
Compare
Choose a tag to compare

Breaking Changes

  • cli: move to click instead of argparse:
    • subcommands instead of arguments (e.g., quit instead of --quit)
    • to run Ignis, use the init subcommand (ignis init)
  • Utils.Poll: pass self as an argument to the callback
  • Network Service: add support for controlling multiple devices; more functionality for controlling Ethernet
  • Utils.Poll: use milliseconds instead of seconds
  • Use service classes directly:
    • remove ServiceClass and Service from ignis.services
    • add .get_default() method to services
    • add BaseService class
  • remove the app variable from ignis.app; use the IgnisApp.get_default() method instead
  • feat!(options): add support for option groups
  • feat!(options): use the Option class directly

New Features:

  • Utils: add Utils.get_ignis_commit
  • switch to using exceptions instead of logging
  • App: added remove_window() method
  • CLI: print "No such window" error
  • Examples: add examples/bar
  • CLI: add support to execute blocks of code
  • Recorder: added pause_recording and `continue_recording`` methods
  • Widgets: add Widget.Arrow and Widget.ArrowButton
  • App: add is_ready property
  • App: add support for multiple style paths (CSS providers)
  • Utils: add Utils.get_current_dir()
  • Widgets: addWidget.RevealerWindow

Fixes:

  • App: return value immediately in __RunPython__ and __RunFile__
  • Audio Service: Stream: rounding volume added
  • MPRIS Service: fix issue a player sometimes doesn't close
  • Widget.FileChooserButton: do not set icon name if the path doesn't exist
  • Hyprland Service: except json.decoder.JSONDecodeError in __listen_socket()
  • Recorder Service: fix memory leak
  • Widget.Box: not all children are removed
  • Network Service (Wi-Fi): notify enabled property; return when unavailable in WifiDevice.scan()
  • Network Service: fix some properties not updating or notifying
  • Notifications Service: close the old notification when replacing it with a new one
  • Notifications Service: do not sort notifications and popups by ID
  • __init__.py: removed the extra slash (/) at the end of CACHE_DIR
  • MPRIS Service: notify art_url only when necessary
  • logging: log all unhandled exceptions
  • Recorder Service: fix issue where the output file was sometimes corrupted
  • mpris: invalid filename when downloading art image from the URL
  • add Variable class

Other:

  • add Ruff and mypy
  • remove post_install.py
  • move version from the VERSION file to __version__ in __init__.py
  • docs: move to pydata Sphinx theme
  • move to loguru for logging
  • Recorder Service: move all XDG Desktop Portal stuff to the SessionManager class
  • Widget.Window: raise ValueError on invalid input_width and input_height values
  • Widget.Window: set default value for input_width and input_height to 0
  • split CLI and IgnisClient, move all CLI-related code to cli.py
  • docs: simplify the build process
  • docs: add checks for Sphinx build; move options creation and os.makedirs() to class constructors
  • docs: add version switcher
  • add py.typed marker
  • docs: sort members by source
  • Wallpaper Service: use WallpaperLayerWindow instead of Widget.Window
  • use pygobject-stubs; add stubs for Gvc, NM, Gtk4LayerShell
  • docs: use sphinx_design
  • docs: use sphinx_copybutton
  • split services into separate directories and files
  • dbus: use async calls using `result_handler``
  • docs: generate widgets and utils API reference files when building documentation (mock imports)
  • docs: improve developer docs
  • docs: add module names

New Contributors

Full Changelog: v0.1...v0.2

v0.1

28 Jul 19:07
Compare
Choose a tag to compare

Initial release.