ThemedPointer::set_cursor
now takes onlyConnection
and&str
.SeatState:get_pointer_with_them*
now takesShm
andWlSurface
for the themed cursor.ThemedPointer
now automatically releases the associatedWlPointer
.CursorIcon
fromcursor-icon
crate is now used forset_cursor
andFrame
.wayland-csd-frame
is now used for CSD types likeWindowState
,DecorationsFrame
, etc.- Added
CompositorHandle::transform_changed
to listen for transform changes. xkeysym::Keysym
is used as a keyboard key representation instead ofu32
wayland-rs
dependencies are updated to 0.31calloop
dependency updated to 0.12.1- Take
OwnedFd
instead ofRawFd
as argument toreceive_to_fd
functions.
- Crash when
wl_output
is below version 3.
- Make
DataDeviceManagerState
'screate_{copy_paste,drag_and_drop}_source
acceptIntoIterator<Item = T: ToString>
. - Add support for
zwp_primary_selection_v1
. CursorShapeManager
providing handling forcursor-shape-v1
protocol.SeatState::get_pointer_with_theme
will now automatically usewp_cursor_shape_v1
when available.- Add support for
xdg_shell
version 6. - Add support for
wl_surafce::preferred_buffer_scale
andwl_surface::preferred_buffer_transform
.
wayland-rs
dependencies are updated to 0.30 and all APIs have changed significantly as a result
xkbcommon
is a new optional dependecy for keyboard handling gated by thexkbcommon
feature- pointer-constraints-unstable-v1 protocol support
- relative-pointer-unstable-v1 protocol support
- wlr-layer-shell-unstable-v1 protocol support
- OutputInfo includes logical size and logical position
- New SHM pool types
calloop
is updated to version 0.10, and the keyboard handling API is slightly changed as a result.
DataDevice::with_dnd
andDataOffer::receive_to_fd
allow more flexible interaction with the data device abstraction- the output integration now supports version
4
ofwl_output
Window
'swl_pointer
not being relased onDrop
.
- SCTK now correctly interacts with the wayland socket being conccurently polled from other threads.
- Most types are now
Debug
- when not using
dlopen
feature,xkbdcommon
library is linked usingpkg-config
- Update
wayland-client
to 0.29
AutoMemPool
now guarantees a minimum alignment of returned buffers
ConceptFrame
is removed, as well as theframes
cargo feature, and replaced by a more minimalisticFallbackFrame
. Dependency onandrew
andfontconfig
is dropped in the process. If fancier decorations are needed, they should be implemented using theFrame
trait.- Update to calloop 0.7:
calloop::Source
is replaced bycalloop::RegistrationToken
AutoMemPool
added as an alternative to the existing SHM pools
- Mark OutputInfo as
#[non_exhaustive]
to allow future expansion without breaking API. - Batch output information updates instead of potentially making multiple callbacks for one logical change
- Add name and description fields to OutputInfo.
Window::start_interactive_move
to enable dragging the window with a user action
ConceptFrame
now correctly loads fonts using fontconfig
- Dependency on
byteorder
was replaced withu32::from_ne_bytes()
- Don't crash when the font cannot be loaded to draw decorations
- Unmaintained
memmap
dependency is replaced withmemmap2
- Update
wayland-client
to version 0.28 Environment::init
was renamed toEnvironment::new_pending
init_default_environment!
macro was renamed tonew_default_environment!
Environment::new
method to fully bootstrap environment
window.set_decorate
is now taking mutable reference- Added
show_window_menu
on aFrame
trait to request a window menu for a window. ShowMenu
enum variant toFrameRequest
create_window
now also takesOption<ThemeManager>
Frame::init
now also takesOption<ThemeManager>
to reuse users'ThemeManager
WaylandSource::queue
to access theEventQueue
underlying aWaylandSource
- A window menu could be shown on right click on decorations for
ConceptFrame
ConceptFrame
will no longer change cursor over base surface ifThemeManager
was provided
Window::set_title
now truncates the provided string to 1024 bytes, to avoid blowing up the Wayland connectionConceptFrame
is now hiding decorations forState::Fullscreen
- Restore original size of fullscreened window on unfullscreen
- Explicitly setting
ClientSide
decorations will result inServerSide
ones being destroyed - Requesting
ServerSide
decorations inset_decorate
will now fallback toClientSide
if the former are not available - Requesting
None
decorations ifServerSide
are presented will result in settingClientSide
decorations with hidden frame ConceptFrame
will useDisabled
style for maximized button for non-resizeable frameConceptFrame
will create subsurfaces for client side decorations only if a frame is visibleWindow
will restore original size after being tiled
- Toggling between
ServerSide
andNone
decorations raising protocol error - Precision in a rate of key repeat events
ThemeManager
not being clone-able even if it was stated in docs- Repeat rate not being disabled when receiving zero for
rate
inwl_keyboard.repeat_info
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