Module Name:    src
Committed By:   martin
Date:           Thu Oct  8 16:04:07 UTC 2020

Modified Files:
        src/distrib/sets/lists/xbase [netbsd-9]: mi
        src/external/mit/ctwm [netbsd-9]: Makefile
        src/external/mit/ctwm/bin/ctwm [netbsd-9]: Makefile
Added Files:
        src/external/mit/ctwm/etc [netbsd-9]: Makefile system.ctwmrc
        src/external/mit/ctwm/libexec [netbsd-9]: Makefile ctwm_app_menu

Log Message:
Pull up following revision(s) (requested by nia in ticket #1099):

        external/mit/ctwm/libexec/Makefile: revision 1.1
        external/mit/ctwm/bin/ctwm/Makefile: revision 1.6
        external/mit/ctwm/bin/ctwm/Makefile: revision 1.7
        external/mit/ctwm/bin/ctwm/Makefile: revision 1.8
        external/mit/ctwm/libexec/ctwm_app_menu: revision 1.1
        distrib/sets/lists/xbase/mi: revision 1.157
        external/mit/ctwm/Makefile: revision 1.2
        external/mit/ctwm/Makefile: revision 1.3
        external/mit/ctwm/Makefile: revision 1.4
        external/mit/ctwm/Makefile: revision 1.5
        external/mit/ctwm/etc/system.ctwmrc: revision 1.1
        external/mit/ctwm/etc/Makefile: revision 1.1
        external/mit/ctwm/etc/Makefile: revision 1.2

add a script for dynamically generating a menu in the ctwm desktop
this parses the files in /usr/pkg/share/applications and provides a
submenu for launching applications.

TODO: make /usr/pkg configurable somehow?

move the new ctwmrc here so it doesn't conflict with the upstream one

revert; use system.ctwmrc from xsrc until I understand why the build fails

unbreak. bsd.files.mk needs to have an includes target, see also
share/wscons/fonts/Makefile


To generate a diff of this commit:
cvs rdiff -u -r1.152 -r1.152.2.1 src/distrib/sets/lists/xbase/mi
cvs rdiff -u -r1.1 -r1.1.18.1 src/external/mit/ctwm/Makefile
cvs rdiff -u -r1.5 -r1.5.4.1 src/external/mit/ctwm/bin/ctwm/Makefile
cvs rdiff -u -r0 -r1.2.2.2 src/external/mit/ctwm/etc/Makefile
cvs rdiff -u -r0 -r1.1.2.2 src/external/mit/ctwm/etc/system.ctwmrc
cvs rdiff -u -r0 -r1.1.2.2 src/external/mit/ctwm/libexec/Makefile \
    src/external/mit/ctwm/libexec/ctwm_app_menu

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/xbase/mi
diff -u src/distrib/sets/lists/xbase/mi:1.152 src/distrib/sets/lists/xbase/mi:1.152.2.1
--- src/distrib/sets/lists/xbase/mi:1.152	Thu Jun 20 12:09:28 2019
+++ src/distrib/sets/lists/xbase/mi	Thu Oct  8 16:04:07 2020
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.152 2019/06/20 12:09:28 uki Exp $
+# $NetBSD: mi,v 1.152.2.1 2020/10/08 16:04:07 martin Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -1260,6 +1260,7 @@
 ./usr/X11R7/lib/xorg/protocol.txt			-unknown-	xorg
 ./usr/X11R7/libexec					base-x11-root	xorg
 ./usr/X11R7/libexec/chooser				-unknown-	xorg
+./usr/X11R7/libexec/ctwm_app_menu			-unknown-	xorg
 ./usr/X11R7/man						base-x11-root	xorg
 ./usr/X11R7/man/cat1					base-x11-root	xorg
 ./usr/X11R7/man/cat1/appres.0				-unknown-	.cat,xorg

Index: src/external/mit/ctwm/Makefile
diff -u src/external/mit/ctwm/Makefile:1.1 src/external/mit/ctwm/Makefile:1.1.18.1
--- src/external/mit/ctwm/Makefile:1.1	Thu Sep  3 22:24:02 2015
+++ src/external/mit/ctwm/Makefile	Thu Oct  8 16:04:07 2020
@@ -1,10 +1,10 @@
-#	$NetBSD: Makefile,v 1.1 2015/09/03 22:24:02 youri Exp $
+#	$NetBSD: Makefile,v 1.1.18.1 2020/10/08 16:04:07 martin Exp $
 
 # Top level Makefile to cross build xorg inside the NetBSD tree.
 
 .include <bsd.own.mk>
 
-SUBDIR=		bin
+SUBDIR=		bin etc libexec
 
 .if ${MKUPDATE} == "no" && !defined(NOCLEANDIR)
 BUILDTARGETS+=  cleandir

Index: src/external/mit/ctwm/bin/ctwm/Makefile
diff -u src/external/mit/ctwm/bin/ctwm/Makefile:1.5 src/external/mit/ctwm/bin/ctwm/Makefile:1.5.4.1
--- src/external/mit/ctwm/bin/ctwm/Makefile:1.5	Sun Mar 18 11:40:41 2018
+++ src/external/mit/ctwm/bin/ctwm/Makefile	Thu Oct  8 16:04:07 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.5 2018/03/18 11:40:41 jmcneill Exp $
+#	$NetBSD: Makefile,v 1.5.4.1 2020/10/08 16:04:07 martin Exp $
 
 .include <bsd.own.mk>
 
@@ -44,10 +44,7 @@ FILES=			3D_Expand15.xpm 3D_Iconify15.xp
 			xedit.xpm xftp.xpm xgopher.xpm xgrab.xpm xhpcalc.xpm \
 			xirc.xpm xmail.xpm xman.xpm xmosaic.xpm xnomail.xpm \
 			xrn-compose.xpm xrn.goodnews.xpm xrn.nonews.xpm xrn.xpm \
-			xterm.xpm system.ctwmrc
-
-FILESDIR_system.ctwmrc = ${CTWMCONFIGDIR}
-
+			xterm.xpm
 
 LDADD+=	-lXpm  -lXmu -lXt -lSM -lICE -lXext -lX11
 DPADD+=	${LIBXPM} ${LIBXMU} ${LIBXT} ${LIBSM} ${LIBICE} ${LIBXEXT} ${LIBX11}

Added files:

Index: src/external/mit/ctwm/etc/Makefile
diff -u /dev/null src/external/mit/ctwm/etc/Makefile:1.2.2.2
--- /dev/null	Thu Oct  8 16:04:07 2020
+++ src/external/mit/ctwm/etc/Makefile	Thu Oct  8 16:04:07 2020
@@ -0,0 +1,10 @@
+#	$NetBSD: Makefile,v 1.2.2.2 2020/10/08 16:04:07 martin Exp $
+
+FILESDIR=	${X11ETCDIR}/ctwm
+FILESMODE=	644
+FILES=		system.ctwmrc
+
+realall:	${FILES}
+
+.include <bsd.prog.mk>
+.include <bsd.files.mk>

Index: src/external/mit/ctwm/etc/system.ctwmrc
diff -u /dev/null src/external/mit/ctwm/etc/system.ctwmrc:1.1.2.2
--- /dev/null	Thu Oct  8 16:04:07 2020
+++ src/external/mit/ctwm/etc/system.ctwmrc	Thu Oct  8 16:04:07 2020
@@ -0,0 +1,383 @@
+#
+# $NetBSD: system.ctwmrc,v 1.1.2.2 2020/10/08 16:04:07 martin Exp $
+#
+# ctwmrc by nia
+#
+# An attempt to strike a usability balance that makes keys and buttons
+# do the thing users of various operating systems expect them to do.
+#
+# Most things should be possible to accomplish with only the keyboard.
+#
+# Also, mostly inoffensive colours (avoiding potentially inaccessible
+# combinations like red-green).
+#
+
+# don't use the default buttons or key bindings, we define our own
+NoDefaults
+
+ShowWorkSpaceManager
+ShowIconManager
+
+# 3D icon managers do not seemingly honor IconManagerHighlight,
+# which makes them slightly less useful
+#UseThreeDIconManagers
+#UseThreeDWMap
+UseThreeDBorders
+#UseThreeDMenus
+UseThreeDTitles
+
+ThreeDBorderWidth         3
+
+# TODO: we can use syscmd() in combination with xdpyinfo to detect
+# HiDPI screens and set appropiate fonts.
+#
+# need some good scaled bitmap fonts imported - terminus or spleen
+# would be good candidates
+MenuFont         "-misc-fixed-medium-r-*-*-14-*-*-*-*-*-*-*"
+TitleFont        "-misc-fixed-bold-r-*-*-18-*-*-*-*-*-*-*"
+IconManagerFont  "-misc-fixed-medium-r-*-*-14-*-*-*-*-*-*-*"
+IconFont         "-misc-fixed-bold-r-*-*-18-*-*-*-*-*-*-*"
+ResizeFont       "-misc-fixed-medium-r-*-*-18-*-*-*-*-*-*-*"
+WorkSpaceFont    "-misc-fixed-medium-r-*-*-14-*-*-*-*-*-*-*"
+
+RestartPreviousState
+
+DecorateTransients
+
+# hide window contents while altering windows for performance
+NoOpaqueMove
+NoOpaqueResize
+
+SloppyFocus
+
+AutoOccupy
+AutoRelativeResize
+
+CenterFeedbackWindow
+
+NoGrabServer
+
+RaiseOnClick
+
+DontMoveOff
+MoveOffResistance	  150
+
+ConstrainedMoveTime       0
+
+IgnoreLockModifier
+
+# Not actually that random.
+# Means that windows do not have to be placed by hand with a mouse,
+# which helps if you are using a keyboard only.
+RandomPlacement          "on"
+
+MoveDelta                 3
+ClearShadowContrast       50
+DarkShadowContrast        50
+MovePackResistance        100
+
+RaiseWhenAutoUnSqueeze
+ShortAllWindowsMenus
+
+#BeNiceToColorMap
+
+NoStackMode
+
+StayUpMenus
+WarpToDefaultMenuEntry
+MenuShadowDepth      1
+
+NoTitleFocus
+
+# warp through all windows in the current workspace
+WindowRing
+WarpRingOnScreen
+
+NoTitleHighlight
+
+TitleButtonShadowDepth    1
+TitleShadowDepth          1
+TitleButtonBorderWidth    0
+TitlePadding              0
+TitleJustification        "left"
+ButtonIndent              0
+FramePadding		  0
+
+LeftTitleButton           ":xpm:dot"      = f.menu "titleops"
+RightTitleButton          ":xpm:resize"   = f.resize
+RightTitleButton          ":xpm:cross"    = f.delete
+
+BorderWidth               4
+BorderShadowDepth         2
+BorderResizeCursors
+
+MaxIconTitleWidth         120
+NoIconManagerFocus
+IconManagerShadowDepth    1
+IconManagerGeometry       "200x-1-1+0" 1
+IconifyByUnmapping
+
+ReallyMoveInWorkspaceManager
+MapWindowCurrentWorkSpace {  "black" "firebrick" }
+DontToggleWorkSpaceManagerState
+DontWarpCursorInWMap
+NoShowOccupyAll	
+ReverseCurrentWorkspace	
+StartInMapState
+WMgrHorizButtonIndent     0
+WMgrVertButtonIndent      0
+WorkSpaceManagerGeometry  "70x270-4-4" 1
+
+WorkSpaces 
+{
+    "1"    { "lavender" "black" "darkslateblue" "white" }
+    "2"    { "lavender" "black" "darkslateblue" "white" }
+    "3"    { "lavender" "black" "darkslateblue" "white" }
+    "4"    { "lavender" "black" "darkslateblue" "white" }
+    "5"    { "lavender" "black" "darkslateblue" "white" }
+}
+
+Color
+{
+  BorderColor           "steelblue"
+
+  BorderTileBackground  "lavender"
+  BorderTileForeground  "lavender"
+
+  DefaultBackground     "grey70"
+  DefaultForeground     "black"
+
+  TitleBackground       "lavender"
+  TitleForeground       "black" 
+
+  MenuBackground        "lavender"
+  MenuForeground        "black"
+  MenuTitleBackground   "darkorange"
+  MenuTitleForeground   "black"
+  MenuShadowColor 	"gray15"
+
+  IconBackground        "black"
+  IconForeground        "white"
+  IconBorderColor       "gray45"
+
+  IconManagerBackground "lavender"
+  IconManagerForeground "black"
+  IconManagerHighlight  "firebrick"
+
+  MapWindowBackground   "lavender"
+  MapWindowForeground   "black"	
+}
+
+Monochrome
+{
+    BorderColor 		"black"
+
+    BorderTileForeground 	"black"
+    BorderTileBackground 	"white"
+
+    TitleForeground 		"black"
+    TitleBackground 		"white"
+
+    MenuForeground 		"black"
+    MenuBackground 		"white"
+    MenuTitleForeground 	"black"
+    MenuTitleBackground 	"white"
+
+    MapWindowForeground 	"white"
+    MapWindowBackground 	"white"
+}
+
+menu "NetBSD"
+{
+    "NetBSD"			f.title
+    ""				f.separator
+    " Terminal"			!"uxterm &"
+    " Calculator"		!"xcalc &"
+    " Clock"			!"xclock -digital &"
+    " XEyes"			!"xeyes &"
+    ""				f.separator
+    " Applications"		f.menu "appmenu"
+    ""				f.separator
+    " Restart CTWM"		f.twmrc
+    " Quit"			f.quit
+}
+
+syscmd(/usr/X11R7/libexec/ctwm_app_menu)
+
+menu "titleops"
+{
+    "Window"       f.title
+    ""             f.separator
+    " Iconify"     f.iconify
+    " Resize"      f.resize
+    " Move"        f.move
+    ""             f.separator
+    " Occupy ..."  f.occupy
+    " Occupy All"  f.occupyall
+    ""             f.separator
+    " Raise"       f.raise
+    " Lower"       f.lower
+    ""             f.separator
+    " Zoom"        f.fullzoom
+    " Zoom-V"      f.zoom
+    " Zoom-H"      f.horizoom
+    ""             f.separator
+    " Kill"        f.destroy
+    " Close"       f.delete
+}
+
+IconManagerDontShow
+{
+} 
+
+OccupyAll 
+{
+   "XClock"
+   "xsm"
+   "xconsole"
+   "XVidCap"
+}
+
+AlwaysOnTop
+{
+   "XVidCap"
+}
+
+NoTitle 
+{
+   "TWM Icon Manager"
+   "WorkSpaceManager"
+}
+
+WindowRingExclude
+{
+   "TWM Icon Manager"
+   "WorkSpaceManager"
+   "XClock"
+   "xsm"
+   "xconsole"
+}
+
+StartIconified 
+{ 
+}
+
+NoBorder
+{
+   "TWM Icon Manager"
+}
+
+Function "raise-move"          { f.raise f.deltastop f.forcemove }
+Function "raise-and-resize"    { f.raise f.deltastop f.resize }
+
+# These are basically essential for basic functionality.
+
+Button1 =	: title		: f.function "raise-move"
+Button2 =	: title		: f.function "raise-and-resize"
+Button3 =	: title | frame	: f.menu "titleops"
+
+Button1 =	: frame		: f.function "raise-and-resize"
+
+Button1 =	: icon | iconmgr	: f.iconify
+Button2 =	: icon			: f.move
+Button3 =	: icon | iconmgr	: f.raiselower
+
+Button1 =	: root		: f.menu "NetBSD"
+Button2 =	: root		: f.menu "TwmAllWindows"
+Button3 =	: root		: f.menu "NetBSD"
+
+#
+# Mod1 is the "Alt/Meta" key.
+# Mod4 is the "OS" key.
+#
+
+Button1 = mod1	: window	: f.forcemove
+Button1 = mod4	: window	: f.forcemove
+Button3 = mod1	: window 	: f.resize
+Button3 = mod4	: window 	: f.resize
+
+"Up"     = mod4           : all : f.upworkspace
+"Down"   = mod4           : all : f.downworkspace
+"Left"   = mod4           : all : f.prevworkspace
+"Right"  = mod4           : all : f.nextworkspace
+
+"Up"     = mod1 | control : all : f.upworkspace
+"Down"   = mod1 | control : all : f.downworkspace
+"Left"   = mod1 | control : all : f.prevworkspace
+"Right"  = mod1 | control : all : f.nextworkspace
+
+"1"      = mod1 | control : all : f.gotoworkspace "1"
+"2"      = mod1 | control : all : f.gotoworkspace "2"
+"3"      = mod1 | control : all : f.gotoworkspace "3"
+"4"      = mod1 | control : all : f.gotoworkspace "4"
+"5"      = mod1 | control : all : f.gotoworkspace "5"
+"6"      = mod1 | control : all : f.gotoworkspace "6"
+"7"      = mod1 | control : all : f.gotoworkspace "7"
+"8"      = mod1 | control : all : f.gotoworkspace "8"
+"9"      = mod1 | control : all : f.gotoworkspace "9"
+
+"1"      = mod4 : all : f.gotoworkspace "1"
+"2"      = mod4 : all : f.gotoworkspace "2"
+"3"      = mod4 : all : f.gotoworkspace "3"
+"4"      = mod4 : all : f.gotoworkspace "4"
+"5"      = mod4 : all : f.gotoworkspace "5"
+"6"      = mod4 : all : f.gotoworkspace "6"
+"7"      = mod4 : all : f.gotoworkspace "7"
+"8"      = mod4 : all : f.gotoworkspace "8"
+"9"      = mod4 : all : f.gotoworkspace "9"
+
+"XF86AudioRaiseVolume" = : all : !"mixerctl -w outputs.master+=5"
+"XF86AudioLowerVolume" = : all : !"mixerctl -w outputs.master-=5"
+"XF86AudioMute"        = : all : !"mixerctl -w outputs.master=0"
+
+#
+# "Windows" style keyboard shortcuts
+#
+
+"Tab"    = mod1           : all : f.warpring "next"
+"Tab"    = mod1 | s       : all : f.warpring "prev"
+"Tab"    = mod4           : all : f.warpring "next"
+"Tab"    = mod4 | s       : all : f.warpring "prev"
+"space"  = mod1           : window : f.menu "titleops"
+"F4"     = mod1           : window : f.delete
+
+#
+# "Mac" style keyboard shortcuts
+#
+
+"w"      = mod4           : window : f.delete
+"m"      = mod4           : window : f.iconify
+
+#
+# "evilwm" style keyboard shortcuts
+#
+
+# it is useful to be able to spawn a terminal without clicking.
+"Return" = mod1 | c : all : !"uxterm &"
+"Return" = mod4 | s : all : !"uxterm &"
+
+"slash"  = mod1 | c : all : f.menu "TwmAllWindows"
+"slash"  = mod4 : all     : f.menu "TwmAllWindows"
+"p"      = mod1 | c : all : f.menu "NetBSD"
+"p"      = mod4 : all     : f.menu "NetBSD"
+
+# vi-style directions
+"j"      = mod1 | control : window : f.jumpdown "10"
+"k"      = mod1 | control : window : f.jumpup "10"
+"h"      = mod1 | control : window : f.jumpleft "10"
+"l"      = mod1 | control : window : f.jumpright "10"
+
+"j"      = mod4 : window : f.jumpdown "10"
+"k"      = mod4 : window : f.jumpup "10"
+"h"      = mod4 : window : f.jumpleft "10"
+"l"      = mod4 : window : f.jumpright "10"
+
+"j"      = mod4 | s : window : f.changesize "bottom +10"
+"k"      = mod4 | s : window : f.changesize "bottom -10"
+"h"      = mod4 | s : window : f.changesize "right -10"
+"l"      = mod4 | s : window : f.changesize "right +10"
+
+"j"      = mod1 | c | s : window : f.changesize "bottom +10"
+"k"      = mod1 | c | s : window : f.changesize "bottom -10"
+"h"      = mod1 | c | s : window : f.changesize "right -10"
+"l"      = mod1 | c | s : window : f.changesize "right +10"

Index: src/external/mit/ctwm/libexec/Makefile
diff -u /dev/null src/external/mit/ctwm/libexec/Makefile:1.1.2.2
--- /dev/null	Thu Oct  8 16:04:07 2020
+++ src/external/mit/ctwm/libexec/Makefile	Thu Oct  8 16:04:07 2020
@@ -0,0 +1,9 @@
+# $NetBSD: Makefile,v 1.1.2.2 2020/10/08 16:04:07 martin Exp $
+
+.include <bsd.own.mk>
+
+SCRIPTS=	ctwm_app_menu
+
+SCRIPTSDIR=	${X11ROOTDIR}/libexec
+
+.include <bsd.prog.mk>
Index: src/external/mit/ctwm/libexec/ctwm_app_menu
diff -u /dev/null src/external/mit/ctwm/libexec/ctwm_app_menu:1.1.2.2
--- /dev/null	Thu Oct  8 16:04:07 2020
+++ src/external/mit/ctwm/libexec/ctwm_app_menu	Thu Oct  8 16:04:07 2020
@@ -0,0 +1,53 @@
+#!/bin/sh
+#	$NetBSD: ctwm_app_menu,v 1.1.2.2 2020/10/08 16:04:07 martin Exp $
+OFS=$IFS
+IFS='
+'
+printf 'menu "appmenu"\n'
+printf '{\n'
+printf '\t"Applications"\tf.title\n'
+for app in $(find /usr/pkg/share/applications -name '*.desktop');
+do
+	name=""
+	exec=""
+	terminal=""
+	nodisplay=""
+	while read line;
+	do
+		case $line in
+			Name=*)
+				if ! [ -n "$name" ];
+				then
+					name=$(printf '%s' "$line" | cut -c6- | tr -d '\r')
+				fi
+			;;
+			Exec=*)
+				if ! [ -n "$exec" ];
+				then
+					exec=$(printf '%s' "$line" | cut -c6- | sed -e 's/ %.*//g' | tr -d '\r')
+				fi
+			;;
+			Terminal=true)
+				terminal="true"
+			;;
+			OnlyShowIn=*|NoDisplay=true)
+				nodisplay="true"
+			;;
+		esac
+	done < "$app"
+	if [ -n "$nodisplay" ];
+	then
+		continue
+	fi
+	if [ -n "$name" -a -n "$exec" ];
+	then
+		if [ -n "$terminal" ];
+		then
+			printf '\t" %s" !"uxterm %s &" \n' "$name" "$exec"
+		else
+			printf '\t" %s" !"%s &" \n' "$name" "$exec"
+		fi
+	fi
+done | sort
+printf '}\n'
+IFS=$OIFS

Reply via email to