Code Monkey home page Code Monkey logo

wlmaker's People

Contributors

phkaeser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

wlmaker's Issues

building on debian gnu/linux, sid failed for me

[ 45%] Building C object src/CMakeFiles/wlmaker.dir/button.c.o
cd /var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds/obj-x86_64-linux-gnu/src && /usr/bin/cc -DHAVE_CAIRO -DWLMAKER_ICON_DATA_DIR=\"/usr/share/icons/wlmaker\" -DWLMAKER_SOURCE_DIR=\"/var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds\" -I/var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds/obj-x86_64-linux-gnu/third_party/protocols -I/var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds/obj-x86_64-linux-gnu/protocols -I/var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds/submodules/libbase/.. -I/var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds/src/toolkit/.. -isystem /usr/include/cairo -isystem /usr/include/libpng16 -isystem /usr/include/freetype2 -isystem /usr/include/pixman-1 -isystem /usr/include/libdrm -g -O2 -ffile-prefix-map=/var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu11 -Wall -Wextra -Werror -ggdb -DDEBUG -O0 -fmacro-prefix-map=/var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds=. -I/usr/include -MD -MT src/CMakeFiles/wlmaker.dir/button.c.o -MF CMakeFiles/wlmaker.dir/button.c.o.d -o CMakeFiles/wlmaker.dir/button.c.o -c /var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds/src/button.c
/var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds/src/button.c: In function ‘_button_enter’:
/var/www/debian/wlmaker/2/wlmaker-0.1+git20231230+ds/src/button.c:218:5: error: implicit declaration of function ‘wlr_xcursor_manager_set_cursor_image’; did you mean ‘wlr_xcursor_manager_get_xcursor’? [-Werror=implicit-function-declaration]
  218 |     wlr_xcursor_manager_set_cursor_image(
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |     wlr_xcursor_manager_get_xcursor
cc1: all warnings being treated as errors

is there an easy fix?

Unused dependencies with system wlroots

If there's no plan to use those in immediate future maybe remove.

 $ export LDFLAGS=-Wl,--as-needed
 $ cmake -B /tmp/wlmaker_build
 [...]
 -- Checking for module 'wlroots>=0.17'
 --   Found wlroots, version 0.17.1
 [...]
 $ cmake --build /tmp/wlmaker_build
 $ readelf -d /tmp/wlmaker_build/src/wlmaker | fgrep NEEDED
@@ -1,10 +1,7 @@
- 0x0000000000000001 NEEDED               Shared library: [libncursesw.so.9]
  0x0000000000000001 NEEDED               Shared library: [libtinfow.so.9]
  0x0000000000000001 NEEDED               Shared library: [libcairo.so.2]
- 0x0000000000000001 NEEDED               Shared library: [libdrm.so.2]
  0x0000000000000001 NEEDED               Shared library: [libwayland-client.so.0]
  0x0000000000000001 NEEDED               Shared library: [libwayland-server.so.0]
  0x0000000000000001 NEEDED               Shared library: [libwlroots.so.12]
- 0x0000000000000001 NEEDED               Shared library: [libpixman-1.so.0]
  0x0000000000000001 NEEDED               Shared library: [libxkbcommon.so.0]
  0x0000000000000001 NEEDED               Shared library: [libc.so.7]

How does wlmaker lock tty access?

Just curious since I can't find anything in the code.
I noticed that when I launch wlmaker through /usr/share/wayland-sessions (in GDM3) I cannot switch between ttys with the usual CTRL + ALT + F-Key

How is this achieved?

Spurious errors about missing icons

When packaging the source directory may no longer be available but the build embeds both source and install locations.

TARGET_COMPILE_DEFINITIONS(
wlmaker PRIVATE WLMAKER_ICON_DATA_DIR="${CMAKE_INSTALL_FULL_DATAROOTDIR}/icons/wlmaker")
TARGET_COMPILE_DEFINITIONS(
wlmaker PRIVATE WLMAKER_SOURCE_DIR="${PROJECT_SOURCE_DIR}")

/** Lookup paths for icons. */
const char *lookup_paths[] = {
#if defined(WLMAKER_SOURCE_DIR)
WLMAKER_SOURCE_DIR "/icons",
#endif // WLMAKER_SOURCE_DIR
#if defined(WLMAKER_ICON_DATA_DIR)
WLMAKER_ICON_DATA_DIR,
#endif // WLMAKER_ICON_DATA_DIR
NULL
};

$ git clone https://github.com/phkaeser/wlmaker /tmp/wlmaker_source
$ cd /tmp/wlmaker_source
$ cmake -B /tmp/wlmaker_build -DCMAKE_INSTALL_PREFIX:PATH=/tmp/wlmaker_prefix
$ cmake --build /tmp/wlmaker_build
$ cmake --install /tmp/wlmaker_build
$ cd /tmp
$ rm -rf /tmp/wlmaker_build /tmp/wlmaker_source
$ /tmp/wlmaker_prefix/bin/wlmaker
[...]
2024-01-17 17:25:49.488 (INFO) backend/wayland/backend.c:436 Starting Wayland backend
2024-01-17 17:25:49.497 (INFO) tmp/wlmaker_source/src/server.c:731 Output layout change: Pos 0, 0 (1280 x 720).
2024-01-17 17:25:49.497 (INFO) tmp/wlmaker_source/src/server.c:618 Server 0x2f059e74000: Added output 0x2f05bccfb80
2024-01-17 17:25:49.497 (INFO) tmp/wlmaker_source/src/wlmaker.c:282 Starting Wayland compositor for server 0x2f059e74000 at wayland-0 ...
2024-01-17 17:25:49.499 (ERROR) tmp/wlmaker_source/submodules/libbase/file.c:125 Failed realpath(/tmp/wlmaker_source/icons/chrome-48x48.png, 0x8206ebfd0): errno(2): No such file or directory
2024-01-17 17:25:49.499 (ERROR) tmp/wlmaker_source/submodules/libbase/file.c:125 Failed realpath(/tmp/wlmaker_source/icons/terminal-48x48.png, 0x8206ebfd0): errno(2): No such file or directory
2024-01-17 17:25:49.499 (ERROR) tmp/wlmaker_source/submodules/libbase/file.c:125 Failed realpath(/tmp/wlmaker_source/icons/firefox-48x48.png, 0x8206ebfd0): errno(2): No such file or directory
2024-01-17 17:25:49.499 (INFO) tmp/wlmaker_source/src/dock.c:141 Created dock view 0x2f059e9a000
2024-01-17 17:25:49.499 (ERROR) tmp/wlmaker_source/submodules/libbase/file.c:125 Failed realpath(/tmp/wlmaker_source/icons/clip-48x48.png, 0x8206ebfd0): errno(2): No such file or directory
2024-01-17 17:25:49.503 (INFO) tmp/wlmaker_source/src/clip.c:262 Created clip view 0x2f059e5c540
2024-01-17 17:25:51.111 (INFO) tmp/wlmaker_source/src/server.c:731 Output layout change: Pos 0, 0 (0 x 0).
^C
$ strings /tmp/wlmaker_prefix/bin/wlmaker | fgrep /icons
/tmp/wlmaker_source/icons
/tmp/wlmaker_prefix/share/icons/wlmaker

Drop dependency on unreleased libwayland version

Probably a remnant from tracking wlroots snapshot. wlmaker builds and works fine on FreeBSD with only system dependencies (except libbase).

downgrade version check
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d2e0306..32f70d2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -37,9 +37,9 @@ FIND_PACKAGE(PkgConfig REQUIRED)
 PKG_CHECK_MODULES(CAIRO REQUIRED IMPORTED_TARGET cairo>=1.16.0)
 PKG_CHECK_MODULES(
   WAYLAND REQUIRED IMPORTED_TARGET
-  wayland-client>=1.22.90
+  wayland-client>=1.22.0
   wayland-protocols>=1.31
-  wayland-server>=1.22.90)
+  wayland-server>=1.22.0)
 PKG_GET_VARIABLE(WAYLAND_PROTOCOL_DIR wayland-protocols pkgdatadir)
 PKG_CHECK_MODULES(WLROOTS REQUIRED IMPORTED_TARGET wlroots>=0.17)
 PKG_CHECK_MODULES(XKBCOMMON REQUIRED IMPORTED_TARGET xkbcommon>=1.0.3)  # 1.4.1)

