You are browsing as a guest. Sign up (or log in) to start making projects!

  • 6 Devlogs
  • 33 Total hours

Lockrs is a wayland server agnostic, gpu-accelerated lock screen engine made in Rust. It works by implementing the egui library for lock screen surfaces.

Ship #1

Lockrs is a library that aims to make Wayland screen lockers as customizable as possible. First of all, it’s written in the Rust language, and it’s essentially an implementation of the egui crate for lock screen surfaces; This means it can be truly used for anything (or well, anything egui can possibly do). This project was born out of frustration of the little customizability that other projects offer, relying at most on a simple config file to define everything. It is based on the wayland-client, wgpu and egui crates, which make it compatible with practically any modern Wayland compositor (to be specific, all compositors implementing the ext-session-lock-v1 protocol); using wayland-client was quite hard, as it was really my first time making something that supports graphics and juggling communications with an outside application in the meantime. I think this project was very successful in helping me learn about how Wayland works, and a little bit of how rendering works too. Overall, I’m quite proud of how it turned out, and i have already made my own lock screen (see picture below).

  • 6 devlogs
  • 33h
  • 18.69x multiplier
  • 616 Stardust
Try project → See source code →
Open comments for this post

5h 29m 2s logged

After taking a small break, i finally finished this project. I decided to turn it into a library instead of a really customizable lockscreen, because what would be the purpose in making something that could very well work in any number of ways and then limiting it to a few widgets? I’m quite satisfied with how it turned out, even if there are a few rough spots. Also, i decided to license it under MIT or Apache 2.0, as per convention for rust libraries.

In the end, i’ll be definitely using lockrs, and i hope some other people will too.

0
0
9
Open comments for this post

3h 15m 23s logged

I managed to add PAM authentication. I also tried to add support for shaders and in general gpu work, and discovering i bit off way more than i can chew, i just decided not to.
So, i tried to add a background, but i stumbled upon an obstacle which sent me diving into egui’s source code, because it kept claiming that it couldn’t load images with side bigger than 2048px; turns out this is only a limitation of the WebGPU API, that, as the name suggests, runs on browsers, not on desktops. Anyways, after a lot of fiddling with egui’s components, i managed to make it use images with sides up to 8000px.
Now i’ll probably customize the bar a little, and maybe make a few egui widgets for it.

0
0
12
Open comments for this post

9h 12m 27s logged

After wrecking my mind unnecessarily over how to handle pointer events for a ridiculous amount of time, I finally got something that somehow works; now i also have a working text input! It just prints the input to the terminal for now, but I’ll be messing with PAM a bit to do authentication now. wish me luck!

0
0
9
Open comments for this post

8h 8m 43s logged

I finally got the keyboard to work! for now, it just exits as soon as a key is pressed, but i’m working on implementing full functionality. also, now the code is much much cleaner, properly divided in functions instead of being all chucked into main. I don’t really have a way to display this with a screenshot, so i’ll just reuse an old one unfortunately :p

0
0
8
Open comments for this post

2h 2m 31s logged

Well, i managed to render to the lock screen with egui instead of using
the raw buffer; for now, it’s still a mess of spaghetti code that barely
works and will turn into a footgun very quickly if i don’t get
working on the lower level part of it instead of throwing stuff at the
wall and seeing if it sticks. The next step is tidying the code up
instead of throwing everything into main, so that i can get some
customization going. Also, i should probably add the authentication part
of the lock screen instead of having it unlock after a few seconds.

0
0
3
Open comments for this post

4h 48m 23s logged

I finished a first proof of concept for wl-lock; right now, it locks the user out for two seconds while displaying a mauve screen.
For now, it’s still fully cpu rendered, but i plan on adding gpu-accelerated background blur and general effects.
The next step is hooking egui into it!

0
0
6

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…