Releases: linkfrg/ignis
Releases Β· linkfrg/ignis
v0.4
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
toUtils.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
- @0x006E made their first contribution in #44
- @regenman made their first contribution in #54
- @newor0599 made their first contribution in #59
- @campbellcole made their first contribution in #72
- @trolljoe made their first contribution in #73
Full Changelog: v0.3...v0.4
v0.3
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
- @somokill made their first contribution in #13
- @gauravsatish made their first contribution in #16
- @ratson made their first contribution in #21
- @tyrypyrking made their first contribution in #29
- @imxnasr made their first contribution in #38
Full Changelog: v0.2...v0.3
v0.2
Breaking Changes
- cli: move to
click
instead ofargparse
:- subcommands instead of arguments (e.g.,
quit
instead of--quit
) - to run Ignis, use the
init
subcommand (ignis init
)
- subcommands instead of arguments (e.g.,
Utils.Poll
: passself
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
andService
fromignis.services
- add
.get_default()
method to services - add
BaseService
class
- remove
- remove the
app
variable fromignis.app
; use theIgnisApp.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
andWidget.ArrowButton
- App: add
is_ready
property - App: add support for multiple style paths (CSS providers)
- Utils: add
Utils.get_current_dir()
- Widgets: add
Widget.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 inWifiDevice.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 ofCACHE_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 invalidinput_width
andinput_height
values - Widget.Window: set default value for
input_width
andinput_height
to 0 - split CLI and
IgnisClient
, move all CLI-related code tocli.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 ofWidget.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