aboutsummaryrefslogtreecommitdiff
path: root/x11-wm/chamfer
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2019-11-10 15:37:37 +0000
committerJan Beich <jbeich@FreeBSD.org>2019-11-10 15:37:37 +0000
commit69e65b6fe5ec0bca456542d730b00a897b2bce19 (patch)
tree8aed14f121e49dd7ec286e23f75226eb2622e828 /x11-wm/chamfer
parent7142b5d3e16b11908199dc8bddbcb450a5b76709 (diff)
downloadports-69e65b6fe5ec0bca456542d730b00a897b2bce19.tar.gz
ports-69e65b6fe5ec0bca456542d730b00a897b2bce19.zip
x11-wm/chamfer: add new port
Chamferwm is a dynamic tiling window manager with a built-in Vulkan based compositor. Besides aiming to be a fully featured and highly configurable window manager, significant effort is put to provide a complete control over the appearance of the desktop. With its shader based customization system, Chamferwm enables rendering of arbitrary window decorations, borders and effects, maximizing the potential for visual personalization. Window manager: - Dynamic horizontal and vertical tiling with gaps and stacking - Specify container size restrictions, overlap when necessary - Resize and translate individual containers in their place while keeping the surrounding layout - Floating containers and automatic dialog, dock, widget etc. handling - Yank and paste containers to move them within the tree hierarchy along with typical move operations - Configuration with python, scriptable behaviour with client and container specific callbacks - Fully keyboard controllable Compositor: - Vulkan renderer - Arbitrary window decorations and borders with user supplied shaders - Per-client materials - Optional, alternatively use any other external compositor https://jaelpark.github.io/chamferwm-docs/
Notes
Notes: svn path=/head/; revision=517213
Diffstat (limited to 'x11-wm/chamfer')
-rw-r--r--x11-wm/chamfer/Makefile55
-rw-r--r--x11-wm/chamfer/distinfo3
-rw-r--r--x11-wm/chamfer/files/patch-main.cpp13
-rw-r--r--x11-wm/chamfer/pkg-descr27
-rw-r--r--x11-wm/chamfer/pkg-plist10
5 files changed, 108 insertions, 0 deletions
diff --git a/x11-wm/chamfer/Makefile b/x11-wm/chamfer/Makefile
new file mode 100644
index 000000000000..11d3b878b036
--- /dev/null
+++ b/x11-wm/chamfer/Makefile
@@ -0,0 +1,55 @@
+# $FreeBSD$
+
+PORTNAME= chamfer
+DISTVERSION= s20191106
+CATEGORIES= x11-wm
+
+MAINTAINER= jbeich@FreeBSD.org
+COMMENT= Tiling X11 window manager with Vulkan compositor
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${LOCALBASE}/include/vulkan/vulkan.h:devel/vulkan-headers \
+ glslc:graphics/shaderc \
+ glm>0:math/glm
+LIB_DEPENDS= libboost_filesystem.so:devel/boost-libs \
+ ${PY_BOOST} \
+ libvulkan.so:graphics/vulkan-loader \
+ libxcb-cursor.so:x11/xcb-util-cursor \
+ libxcb-keysyms.so:x11/xcb-util-keysyms \
+ libxcb-icccm.so:x11/xcb-util-wm
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}psutil>0:sysutils/py-psutil@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}xlib>0:x11-toolkits/py-xlib@${PY_FLAVOR}
+
+USES= compiler:c++17-lang meson localbase pkgconfig python:3.3+ xorg
+USE_GITHUB= yes
+USE_XORG= xcb
+GH_ACCOUNT= jaelpark
+GH_PROJECT= ${PORTNAME}wm
+GH_TAGNAME= 176bb1d
+CXXFLAGS+= -Wno-narrowing
+
+post-patch:
+ @${REINPLACE_CMD} -e 's,/usr,${PREFIX},' \
+ ${WRKSRC}/src/config.cpp ${WRKSRC}/src/main.cpp
+# XXX import('python').find_installation().dependency()
+# XXX https://github.com/mesonbuild/meson/issues/4788
+ @${REINPLACE_CMD} -e '/boost/!s/python3/python-${PYTHON_VER}/' \
+ -e '/boost/s/python3/python${PYTHON_SUFFIX}/' \
+ ${WRKSRC}/meson.build
+
+do-install:
+ ${INSTALL_PROGRAM} ${INSTALL_WRKSRC}/${PORTNAME} \
+ ${STAGEDIR}${PREFIX}/bin
+ ${MKDIR} ${STAGEDIR}${DATADIR}/shaders
+ ${INSTALL_DATA} ${INSTALL_WRKSRC}/*.spv \
+ ${STAGEDIR}${DATADIR}/shaders
+ ${MKDIR} ${STAGEDIR}${DATADIR}/config
+ ${INSTALL_DATA} ${WRKSRC}/config/config.py \
+ ${STAGEDIR}${DATADIR}/config/config.py.sample
+ ${MKDIR} ${STAGEDIR}${PREFIX}/share/xsessions/
+ ${INSTALL_DATA} ${WRKSRC}/share/${PORTNAME}.desktop \
+ ${STAGEDIR}${PREFIX}/share/xsessions/
+
+.include <bsd.port.mk>
diff --git a/x11-wm/chamfer/distinfo b/x11-wm/chamfer/distinfo
new file mode 100644
index 000000000000..220c37cb92ff
--- /dev/null
+++ b/x11-wm/chamfer/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1573053413
+SHA256 (jaelpark-chamferwm-s20191106-176bb1d_GH0.tar.gz) = 9821401d30cfb7c3babdd63322d37318314a430f8dfba82b067559597146102e
+SIZE (jaelpark-chamferwm-s20191106-176bb1d_GH0.tar.gz) = 119191
diff --git a/x11-wm/chamfer/files/patch-main.cpp b/x11-wm/chamfer/files/patch-main.cpp
new file mode 100644
index 000000000000..d88480bd121c
--- /dev/null
+++ b/x11-wm/chamfer/files/patch-main.cpp
@@ -0,0 +1,13 @@
+- Add default shader path
+
+--- src/main.cpp.orig 2019-08-02 19:10:02 UTC
++++ src/main.cpp
+@@ -806,7 +806,7 @@ int main(sint argc, const char **pargv){
+ args::ValueFlag<uint> deviceIndexOpt(group_comp,"id","GPU to use by its index. By default the first device in the list of enumerated GPUs will be used.",{"device-index"});
+ args::Flag debugLayersOpt(group_comp,"debugLayers","Enable Vulkan debug layers.",{"debug-layers",'l'},false);
+ args::Flag noScissoringOpt(group_comp,"noScissoring","Disable scissoring optimization.",{"no-scissoring"},false);
+- args::ValueFlagList<std::string> shaderPaths(group_comp,"path","Shader lookup path. SPIR-V shader objects are identified by an '.spv' extension. Multiple paths may be specified.",{"shader-path"});
++ args::ValueFlagList<std::string> shaderPaths(group_comp,"path","Shader lookup path. SPIR-V shader objects are identified by an '.spv' extension. Multiple paths may be specified.",{"shader-path"},{"/usr/share/chamfer/shaders"});
+
+ try{
+ parser.ParseCLI(argc,pargv);
diff --git a/x11-wm/chamfer/pkg-descr b/x11-wm/chamfer/pkg-descr
new file mode 100644
index 000000000000..b94b30fe4a73
--- /dev/null
+++ b/x11-wm/chamfer/pkg-descr
@@ -0,0 +1,27 @@
+Chamferwm is a dynamic tiling window manager with a built-in Vulkan
+based compositor. Besides aiming to be a fully featured and highly
+configurable window manager, significant effort is put to provide a
+complete control over the appearance of the desktop. With its shader
+based customization system, Chamferwm enables rendering of arbitrary
+window decorations, borders and effects, maximizing the potential for
+visual personalization.
+
+Window manager:
+- Dynamic horizontal and vertical tiling with gaps and stacking
+- Specify container size restrictions, overlap when necessary
+- Resize and translate individual containers in their place while
+ keeping the surrounding layout
+- Floating containers and automatic dialog, dock, widget etc. handling
+- Yank and paste containers to move them within the tree hierarchy
+ along with typical move operations
+- Configuration with python, scriptable behaviour with client and
+ container specific callbacks
+- Fully keyboard controllable
+
+Compositor:
+- Vulkan renderer
+- Arbitrary window decorations and borders with user supplied shaders
+- Per-client materials
+- Optional, alternatively use any other external compositor
+
+WWW: https://jaelpark.github.io/chamferwm-docs/
diff --git a/x11-wm/chamfer/pkg-plist b/x11-wm/chamfer/pkg-plist
new file mode 100644
index 000000000000..545c3d586326
--- /dev/null
+++ b/x11-wm/chamfer/pkg-plist
@@ -0,0 +1,10 @@
+bin/chamfer
+@sample %%DATADIR%%/config/config.py.sample
+%%DATADIR%%/shaders/default_fragment.spv
+%%DATADIR%%/shaders/default_geometry.spv
+%%DATADIR%%/shaders/default_vertex.spv
+%%DATADIR%%/shaders/frame_fragment.spv
+%%DATADIR%%/shaders/frame_geometry.spv
+%%DATADIR%%/shaders/frame_vertex.spv
+%%DATADIR%%/shaders/solid_fragment.spv
+share/xsessions/chamfer.desktop