pinnacle-comp / pinnacle Goto Github PK
View Code? Open in Web Editor NEWA WIP Smithay-based Wayland compositor, inspired by AwesomeWM and configured in Lua or Rust
License: GNU General Public License v3.0
A WIP Smithay-based Wayland compositor, inspired by AwesomeWM and configured in Lua or Rust
License: GNU General Public License v3.0
Opening a bunch of Alacritty windows quickly will freeze the screen. This probably also happens with other windows.
There is noticeable jittering when scrolling through Firefox. Probably need to sync frame pushing to the monitor's refresh rate. Either that or I have no idea what the problem is haha
Pretty sure this was a thunderbird reminder popup, and the window appears before the output is created
Some known issues:
This probably also breaks use without the PINNACLE_CONFIG env because it gets unwrap_or
'd into "~/.config/pinnacle/init.lua"
.
Never mind, that's expanded by either Command
or Lua itself.
Are there any plans for this to support wlroots extensions like layer-shell? I notice you have a widget system planned, so I'm not sure if you intend on that being entirely separately implemented to replace it or alongside of.
Otherwise I'm super interested and watching every commit ๐
Switching from Pinnacle's udev backend to a tty with a graphical environment will leave a phantom image of the first window on the screen.
For a workaround, switch to another tty, then to the one you want.
Hovering over a window and changing to another tag without moving it will cause clicks to still be forwarded to that window.
I had a naive blocker implementation to try to get windows to commit all at the same time, but removed it while coming up with a better solution, so there's flickering.
I suspect the window isn't committing because it isn't visible, which completely pauses rendering
This may have something to do with the internal X11Surface state not being at the right location, but I'll need to do some more investigation.
The compositor seems to sometimes process udev events like connector_connected before the socket source is triggered, causing a crash due to a nonexistent stream.
Wayland compositors usually position popups so that they stay fully onscreen, but Pinnacle currently doesn't do that. Instead, popups can flow offscreen.
$XDG_CONFIG_HOME
$XDG_RUNTIME_DIR
with /tmp
as a fallback$XDG_STATE_HOME
for future log filesThe three I've currently found are Discord and VS Code using the --ozone-platform-hint=wayland
flag, as well as Firefox with the MOZ_ENABLE_WAYLAND=1
environment variable.
For example, opening Wayland Firefox on a tag, switching to another, then switching back once requires a click on the empty space to get Firefox to reappear. If the tag Firefox is on is switched to twice or more in succession, the click won't make it reappear at all. Additionally, causing a resize by eg. opening a new window will cause the window to reappear.
Opening a window on a monitor will hide windows on all other monitors.
Should be fixed when #56 is merged.
So people don't have to open source their configs as GPL
Because ya know, having a bunch of your windows not open isn't that great
Because that's a thing that windows do
Gotta learn Nix stuff first
Tracking issue for that one random freeze I got while using the compositor. I have no idea what caused it or how to reproduce it.
The one I've found thus far is IntelliJ Idea, which opens gray until it is resized, at which point it behaves like normal. Because of the way tiling works, it is immediately resized and so this problem isn't too much of an issue, but I believe it's a part of a larger problem.
What's supposed to happen is if you make a floating window tiled and set it back to floating, it gets set to its previous location and size.
However, I only update the saved geometry when the window is moved, not when it's resized. This can cause the window to restore to a different size than expected.
Maximizing currently doesn't update windows.
Additionally, windows currently render in the order of their creation, not focus. This causes maximized windows to appear behind windows created after them.
For things that use layer-shell
This is because I stop all rendering to prevent flickering while windows need to resize and such, but this also prevents the cursor from updating.
Let's be real here I kinda just cobbled the whole thing together over two days.
As a result it's mostly a direct translation of the Lua API with some small Rust bits added in to make things work, which isn't very ergonomic.
Currently the compositor uses MessagePack for IPC which is cool and all, but it's schemaless, meaning that I have to take care of the types myself and other language implementations require me to copy types over manually.
Having a schema-ful serialization format just makes everything easier.
Either launched with udev or winit, it gives zero output to monitors.
monitors appears to have no connection attached.
Also doesn't respond to keybinds, not able to close pinnacle via keybind from example config
built from 1774f2f
winit logs with default lua config:
PINNACLE_CONFIG="./api/lua/example_config.lua" RUST_BACKTRACE=full RUST_LOG=trace cargo r -r -- --winit &> winit_verbose.log
winit_verbose.log
Window focus is currently one big stack with windows in it instead of something per tag. This means if you spawn windows on one tag, then another, then go back to the first tag and close a window through the config, windows on the second tag will be closed instead.
This ranges from anything to the window not correctly resizing to all other windows disappearing from rendering.
Currently the provided function only runs after the whole config is run, as the api only listens for messages from the compositor after the setup function.
This means any call to something that requires stuff like tags won't work as the tags haven't yet been applied.
Ideally something to do with the top of a mountain
I can't launch compositor in udev. It returns that i have no permission. This is only compositor that does that. I can normally launch other compositors like MagmaWM.
I am running Nixos.
This currently happens for xwayland popups, but not for Wayland windows.
The windows are still there, but turning the monitor off and on causes connector_connected
to run. This causes new tags to be added that don't have the same IDs as the previous ones, as this doesn't trigger a tag id reset, causing windows on the old tags to not render.
Seems to only happen the first time it's opened in the compositor.
Also seems to be an artifact of the update to rendering.
Once a floating window is unmapped, it won't be remapped on tag change.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.