wlmclock is built but not installed

$ cmake -B /tmp/wlmaker_build -DCMAKE_INSTALL_PREFIX:PATH=/tmp/wlmaker_prefix
$ cmake --build /tmp/wlmaker_build
[...]
[ 25%] Building C object apps/CMakeFiles/wlmclock.dir/wlmclock.c.o
[ 26%] Linking C executable wlmclock
[ 26%] Built target wlmclock
[...]
$ cmake --install /tmp/wlmaker_build
-- Install configuration: ""
-- Up-to-date: /tmp/wlmaker_prefix/share/icons/wlmaker/chrome-48x48.png
-- Up-to-date: /tmp/wlmaker_prefix/share/icons/wlmaker/clip-48x48.png
-- Up-to-date: /tmp/wlmaker_prefix/share/icons/wlmaker/firefox-48x48.png
-- Up-to-date: /tmp/wlmaker_prefix/share/icons/wlmaker/terminal-48x48.png
-- Installing: /tmp/wlmaker_prefix/bin/wlmaker
-- Set non-toolchain portion of runtime path of "/tmp/wlmaker_prefix/bin/wlmaker" to ""

Fails to build with Clang + -Werror

Applying phkaeser/libbase@349d02e9cabb to wlmaker produces:

$ export CC=clang CXX=clang++
$ cmake -B /tmp/wlmaker_build
$ cmake --build /tmp/wlmaker_build
[...]
src/clip.c:330:14: error: explicitly assigning value of variable of type 'wlmaker_clip_t *' (aka 'struct _wlmaker_clip_t *') to itself [-Werror,-Wself-assign]
  330 |     clip_ptr = clip_ptr;  // unused.
      |     ~~~~~~~~ ^ ~~~~~~~~
