wizbright / waybox Goto Github PK
View Code? Open in Web Editor NEWAn openbox clone on Wayland (WIP)
License: MIT License
An openbox clone on Wayland (WIP)
License: MIT License
Steps to reproduce:
1.git clone https://github.com/wizbright/waybox.git
2. sudo pacman -S meson wlroots wayland xkbcommon
3. meson build
4. cd build
5. ninja
Error:
[1/2] Compiling C object waybox/waybox.p/server.c.o FAILED: waybox/waybox.p/server.c.o cc -Iwaybox/waybox.p -Iwaybox -I../waybox -I../include -I/usr/include/libdrm -I/usr/include/pixman-1 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c11 -g -Wno-unused-parameter -DWLR_USE_UNSTABLE '-DPACKAGE_NAME="Waybox"' '-DPACKAGE_VERSION="0.1.0"' '-DGETTEXT_PACKAGE="waybox"' '-DLOCALEDIR="/usr/local/share/locale"' -MD -MQ waybox/waybox.p/server.c.o -MF waybox/waybox.p/server.c.o.d -o waybox/waybox.p/server.c.o -c ../waybox/server.c ../waybox/server.c: In function ‘wb_create_backend’: ../waybox/server.c:18:28: error: implicit declaration of function ‘wlr_backend_get_renderer’; did you mean ‘wlr_backend_get_session’? [-Werror=implicit-function-declaration] 18 | server->renderer = wlr_backend_get_renderer(server->backend); | ^~~~~~~~~~~~~~~~~~~~~~~~ | wlr_backend_get_session ../waybox/server.c:18:26: error: assignment to ‘struct wlr_renderer *’ from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 18 | server->renderer = wlr_backend_get_renderer(server->backend); | ^ cc1: all warnings being treated as errors ninja: build stopped: subcommand failed.
Information:
System: Arch Linux
Kernel: 5.15.17-1-lts
CPU: CPU: Intel i3-2348M (4) @ 2.300GHz
GPU: GPU: Intel 2nd Generation Core Process
Log file at build/meson-logs/meson-log.txt- meson-log.txt
Current Local Clone: current_local_clone.tar.gz
../waybox-0.0.2.1/include/waybox/server.h:20:10: fatal error: wlr/types/wlr_gtk_primary_selection.h: No such file or directory
A while back, @icedman created PR #24, but never addressed the problems. If someone wants to pick this up and make it possible to merge, that would be great. The problems with the PR upon its creation:
git clone
in $XDG_DATA_HOME
/themes (or $prefix
/themes)).Additional problems now:
yes
and no
, as well as client
(always use client-side decorations, even if server-side decorations were requested) and server
(always use server-side decorations, even if client-side decorations were requested). However, I'd be implementing that option and it would only be the job of whoever takes this up to make sure that client-side decorations are used if they're requested (it's easy to detect: wlr_xdg_toplevel_decoration_v1.requested_mode
).building with latest wlroots from Arch linux AUR fails. Here is the log:
FAILED: waybox/waybox@@waybox@exe/output.c.o
cc -Iwaybox/waybox@@waybox@exe -Iwaybox -I../waybox -I../include -I/usr/include/libdrm -I/usr/include/pixman-1 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c11 -O0 -g -Wno-unused-parameter -DWL_HIDE_DEPRECATED -MD -MQ 'waybox/waybox@@waybox@exe/output.c.o' -MF 'waybox/waybox@@waybox@exe/output.c.o.d' -o 'waybox/waybox@@waybox@exe/output.c.o' -c ../waybox/output.c
../waybox/output.c: In function ‘output_frame_notify’:
../waybox/output.c:27:29: error: invalid type argument of ‘->’ (have ‘struct wlr_surface_state’)
.width = surface->current->width,
^~
../waybox/output.c:28:30: error: invalid type argument of ‘->’ (have ‘struct wlr_surface_state’)
.height = surface->current->height
^~
../waybox/output.c:31:69: error: invalid type argument of ‘->’ (have ‘struct wlr_surface_state’)
wlr_matrix_project_box(matrix, &render_box, surface->current->transform,
^~
ninja: build stopped: subcommand failed.
Could You please provide some basic config files (rc.xml, menu.xml) to start with, and to see what is already implemented?
I only get an empty window without any menus/function, when loading existing openbox configs.
(waybox.git, archlinux/AUR)
Thanks for your work on this promising projekt!
Is this compatible with the latest wlroots?
Because I get:
$ meson setup --prefix=/opt/waybox build
The Meson build system
Version: 0.63.2
Source dir: /usr/src/waybox
Build dir: /usr/src/waybox/build
Build type: native build
Project name: Waybox
Project version: 0.2.0
C compiler for the host machine: cc (gcc 12.2.0 "cc (Ubuntu 12.2.0-3ubuntu1) 12.2.0")
C linker for the host machine: cc ld.bfd 2.39
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.8.0)
Run-time dependency libxml-2.0 found: YES 2.9.14
Run-time dependency wlroots found: YES 0.17.0-dev
Run-time dependency wayland-server found: YES 1.21.0
Run-time dependency wayland-protocols found: YES 1.31
Run-time dependency xkbcommon found: YES 1.4.1
Program msgfmt found: YES (/usr/bin/msgfmt)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program msginit found: YES (/usr/bin/msginit)
Program msgmerge found: YES (/usr/bin/msgmerge)
Program xgettext found: YES (/usr/bin/xgettext)
Configuring waybox using configuration
Program wayland-scanner found: YES 1.21.0 (/usr/bin/wayland-scanner)
Build targets in project: 45
Waybox 0.2.0
User defined options
prefix: /opt/waybox
Found ninja-1.11.0 at /usr/bin/ninja
stolk@workpc:/usr/src/waybox$ cd build/
stolk@workpc:/usr/src/waybox/build$ meson build
ERROR: Neither directory contains a build file meson.build.
stolk@workpc:/usr/src/waybox/build$ meson compile
[90/99] Compiling C object waybox/waybox.p/layer_shell.c.o
FAILED: waybox/waybox.p/layer_shell.c.o
cc -Iwaybox/waybox.p -Iwaybox -I../waybox -I../include -I/usr/include/libxml2 -I/usr/local/include -I/usr/local/include/libdrm -I/usr/include/valgrind -I/usr/local/include/pixman-1 -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c11 -O0 -g -Wno-unused-parameter -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L -DWLR_USE_UNSTABLE '-DPACKAGE_NAME="Waybox"' '-DPACKAGE_VERSION="0.2.0"' -DUSE_NLS=1 '-DGETTEXT_PACKAGE="waybox"' '-DLOCALEDIR="/opt/waybox/share/locale"' -MD -MQ waybox/waybox.p/layer_shell.c.o -MF waybox/waybox.p/layer_shell.c.o.d -o waybox/waybox.p/layer_shell.c.o -c ../waybox/layer_shell.c
../waybox/layer_shell.c: In function ‘init_layer_shell’:
../waybox/layer_shell.c:434:31: error: too few arguments to function ‘wlr_layer_shell_v1_create’
434 | server->layer_shell = wlr_layer_shell_v1_create(server->wl_display);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../waybox/layer_shell.c:8:
/usr/local/include/wlr/types/wlr_layer_shell_v1.h:125:28: note: declared here
125 | struct wlr_layer_shell_v1 *wlr_layer_shell_v1_create(struct wl_display *display,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
[95/99] Compiling C object waybox/waybox.p/server.c.o
FAILED: waybox/waybox.p/server.c.o
Probably related to: swaywm/wlroots#1387
[57/58] Compiling C object 'waybox/waybox@@waybox@exe/main.c.o'.
FAILED: waybox/waybox@@waybox@exe/main.c.o
/nix/store/10yq7kwlvbc6h658izmrlsspry1g9f3c-gcc-wrapper-7.3.0/bin/cc -Iwaybox/waybox@@waybox@exe -Iwaybox -I../waybox -I../include -I/nix/store/w5r71zav1c4zmbi3p902bvl7b1zmyqyc-wayland-1.16.0/include -I/nix/store/yayjdd7fsghs2j1rm9rxsm99v4xd0k8m-wlroots-05bb44078667a11216611a8fbe87c5fe69e117f8/include -I/nix/store/lmv7cpljbqzbn0mxfpnk2knsm4c6bq12-pixman-0.34.0/include/pixman-1 -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c11 -O3 -Wno-unused-parameter -DWLR_USE_UNSTABLE -DWL_HIDE_DEPRECATED -MD -MQ 'waybox/waybox@@waybox@exe/main.c.o' -MF 'waybox/waybox@@waybox@exe/main.c.o.d' -o 'waybox/waybox@@waybox@exe/main.c.o' -c ../waybox/main.c
In file included from ../waybox/main.c:7:0:
../include/waybox/server.h:21:10: fatal error: wlr/types/wlr_primary_selection.h: No such file or directory
#include <wlr/types/wlr_primary_selection.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Hi. I love the idea. OpenBox serves me well to this day and I can't wait to use this full-time. In the meanwhile, would it be possible to make releases on GitHub? That way it'd be easier for others to package this software. I for one would like to improve the experience of packaging this for Gentoo. As of now, this is available in the wayland-desktop overlay, but only from the code pulled from latest master commit. This doesn't provide a uniform experience unfortunately as the state of master's HEAD will keep changing.
What is the current status of the project? Do you have any list of features that have not yet been ported?
Hi there,
Trying to build against WLRoots 0.16.2, I see this:
../waybox/xdg_shell.c: In function ‘focus_view’:
../waybox/xdg_shell.c:76:4: error: ‘previous’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
76 | wlr_xdg_toplevel_set_activated(previous->toplevel, false);
Is this a known problem?
We should have some way of interacting with clients. Be able to use a mouse cursor to point and click at least and type with a keyboard. Maybe work with a touch screen?
This was requested by someone in the #waybox irc chat on Libera. I need to get with you at some point @keithbowes and try to come up with a doc.
Why don't you guys join forces with labwc or maybe your goals are different than this openbox project?
Features
Graphical
With -Werror=implicit-function-declaration
and libxml2 2.12.0
the compilation fails with:
FAILED: waybox/waybox.p/config.c.o
cc -Iwaybox/waybox.p -Iwaybox -I../waybox/waybox -I../waybox/include -I/usr/include/libevdev-1.0 -I/usr/include/libxml2 -I/usr/include/wlroots0.16 -I/usr/include/libdrm -I/usr/include/pixman-1 -flto=auto -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Werror -std=c11 -Wno-unused-parameter -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200112L -DWLR_USE_UNSTABLE '-DPACKAGE_NAME="Waybox"' '-DPACKAGE_VERSION="0.2.2"' -DUSE_NLS=1 '-DGETTEXT_PACKAGE="waybox"' '-DLOCALEDIR="/usr/share/locale"' -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fPIE -MD -MQ waybox/waybox.p/config.c.o -MF waybox/waybox.p/config.c.o.d -o waybox/waybox.p/config.c.o -c ../waybox/waybox/config.c
../waybox/waybox/config.c: In function ‘init_config’:
../waybox/waybox/config.c:152:15: error: implicit declaration of function ‘xmlReadFile’ [-Werror=implicit-function-declaration]
152 | doc = xmlReadFile(rc_file, NULL, XML_PARSE_RECOVER);
| ^~~~~~~~~~~
../waybox/waybox/config.c:152:42: error: ‘XML_PARSE_RECOVER’ undeclared (first use in this function)
152 | doc = xmlReadFile(rc_file, NULL, XML_PARSE_RECOVER);
| ^~~~~~~~~~~~~~~~~
../waybox/waybox/config.c:152:42: note: each undeclared identifier is reported only once for each function it appears in
../waybox/waybox/config.c:212:9: error: implicit declaration of function ‘xmlCleanupParser’ [-Werror=implicit-function-declaration]
212 | xmlCleanupParser();
| ^~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Used this quick patch, but dunno if this a good way to resolve this:
--- a/waybox/waybox/config.c
+++ b/waybox/waybox/config.c
@@ -1,5 +1,6 @@
#include <libxml/xpath.h>
#include <libxml/xpathInternals.h>
+#include <libxml/parser.h>
#include "config.h"
Apologies for the n00b question, my first time using Wayland instead of X11. I installed Manjaro Sway, and as predicted, it starts the Sway compositor. Since I'm not very used to tiling WM, I would prefer to switch to a stacking WM.
I tried to look around for a way to change the default compositor, but even Arch Wiki doesn't mention how to do this.
So does anyone know how I could switch to waybox?
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.