WaylandSource::queue
to access theEventQueue
unserlying aWaylandSource
Window::set_title
now truncates the provided string to 1024 bytes, to avoid blowing up the Wayland connection
create_surface
andcreate_surface_with_scale_callback
now returnAttached<WlSurface>
- Update
wayland-client
to0.27
andrew
is updated to0.3
.
- seat: Seats with an empty name are no longer filtered out
- keyboard: Update the keysyms list with new symbols
- Add primary selection helpers, which are included as part of default
Environment
.
- surfaces: dpi-aware surface will no longer believe their DPI factor reverts to 1 when they become hidden.
- keyboard: Remove the unnecessary type parameter of
map_keyboard
AutoThemer
is removed as it is no longer necessary withwayland-cursor
0.26calloop
is updated to 0.6, and the adapters are modified in consequence
- Add
clone_seat_data()
method as a shorthand to getSeatData
- Surface lock held across scale factor callback deadlocks scale factor API.
- Add
listen_for_outputs()
which calls a provided callback on creation/removal of outputs. - Add an
OutputHandling
trait makinglisten_for_outputs()
available onEnvironment
. - Introduce the
calloop
cargo feature, enabled by default, controlling the support for the calloop event loop - Introduce the
frames
cargo feature, enabled by default, controlling the existence of providedFrame
implementations (currentlyConceptFrame
) and the dependency onandrew
Frame
configuration is now done through aFrame::Config
associated type and theTheme
trait is removed.- Merge
Frame::set_active
andFrame::set_maximized
intoFrame::set_states
- HiDPI scaling for decorations
- HiDPI cursor icon position
- Fix graphical glitches in
ConceptFrame
decoration drawing - Black pixel on left-bottom corner on CSD
- Remove a deadlock when trying to access the seat data from within the seat callback
- Upgrade to
wayland-client
0.25. This changes the prototype of most callbacks by adding theDispatchData
mechanism for state sharing - Re-structure the lib API around the new
Environment
type as an entry point (breaks a lot of things). This makes the crate follow a monolithic-modular structure centered on this type. keyboard
is now a submodule ofseat
keyboard
key repetition is now handled as a calloop event sourcepointer
is now a submodule ofseat
- The initialization of
pointer
theming utilities now require aThemeSpec
argument instead of just a theme name, allowing control over the size of the cursors as well - Pointer theming utilities can no longer be shared across threads, as it was racy.
Window
now tracks new seats automatically (thenew_seat
method is removed)Window
can no longer be shared across threads, as it was racy.- Decorations management is now handled with the
Decorations
enum, for full control to clients.
- The
pointer
theming will now read theXCURSOR_THEME
andXCURSOR_SIZE
environment variables to figure the default theme pointer
theming utilities now handle HiDPI monitors- SCTK now uses the
log
crate to log its warning and error messages - Data offers
ReadPipe
scan be inserted in a calloop event loop as an event source - The
WaylandSource
wrapper allows awayland-client
EventQueue
to be inserted into a calloop event source.
- Keyboard input breaking when
LC_ALL
,LC_CTYPE
orLANG
are set to an empty string - UTF8 interpretation no longer stops working if loading the compose table failed
- Keyboard: fix extra key repeat when using also releasing a modifier
- Update
Nix
to 0.14
- Additional theming capability on
ConceptFrame
via theTheme
trait: optional methodsget_<button-name>_button_icon_color
allows the stroke color on the buttons to be customized beyond what the secondary color allows. Button color methods now affect theConceptFrame
's fill behind the buttons. - Fix the firing of
Configure
events in window abstraction.
- Upgrade to
wayland-client
version 0.23
- Update the crate to
wayland-client
version 0.22 - Window:
set_title()
now requires a manualrefresh()
for the change to take effect
- Keyboard: fix system repeat rate as repeats per second rather then millisecond delay between repeats
- Surface: fix panic in
compute_dpi_factor()
by only computing the dpi factor on surfaces known to the OutputMgr
- Shell: expose shell interface and add
create_shell_surface
toEnvironment
. - Fix build failure on big endian targets
- Update dependencies: rand, memmap, nix and image
- Surface:
create_surface
andget_dpi_factor
utilities for creating dpi aware surfaces.
- Fix compilation on BSD systems
- Window: always request server-side decorations if available, otherwise ther compositor never configures us
- keyboard: only compute utf8 value on keypress, not key release. Otherwise it confuses
xkb_compose
.
- BasicFrame: Display the title of the window in the window header
- Pass
set_selection()
Option<DataSource>
andAutoThemer::init()
Proxy<WlShm>
by reference - Window: add
set_theme()
function which takes an object implementing the traitTheme
to adjust the look of window decorations - Window: add new
ConceptFrame
which provides an alternative to theBasicFrame
window decorations - MemPool: add
mmap
method - [Breaking] Keyboard: remove
modifiers
field fromkeyboard::Event::Enter
,keyboard::Event::Key
andkeyboard::KeyRepeatEvent
- [Breaking] Keyboard: add
keyboard::Event::Modifiers
- [Breaking] Upgrade to wayland-rs 0.21
- Keyboard: end key repetition when the keyboard loses focus
- Window: the minimum window width is set to 2 pixels to circumvent a bug in mutter - https://gitlab.gnome.org/GNOME/mutter/issues/259
- [Breaking] MemPool: MemPool now requires an implementation to be called when the pool becomes free
- [Breaking] DoubleMemPool: DoubleMemPool now requires an implementation to be called when one of its pools becomes free
- [Breaking] DoubleMemPool:
swap()
is removed aspool()
will now automatically track and return any free pools avaliable or return None - Keyboard: add key repetition with 'map_keyboard_auto_with_repeat' and 'map_keyboard_rmlvo_with_repeat'
- Window: add
init_with_decorations
to allow the use of server-side decorations
Big thanks to @trimental for improving the visual look of the window decorations:
- BasicFrame: remove side and bottom border decorations
- BasicFrame: round window corners
- Keyboard: try to load
libxkbcommon.so.0
as well to improve compatibility
- Window: notify the compositor of our dimensions to avoid placement glitches
- Update
nix
dependency to be fix build on FreeBSD (even if we can't run)
- BasicFrame: don't desync the subsurface from the main one. This avoids graphical glitches where the borders are not drawn exactly the same size as the contents.
- Window: add
set_resizable
, (minor breaking change of theFrame
trait by adding a new method)
- Add
DoubleMemPool
for double buffering, and use it to improve the drawing performance ofBasicFrame
.
- Breaking OutputMgr: expose wl_output global id
Initial version, including:
- basic environment manager
- keyboard keymap handling
- basic window decoration