src/clip.c:377:21: error: explicitly assigning value of variable of type 'wlmaker_interactive_t *' (aka 'struct _wlmaker_interactive_t *') to itself [-Werror,-Wself-assign]
  377 |     interactive_ptr = interactive_ptr;  // unused.
      |     ~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
src/clip.c:393:21: error: explicitly assigning value of variable of type 'wlmaker_interactive_t *' (aka 'struct _wlmaker_interactive_t *') to itself [-Werror,-Wself-assign]
  393 |     interactive_ptr = interactive_ptr;  // unused.
      |     ~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
src/dock_app.c:312:27: error: explicitly assigning value of variable of type 'wlmaker_subprocess_handle_t *' (aka 'struct _wlmaker_subprocess_handle_t *') to itself [-Werror,-Wself-assign]
  312 |     subprocess_handle_ptr = subprocess_handle_ptr;
      |     ~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~
src/iconified.c:204:27: error: explicitly assigning value of variable of type 'struct wlr_scene_surface *' to itself [-Werror,-Wself-assign]
  204 |     wlr_scene_surface_ptr = wlr_scene_surface_ptr;
      |     ~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~
src/menu_item.c:95:19: error: explicitly assigning value of variable of type 'const wlmaker_menu_item_t *' (aka 'const struct _wlmaker_menu_item_t *') to itself [-Werror,-Wself-assign]
   95 |     menu_item_ptr = menu_item_ptr;  // currently unused.
      |     ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~
src/layer_shell.c:135:23: error: explicitly assigning value of variable of type 'wlmaker_layer_surface_t *' (aka 'struct _wlmaker_layer_surface_t *') to itself [-Werror,-Wself-assign]
  135 |     layer_surface_ptr = layer_surface_ptr;
      |     ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~
src/menu.c:238:14: error: explicitly assigning value of variable of type 'wlmaker_menu_t *' to itself [-Werror,-Wself-assign]
  238 |     menu_ptr = menu_ptr;
      |     ~~~~~~~~ ^ ~~~~~~~~
src/menu.c:259:14: error: explicitly assigning value of variable of type 'wlmaker_menu_t *' to itself [-Werror,-Wself-assign]
  259 |     menu_ptr = menu_ptr;
      |     ~~~~~~~~ ^ ~~~~~~~~
