kranewl

A wlroots-based dynamic Wayland compositor, written in C++, configurable with Lua
git clone git://git.deurzen.net/kranewl
Log | Files | Refs | LICENSE

commit 9a0c8313b079bf188684bca902035663b9521fa7
parent b9e55e229e58dce55e332565ace37fe4d6f20be0
Author: deurzen <m.deurzen@tum.de>
Date:   Mon, 16 May 2022 21:31:56 +0200

adds project structure

Diffstat:
M.ccls | 19+++++++++++++++++++
M.gitignore | 7+------
ACMakeLists.txt | 166+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MMakefile | 36+++++-------------------------------
Dconfig.mk | 37-------------------------------------
Aetc/share/kranewl/kranewl.conf | 253+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ainclude/kranewl/conf/options.hh | 10++++++++++
Ainclude/kranewl/conf/parse.hh | 3+++
Ainclude/kranewl/conf/state.hh | 3+++
Ainclude/kranewl/input/binding.hh | 3+++
Ainclude/kranewl/input/keyboard.hh | 3+++
Ainclude/kranewl/input/pointer.hh | 3+++
Ainclude/kranewl/model.hh | 19+++++++++++++++++++
Minclude/kranewl/server.hh | 22++++++++++++++++++++++
Ainclude/kranewl/tree/container.hh | 3+++
Ainclude/kranewl/tree/node.hh | 3+++
Ainclude/kranewl/tree/root.hh | 3+++
Ainclude/kranewl/tree/view.hh | 3+++
Ainclude/kranewl/tree/workspace.hh | 3+++
Ainclude/version.hh | 2++
Asrc/kranec/main.cc | 11+++++++++++
Asrc/kranewl/conf/options.cc | 46++++++++++++++++++++++++++++++++++++++++++++++
Asrc/kranewl/conf/parse.cc | 3+++
Asrc/kranewl/conf/state.cc | 3+++
Asrc/kranewl/input/binding.cc | 3+++
Asrc/kranewl/input/keyboard.cc | 3+++
Asrc/kranewl/input/pointer.cc | 3+++
Asrc/kranewl/main.cc | 26++++++++++++++++++++++++++
Asrc/kranewl/model.cc | 7+++++++
Rsrc/server/server.cc -> src/kranewl/server.cc | 0
Asrc/kranewl/tree/container.cc | 3+++
Asrc/kranewl/tree/node.cc | 3+++
Asrc/kranewl/tree/root.cc | 3+++
Asrc/kranewl/tree/view.cc | 3+++
Asrc/kranewl/tree/workspace.cc | 3+++
Dsrc/main.cc | 3---
36 files changed, 647 insertions(+), 77 deletions(-)

