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