src/menu.c:260:7: error: explicitly assigning value of variable of type 'double' to itself [-Werror,-Wself-assign]
  260 |     x = x; y = y;
      |     ~ ^ ~
src/menu.c:260:14: error: explicitly assigning value of variable of type 'double' to itself [-Werror,-Wself-assign]
  260 |     x = x; y = y;
      |            ~ ^ ~
src/clip.c:330:14: error: explicitly assigning value of variable of type 'wlmaker_clip_t *' (aka 'struct _wlmaker_clip_t *') to itself [-Werror,-Wself-assign]
  330 |     clip_ptr = clip_ptr;  // unused.
      |     ~~~~~~~~ ^ ~~~~~~~~
src/clip.c:377:21: error: explicitly assigning value of variable of type 'wlmaker_interactive_t *' (aka 'struct _wlmaker_interactive_t *') to itself [-Werror,-Wself-assign]
  377 |     interactive_ptr = interactive_ptr;  // unused.
      |     ~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
src/clip.c:393:21: error: explicitly assigning value of variable of type 'wlmaker_interactive_t *' (aka 'struct _wlmaker_interactive_t *') to itself [-Werror,-Wself-assign]
  393 |     interactive_ptr = interactive_ptr;  // unused.
      |     ~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~
src/dock_app.c:312:27: error: explicitly assigning value of variable of type 'wlmaker_subprocess_handle_t *' (aka 'struct _wlmaker_subprocess_handle_t *') to itself [-Werror,-Wself-assign]
  312 |     subprocess_handle_ptr = subprocess_handle_ptr;
      |     ~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~
src/iconified.c:204:27: error: explicitly assigning value of variable of type 'struct wlr_scene_surface *' to itself [-Werror,-Wself-assign]
  204 |     wlr_scene_surface_ptr = wlr_scene_surface_ptr;
      |     ~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~
src/menu_item.c:95:19: error: explicitly assigning value of variable of type 'const wlmaker_menu_item_t *' (aka 'const struct _wlmaker_menu_item_t *') to itself [-Werror,-Wself-assign]
   95 |     menu_item_ptr = menu_item_ptr;  // currently unused.
      |     ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~
src/layer_shell.c:135:23: error: explicitly assigning value of variable of type 'wlmaker_layer_surface_t *' (aka 'struct _wlmaker_layer_surface_t *') to itself [-Werror,-Wself-assign]
  135 |     layer_surface_ptr = layer_surface_ptr;
      |     ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~
src/menu.c:238:14: error: explicitly assigning value of variable of type 'wlmaker_menu_t *' to itself [-Werror,-Wself-assign]
  238 |     menu_ptr = menu_ptr;
      |     ~~~~~~~~ ^ ~~~~~~~~
src/menu.c:259:14: error: explicitly assigning value of variable of type 'wlmaker_menu_t *' to itself [-Werror,-Wself-assign]
  259 |     menu_ptr = menu_ptr;
      |     ~~~~~~~~ ^ ~~~~~~~~
src/menu.c:260:7: error: explicitly assigning value of variable of type 'double' to itself [-Werror,-Wself-assign]
  260 |     x = x; y = y;
      |     ~ ^ ~
src/menu.c:260:14: error: explicitly assigning value of variable of type 'double' to itself [-Werror,-Wself-assign]
  260 |     x = x; y = y;
      |            ~ ^ ~

Publish a self-contained binary package of wlmaker at head

Leftover part of #3 and of #4:

To permit users to easily get hold of the most recent wlmaker version and test it: Have a binary release packaged, together with the dependencies at the required versions.
(thinking: eg. a flatpak? snap? better ideas?)

Implement Run or Raise like wmaker

Actually the dock is a launcher. Could it be possible to make it like wmaker?
On widowmaker, if there are instances already open, it raises all of them.

Here an example for labwc with wlrctl.

Workflow to build on *BSD

Motivation: As #11 showed, it's too easy to accidentally end up with a broken build on FreeBSD (or other BSDs, for that matter).

To prevent: There is a github workflow to build on Linux, running on push/pull. Ideally, there be a github workflow that runs a build on FreeBSD (and/or other BSD flavours).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.