diff --git a/.ccls b/.ccls @@ -1,3 +1,22 @@ clang %c -Iinclude +`pkg-config --cflags wlroots pangocairo cairo pixman-1 xkbcommon wayland-server libinput libucl libprocps spdlog` +-Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic +-Wnon-virtual-dtor +-Wold-style-cast +-Wcast-align +-Wunused +-Woverloaded-virtual +-Wpedantic +-Wconversion +-Wsign-conversion +-Wmisleading-indentation +-Wduplicated-cond +-Wduplicated-branches +-Wlogical-op +-Wnull-dereference +-Wuseless-cast +-Wdouble-promotion +-Wformat=2 +-Weffc++ diff --git a/.gitignore b/.gitignore @@ -1,9 +1,4 @@ -/release -/bin -/obj +/build /tags -/debug -/test -/spdlog /TODO /.ccls-cache diff --git a/CMakeLists.txt b/CMakeLists.txt @@ -0,0 +1,166 @@ +cmake_minimum_required(VERSION 3.10.0) + +project(kranewl + VERSION 0.0.1 + DESCRIPTION "A wlroots-based dynamic Wayland compositor, written in C++" + HOMEPAGE_URL "%%https://github.com/deurzen/kranewl%%" + LANGUAGES CXX +) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +add_compile_options( + -Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic + -Wnon-virtual-dtor + -Wold-style-cast + -Wcast-align + -Wunused + -Woverloaded-virtual + -Wpedantic + -Wconversion + -Wsign-conversion + -Wmisleading-indentation + -Wduplicated-cond + -Wduplicated-branches + -Wlogical-op + -Wnull-dereference + -Wuseless-cast + -Wdouble-promotion + -Wformat=2 + -Weffc++ +) + +find_program(CCACHE ccache) +if(CCACHE) + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) +endif(CCACHE) + +set(CMAKE_CXX_CPPCHECK cppcheck) +find_program(CPPCHECK NAMES cppcheck) +if (CPPCHECK) + list( + APPEND CPPCHECK + "--enable=style,performance,warning,portability" + "--enable=warning" + "--force" + "--inconclusive" + "--inline-suppr" + "--suppress=cppcheckError" + "--suppress=internalAstError" + "--suppress=passedByValue" + "--suppress=syntaxError" + "--suppress=unmatchedSuppression" + ) +endif(CPPCHECK) + +execute_process(COMMAND git rev-parse --short HEAD + OUTPUT_VARIABLE GIT_REVISION + ERROR_QUIET +) + +if ("${GIT_REVISION}" STREQUAL "") + set(VERSION "") +else() + execute_process( + COMMAND bash -c "git diff --quiet --exit-code || echo +" + OUTPUT_VARIABLE GIT_DIRTY + ) + + execute_process( + COMMAND git describe --exact-match --tags + OUTPUT_VARIABLE GIT_TAG ERROR_QUIET + ) + + execute_process( + COMMAND git rev-parse --abbrev-ref HEAD + OUTPUT_VARIABLE GIT_BRANCH + ) + + string(STRIP "${GIT_REVISION}" GIT_REVISION) + string(STRIP "${GIT_DIRTY}" GIT_DIRTY) + string(STRIP "${GIT_TAG}" GIT_TAG) + string(STRIP "${GIT_BRANCH}" GIT_BRANCH) + + if (NOT "${GIT_TAG}" STREQUAL "") + set(VERSION "${GIT_TAG}-${GIT_REVISION}${GIT_DIRTY}") + else() + set(VERSION "${GIT_BRANCH}/${GIT_REVISION}${GIT_DIRTY}") + endif() +endif() + +if(EXISTS ${CMAKE_SOURCE_DIR}/include/version.hh) + file(READ ${CMAKE_SOURCE_DIR}/include/version.hh CURRENT_VERSION) +else() + set(CURRENT_VERSION "") +endif() + +if (NOT "#define VERSION \"${VERSION}\"" STREQUAL "${CURRENT_VERSION}") + file(WRITE + ${CMAKE_SOURCE_DIR}/include/version.hh + "#define VERSION \"${VERSION}\"" + ) +endif() + +file(GLOB_RECURSE KRANEWL_SOURCES RELATIVE ${CMAKE_SOURCE_DIR} src/kranewl/*.cc) +file(GLOB_RECURSE KRANEC_SOURCES RELATIVE ${CMAKE_SOURCE_DIR} src/kranec/*.cc) + +add_executable(kranewl + ${KRANEWL_SOURCES} +) + +add_executable(kranec + ${KRANEC_SOURCES} +) + +find_package(spdlog REQUIRED) +target_link_libraries(kranewl PRIVATE spdlog::spdlog) + +include(FindPkgConfig) +find_package(PkgConfig) + +pkg_search_module(CAIRO REQUIRED cairo) +include_directories(${CAIRO_INCLUDE_DIRS}) +link_directories(${CAIRO_LIBRARY_DIRS}) + +pkg_search_module(PANGOCAIRO REQUIRED pangocairo) +include_directories(${PANGOCAIRO_INCLUDE_DIRS}) +link_directories(${PANGOCAIRO_LIBRARY_DIRS}) + +pkg_search_module(WAYLANDSERVER REQUIRED wayland-server) +include_directories(${WAYLANDSERVER_INCLUDE_DIRS}) +link_directories(${WAYLANDSERVER_LIBRARY_DIRS}) + +pkg_search_module(LIBINPUT REQUIRED libinput) +include_directories(${LIBINPUT_INCLUDE_DIRS}) +link_directories(${LIBINPUT_LIBRARY_DIRS}) + +pkg_search_module(LIBUCL REQUIRED libucl) +include_directories(${LIBUCL_INCLUDE_DIRS}) +link_directories(${LIBUCL_LIBRARY_DIRS}) + +pkg_search_module(PIXMAN REQUIRED pixman-1) +include_directories(${PIXMAN_INCLUDE_DIRS}) +link_directories(${PIXMAN_LIBRARY_DIRS}) + +pkg_search_module(WLROOTS REQUIRED wlroots) +include_directories(${WLROOTS_INCLUDE_DIRS}) +link_directories(${WLROOTS_LIBRARY_DIRS}) + +pkg_search_module(XKBCOMMON REQUIRED xkbcommon) +include_directories(${XKBCOMMON_INCLUDE_DIRS}) +link_directories(${XKBCOMMON_LIBRARY_DIRS}) + +target_compile_features(kranewl PRIVATE cxx_std_20) +target_compile_features(kranec PRIVATE cxx_std_20) + +target_include_directories(kranewl PRIVATE + ${CMAKE_SOURCE_DIR}/src/kranewl + ${CMAKE_SOURCE_DIR}/include +) + +target_include_directories(kranec PRIVATE + ${CMAKE_SOURCE_DIR}/src/kranec + ${CMAKE_SOURCE_DIR}/include +) diff --git a/Makefile b/Makefile @@ -1,35 +1,9 @@ -include config.mk -.PHONY: tags bin obj clean install uninstall - -CXXFLAGS += ${CXXFLAGS_EXTRA} -LDFLAGS += ${LDFLAGS_EXTRA} - all: kranewl -server: bin obj ${SERVER_LINK_FILES} - -kranewl: bin obj ${COMPOSITOR_LINK_FILES} - ${CC} ${CXXFLAGS} ${COMPOSITOR_LINK_FILES} ${LDFLAGS} -o $(BINDIR)/$(PROJECT) - --include $(DEPS) - -obj/%.o: src/%.cc - ${CC} ${CXXFLAGS} -MMD -c $< -o $@ - -obj/server/%.o: src/server/%.cc - ${CC} ${CXXFLAGS} -MMD -c $< -o $@ - -xdg-shell-protocol.h: - wayland-scanner server-header ${WAYLAND_PROTOCOLS}/stable/xdg-shell/xdg-shell.xml ${.TARGET} - -bin: - @[ -d bin ] || mkdir -p bin - -obj: - @[ -d obj ] || mkdir -p obj/server - -tags: - @git ls-files | ctags -R --exclude=.git --c++-kinds=+p --links=no --fields=+iaS --extras=+q -L- +kranewl: + cmake -S . -B build + make -C build +.PHONY: clean clean: - @rm -rf ./bin ./obj + @rm -rf ./build diff --git a/config.mk b/config.mk @@ -1,37 +0,0 @@ -PROJECT = kranewl -EXT_DEPS = wlroots pangocairo cairo pixman-1 xkbcommon wayland-server libinput libucl libprocps spdlog - -SRCDIR = src -INCDIR = include -OBJDIR = obj - -BINDIR = bin -INSTALLDIR = /usr/local/bin - -WAYLAND_PROTOCOLS = `pkg-config --variable pkgdatadir wayland-protocols` -PROTOCOL_HEADERS = xdg-shell-protocol.h - -COMPOSITOR_SRC_FILES := $(wildcard src/*.cc) -COMPOSITOR_OBJ_FILES := $(patsubst src/%.cc,obj/%.o,${COMPOSITOR_SRC_FILES}) - -SERVER_SRC_FILES := $(wildcard src/server/*.cc) -SERVER_OBJ_FILES := $(patsubst src/server/%.cc,obj/server/%.o,${SERVER_SRC_FILES}) - -SERVER_LINK_FILES := ${SERVER_OBJ_FILES} -COMPOSITOR_LINK_FILES := ${SERVER_OBJ_FILES} ${COMPOSITOR_OBJ_FILES} - -H_FILES := $(shell find $(INCDIR) -name '*.hh') -SRC_FILES := $(shell find $(SRCDIR) -name '*.cc') -OBJ_FILES := ${SERVER_OBJ_FILES} ${COMPOSITOR_OBJ_FILES} -DEPS = $(OBJ_FILES:%.o=%.d) - -SANFLAGS = -fsanitize=undefined -fsanitize=address -fsanitize-address-use-after-scope -CXXFLAGS = -Wall -I. -Iinclude -std=c++20 `pkg-config --cflags ${EXT_DEPS}` -LDFLAGS = `pkg-config --libs ${EXT_DEPS}` -pthread - -DEBUG_CXXFLAGS = -Wall -Wpedantic -Wextra -Wold-style-cast -g -DDEBUG ${SANFLAGS} -DEBUG_LDFLAGS = ${SANFLAGS} -RELEASE_CXXFLAGS = -march=native -mtune=native -O3 -flto -RELEASE_LDFLAGS = -flto - -CC = g++ diff --git a/etc/share/kranewl/kranewl.conf b/etc/share/kranewl/kranewl.conf @@ -0,0 +1,253 @@ +decorations { + border = 1 + gap = 5 + step = 100 + font = "monospace 10" + + colorscheme { + background = 0x282C34 + foreground = 0x000000 + selected = 0xF5E094 + grouped = 0xFDAF53 + first = 0xB8E673 + conflict = 0xED6B32 + insert = 0xE3C3FA + active = 0xFFFFFF + inactive = 0x465457 + } +} + +outputs * { + background = "~/wallpapers/simple/Solar.png" +} + +commands { + # programs + terminal = "$TERMINAL" + launcher = "dmenu_run" + filemanager = "caja" + browser = "qutebrowser" + browser_alt = "firefox" + bluetooth_mgt = "blueberry" + + # media + media_pause = "playerctl play-pause" + media_stop = "playerctl stop" + media_prev = "playerctl previous" + media_next = "playerctl next" + + # audio/mic + volume_mute = "amixer -D pulse sset Master toggle" + volume_down = "amixer -D pulse sset Master 5%-" + volume_up = "amixer -D pulse sset Master 5%+" + microphone_mute = "amixer -D pulse sset Capture toggle" + + # notifications + dunst_close = "dunstctl close" + dunst_close_all = "dunstctl close-all" + dunst_history_pop = "dunstctl history-pop" +} + +bindings { + mouse { + global { + M-ScrollDown = "" + M-S-ScrollDown = "" + M-ScrollUp = "" + M-S-ScrollUp = "" + } + + client { + M-Left = "" + + M-C-Right = "" + M-Right = "" + M-C-S-Right = "" + + M-C-S-Middle = "" + M-Middle = "" + + M-C-S-ScrollDown = "" + M-C-S-ScrollUp = "" + + M-Forward = "" + M-Backward = "" + } + } + + keyboard { + # exit + M-C-S-q = "" + + # client state modifiers + M-c = "" + M-S-Space = "" + M-f = "" + M-x = "" + M-A-C-f = "" + M-A-C-i = "" + M-A-C-p = "" + M-y = "" + M-u = "" + M-A-u = "" + + # client arrangers + M-C-Space = "" + M-C-h = "" + M-C-j = "" + M-C-k = "" + M-C-l = "" + M-C-S-h = "" + M-C-S-j = "" + M-C-S-k = "" + M-C-S-l = "" + M-C-S-y = "" + M-C-S-u = "" + M-C-S-i = "" + M-C-S-o = "" + M-C-Left = "" + M-C-Down = "" + M-C-Up = "" + M-C-Right = "" + M-j = "" + M-k = "" + M-S-j = "" + M-S-k = "" + M-r = "" + M-S-SemiColon = "" + M-S-Comma = "" + + # client jump criteria + M-b = "" + M-S-b = "" + M-C-b = "" + M-A-Space = "" + M-e = "" + M-Comma = "" + M-Period = "" + M-Slash = "" + + # workspace behavior modifiers + M-S-m = "" + + # workspace layout modifiers + M-S-f = "" + M-S-l = "" + M-z = "" + M-S-z = "" + M-m = "" + M-C-d = "" + M-S-d = "" + M-C-S-d = "" + M-g = "" + M-t = "" + M-S-t = "" + M-C-S-p = "" + M-A-C-S-p = "" + M-S-y = "" + M-C-y = "" + M-S-v = "" + M-C-v = "" + M-C-S-f = "" + M-Space = "" + + # workspace layout data modifiers + M-Equal = "" + M-Minus = "" + M-S-Equal = "" + M-i = "" + M-d = "" + M-l = "" + M-h = "" + M-S-PageUp = "" + M-S-PageDown = "" + M-S-Left = "" + M-C-S-Left = "" + M-S-Up = "" + M-C-S-Up = "" + M-S-Right = "" + M-C-S-Right = "" + M-S-Down = "" + M-C-S-Down = "" + M-C-S-Comma = "" + M-C-S-Period = "" + M-C-S-Slash = "" + M-C-S-Delete = "" + M-C-S-Equal = "" + M-A-C-S-Equal = "" + + # workspace layout storage and retrieval + M-S-F1 = "" + M-S-F2 = "" + M-S-F3 = "" + M-S-F4 = "" + M-S-F5 = "" + M-S-F6 = "" + M-S-F7 = "" + M-S-F8 = "" + M-S-F9 = "" + M-S-F10 = "" + M-S-F11 = "" + M-S-F12 = "" + M-F1 = "" + M-F2 = "" + M-F3 = "" + M-F4 = "" + M-F5 = "" + M-F6 = "" + M-F7 = "" + M-F8 = "" + M-F9 = "" + M-F10 = "" + M-F11 = "" + M-F12 = "" + + # context activators + M-C-Escape = "" + M-C-RightBracket = "" + M-C-LeftBracket = "" + M-C-1 = "" + M-C-2 = "" + M-C-3 = "" + M-C-4 = "" + M-C-5 = "" + M-C-6 = "" + M-C-7 = "" + M-C-8 = "" + M-C-9 = "" + M-C-0 = "" + + # workspace activators + M-Escape = "" + M-RightBracket = "" + M-LeftBracket = "" + M-1 = "" + M-2 = "" + M-3 = "" + M-4 = "" + M-5 = "" + M-6 = "" + M-7 = "" + M-8 = "" + M-9 = "" + M-0 = "" + + # workspace client movers + M-backslash = "" + M-S-RightBracket = "" + M-S-LeftBracket = "" + M-S-1 = "" + M-S-2 = "" + M-S-3 = "" + M-S-4 = "" + M-S-5 = "" + M-S-6 = "" + M-S-7 = "" + M-S-8 = "" + M-S-9 = "" + M-S-0 = "" + + # screen region modifiers + M-v = "" + } +} diff --git a/include/kranewl/conf/options.hh b/include/kranewl/conf/options.hh @@ -0,0 +1,10 @@ +#pragma once + +#include <string> + +struct Options { + std::string config_path; + std::string autostart; +}; + +Options parse_options(int, char **); diff --git a/include/kranewl/conf/parse.hh b/include/kranewl/conf/parse.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/kranewl/conf/state.hh b/include/kranewl/conf/state.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/kranewl/input/binding.hh b/include/kranewl/input/binding.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/kranewl/input/keyboard.hh b/include/kranewl/input/keyboard.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/kranewl/input/pointer.hh b/include/kranewl/input/pointer.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/kranewl/model.hh b/include/kranewl/model.hh @@ -0,0 +1,19 @@ +#pragma once + +#include <kranewl/server.hh> + +class Model final +{ +public: + Model(Server& server) + : m_server(server) + {} + + ~Model() {} + + void run(); + +private: + Server& m_server; + +}; diff --git a/include/kranewl/server.hh b/include/kranewl/server.hh @@ -1 +1,23 @@ #pragma once + +#include <kranewl/conf/state.hh> + +#include <wayland-server.h> +#include <wayland-util.h> + +#include <string> + +class Server final +{ +public: + Server(std::string&& wm_name) + : m_wm_name(wm_name) {} + + ~Server() {}; + +private: + std::string m_wm_name; + + + +}; diff --git a/include/kranewl/tree/container.hh b/include/kranewl/tree/container.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/kranewl/tree/node.hh b/include/kranewl/tree/node.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/kranewl/tree/root.hh b/include/kranewl/tree/root.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/kranewl/tree/view.hh b/include/kranewl/tree/view.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/kranewl/tree/workspace.hh b/include/kranewl/tree/workspace.hh @@ -0,0 +1,3 @@ +#pragma once + + diff --git a/include/version.hh b/include/version.hh @@ -0,0 +1 @@ +#define VERSION "master/b9e55e2+" +\ No newline at end of file diff --git a/src/kranec/main.cc b/src/kranec/main.cc @@ -0,0 +1,11 @@ +#include <version.hh> + +int +main(int argc, char** argv) +{ + // TODO + (void)argc; + (void)argv; + + return 0; +} diff --git a/src/kranewl/conf/options.cc b/src/kranewl/conf/options.cc @@ -0,0 +1,46 @@ +#include <version.hh> + +#include <kranewl/conf/options.hh> + +#include <iostream> +#include <unistd.h> + +const std::string usage = "Usage: kranewl [...options]\n\n" + "Options: \n" + " -x <autostart_file> Path to an executable autostart file.\n" + " -c <config_file> Path to a configuration file.\n" + " -h Prints this message.\n" + " -v Prints the version."; + +Options +parse_options(int argc, char **argv) +{ + Options options; + int opt; + + while ((opt = getopt(argc, argv, "vhx:c:")) != -1) { + switch (opt) { + case 'x': + options.autostart = optarg; + break; + + case 'c': + options.config_path = optarg; + break; + + case 'v': + std::cout << VERSION << std::endl << std::flush; + exit(EXIT_SUCCESS); + break; + + case '?': + case 'h': + default: + std::cout << usage << std::endl << std::flush; + exit(EXIT_SUCCESS); + break; + } + } + + return options; +} diff --git a/src/kranewl/conf/parse.cc b/src/kranewl/conf/parse.cc @@ -0,0 +1,3 @@ +#include <kranewl/conf/parse.hh> + + diff --git a/src/kranewl/conf/state.cc b/src/kranewl/conf/state.cc @@ -0,0 +1,3 @@ +#include <kranewl/conf/state.hh> + + diff --git a/src/kranewl/input/binding.cc b/src/kranewl/input/binding.cc @@ -0,0 +1,3 @@ +#include <kranewl/input/binding.hh> + + diff --git a/src/kranewl/input/keyboard.cc b/src/kranewl/input/keyboard.cc @@ -0,0 +1,3 @@ +#include <kranewl/input/keyboard.hh> + + diff --git a/src/kranewl/input/pointer.cc b/src/kranewl/input/pointer.cc @@ -0,0 +1,3 @@ +#include <kranewl/input/pointer.hh> + + diff --git a/src/kranewl/main.cc b/src/kranewl/main.cc @@ -0,0 +1,26 @@ +#ifdef DEBUG +#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_DEBUG +#endif + +#include <version.hh> + +#include <kranewl/model.hh> +#include <kranewl/server.hh> +#include <kranewl/conf/options.hh> + +#include <spdlog/spdlog.h> + +#include <string> + +int +main(int argc, char** argv) +{ + Options options = parse_options(argc, argv); + + spdlog::info("Initializing kranewl-" VERSION); + + Server server{"kranewl"}; + Model{server}.run(); + + return EXIT_SUCCESS; +} diff --git a/src/kranewl/model.cc b/src/kranewl/model.cc @@ -0,0 +1,7 @@ +#include <kranewl/model.hh> + +void +Model::run() +{ + // TODO +} diff --git a/src/server/server.cc b/src/kranewl/server.cc diff --git a/src/kranewl/tree/container.cc b/src/kranewl/tree/container.cc @@ -0,0 +1,3 @@ +#include <kranewl/tree/container.hh> + + diff --git a/src/kranewl/tree/node.cc b/src/kranewl/tree/node.cc @@ -0,0 +1,3 @@ +#include <kranewl/tree/node.hh> + + diff --git a/src/kranewl/tree/root.cc b/src/kranewl/tree/root.cc @@ -0,0 +1,3 @@ +#include <kranewl/tree/root.hh> + + diff --git a/src/kranewl/tree/view.cc b/src/kranewl/tree/view.cc @@ -0,0 +1,3 @@ +#include <kranewl/tree/view.hh> + + diff --git a/src/kranewl/tree/workspace.cc b/src/kranewl/tree/workspace.cc @@ -0,0 +1,3 @@ +#include <kranewl/tree/workspace.hh> + + diff --git a/src/main.cc b/src/main.cc @@ -1,3 +0,0 @@ -int -main() -{}