Thread: PekWM
View Single Post
Old 29th November 2013
daemonfowl daemonfowl is offline
bsdstudent
 
Join Date: Jan 2012
Location: DaemonLand
Posts: 834
Default

Hi nasser !
I've just tried pekwm .. it looks cool & similar to my favorite cwm .. I first run into a similar issue on -current .. but when I used defaults ~/.pekwm configuration dating back to OpenBSD 5.2 :-) , I got it working .. I can use the menu and lauch applications etc ..

$ cat ~/.pekwm/menu
Code:
# Menu config for pekwm

# Variables
INCLUDE = "vars"

RootMenu = "Pekwm" {
	Entry = "Terminal" { Actions = "Exec $TERM &" }
	Entry = "Run.." { Actions = "ShowCmdDialog" }

	Separator {}

	Submenu = "Editors" {
		Entry = "vi" { Actions = "Exec $TERM -title vi -e vi &" }
		Entry = "vim" { Actions = "Exec $TERM -title vim -e vim &" }
		Entry = "gvim" { Actions = "Exec gvim &" }
		Entry = "Emacs" { Actions = "Exec emacs &" }
		Entry = "Emacs Terminal" { Actions = "Exec $TERM -title emacs -e emacs -nw &" }
		Entry = "Kate" { Actions = "Exec kate &" }
	}
	Submenu = "Graphics" {
		Entry = "display" { Actions = "Exec display &" }
		Entry = "Gimp" { Actions = "Exec gimp &" }
		Entry = "Gv" { Actions = "Exec gv &" }
		Entry = "Xpdf" { Actions = "Exec xpdf &" }
		Entry = "gqview" { Actions = "Exec gqview &" }
	}
	Submenu = "Multimedia" {
		Entry = "Amarok" { Actions = "Exec amarok &" }
		Entry = "Quod Libet" { Actions = "Exec quodlibet &" }
		Entry = "Xmms" { Actions = "Exec xmms &" }
		Entry = "MPlayer" { Actions = "Exec gmplayer &" }
		Entry = "Xine" { Actions = "Exec xine &" }
		Entry = "xawtv" { Actions = "Exec xawtv &" }
		Entry = "Ogle" { actions = "exec ogle &" }
		Entry = "alsamixer" { Actions = "Exec $TERM -title alsamixer -e alsamixer &" }
	}
	Submenu = "Utils" {
		Entry = "XCalc" { Actions = "Exec xcalc &" }
		Entry = "XMan" { Actions = "Exec xman &" }
		Entry = "Xpdf" { Actions = "Exec xpdf &" }
		Entry = "GGv" { Actions = "Exec ggv &" }
		Entry = "Evince" { Actions = "Exec evince &" }
		Entry = "gucharmap" { Actions = "Exec gucharmap &" }
		Entry = "Gkrellm" { Actions = "Exec gkrellm &" }
		Entry = "Gkrellm2" { Actions = "Exec gkrellm2 &" }
		Entry = "ROX Filer" { Actions = "Exec rox &" }
	}
	Submenu = "WWW" {
		Entry = "Dillo" { Actions = "Exec dillo &" }
		Entry = "Konqueror" { Actions = "Exec konqueror &" }
		Entry = "Mozilla" { Actions = "Exec mozilla &" }
		Entry = "Firefox" { Actions = "Exec firefox &" }
		Entry = "Mozilla Firefox" { Actions = "Exec mozilla-firefox &" }
	}
	Submenu = "FTP" {
		Entry = "gftp" { Actions = "Exec gftp &" }
		Entry = "lftp" { Actions = "Exec $TERM -title lftp -e lftp &" }
	}
	Submenu = "Communication" {
		Entry = "Mutt" { Actions = "Exec $TERM -title mutt -e mutt &" }
		Entry = "Pine" { Actions = "Exec $TERM -title pine -e pine &" }
		Entry = "Thunderbird" { Actions = "Exec thunderbird &" }
		Entry = "Mozilla Thunderbird" { Actions = "Exec mozilla-thunderbird &" }
		Entry = "Evolution" { Actions = "Exec evolution &" }
		Entry = "KMail" { Actions = "Exec kmail &" }
		Entry = "Gaim" { Actions = "Exec gaim &" }
		Entry = "Irssi" { Actions = "Exec $TERM -title irssi -e irssi &" }
		Entry = "Kopete" { Actions = "Exec kopete &" }
	}
	Submenu = "Office" {
		Entry = "KOffice Workspace" { Actions = "Exec koshell &" }
		Entry = "OpenOffice" { Actions = "Exec ooffice &" }
		Entry = "StarOffice" { Actions = "Exec soffice &" }
	}
	Submenu = "Development" {
		Entry = "Anjuta" { Actions = "Exec anjuta &" }
		Entry = "Eclipse" { Actions = "Exec eclipse &" }
		Entry = "KDevelop" { Actions = "Exec kdevelop &" }
	}

	Separator {}

	Submenu = "Go to" {
		SubMenu = "Workspace" {
			# Create goto menu once per pekwm config reload. The fast way that
			# will work for most if not all users.
			COMMAND = "/usr/local/share/pekwm/scripts/pekwm_ws_menu.sh goto"
			# Create goto menu every time the menu is opened. The slow way.
			# This is what you want if you are using external tools to make
			# the amount of workspaces something else than what you define in
			# ~/.pekwm/config. You will know if you want this.
			# Entry = "" { Actions = "Dynamic /usr/local/share/pekwm/scripts/pekwm_ws_menu.sh goto dynamic" }
		}
		Entry = "Window.." { Actions = "ShowMenu GotoClient True" }
	}
	Submenu = "Pekwm" {
		Submenu = "Themes" {
			Entry { Actions = "Dynamic /usr/local/share/pekwm/scripts/pekwm_themeset.sh /usr/local/share/pekwm/themes" }
			Entry { Actions = "Dynamic /usr/local/share/pekwm/scripts/pekwm_themeset.sh ~/.pekwm/themes" }
		}
		Entry = "Reload" { Actions = "Reload" }
		Entry = "Restart" { Actions = "Restart" }
		Entry = "Exit" { Actions = "Exit" }
		Submenu = "Exit to" {
			Entry = "Xterm" { Actions = "RestartOther xterm" }
			Entry = "TWM" { Actions = "RestartOther twm" }
		}
	}
}

WindowMenu = "Window Menu" {
	Entry = "(Un)Stick" { Actions = "Toggle Sticky" }
	Entry = "(Un)Shade" { Actions = "Toggle Shaded" }
	Entry = "Iconify" { Actions = "Set Iconified" }
	Entry = "Command.." { Actions = "ShowCmdDialog" }

	Submenu = "Maximize" {
		Entry = "Toggle Full" { Actions = "Toggle Maximized True True" }
		Entry = "Toggle Horizontal" { Actions = "Toggle Maximized True False" }
		Entry = "Toggle Vertical" { Actions = "Toggle Maximized False True" }
	}
	Submenu = "Fill" {
		Entry = "Full" { Actions = "MaxFill True True" }
		Entry = "Horizontal" { Actions = "MaxFill True False" }
		Entry = "Vertical" { Actions = "MaxFill False True" }
	}
	Submenu = "Stacking" {
		Entry = "Raise" { Actions = "Raise" }
		Entry = "Lower" { Actions = "Lower" }
		Entry = "Toggle Always On Top" { Actions = "Toggle AlwaysOnTop" }
		Entry = "Toggle Always Below" { Actions = "Toggle AlwaysBelow" }
	}
	Submenu = "Decorations" {
		Entry = "Toggle Decorations" { Actions = "Toggle DecorBorder; Toggle DecorTitlebar" }
		Entry = "Toggle Borders" { Actions = "Toggle DecorBorder" }
		Entry = "Toggle Titlebar" { Actions = "Toggle DecorTitlebar" }
	}
	Submenu = "Skip" {
		Entry = "Toggle showing this frame in menus" { Actions = "Toggle Skip Menus" }
		Entry = "Toggle including this frame in focus toggle" { Actions = "Toggle Skip FocusToggle" }
		Entry = "Toggle if this frame snaps to other windows" { Actions = "Toggle Skip Snap" }
	}
	SubMenu = "Send To" {
		# Create sendto menu once per pekwm config reload. The fast way that
		# will work for most if not all users.
		COMMAND = "/usr/local/share/pekwm/scripts/pekwm_ws_menu.sh send"
		# Create sendto menu every time the menu is opened. The slow way.
		# This is what you want if you are using external tools to make
		# the amount of workspaces something else than what you define in
		# ~/.pekwm/config. You will know if you want this.
		# Entry = "" { Actions = "Dynamic /usr/local/share/pekwm/scripts/pekwm_ws_menu.sh send dynamic" }
	}
	Separator {}
	Entry = "Close" { Actions = "Close" }
	Submenu = "Kill" { Entry = "Kill application" { Actions = "Kill" } }
}
$ cat ~/.pekwm/mouse
Code:
FrameTitle {
	ButtonRelease = "1" { Actions = "Raise; Focus; ActivateClient" }
	ButtonRelease = "Mod1 1" { Actions = "Focus; Raise" }
	ButtonRelease = "Mod4 1" { Actions = "Focus; Raise" }
	ButtonRelease = "2" { Actions = "ActivateClient" }
	ButtonRelease = "Mod4 3" { Actions = "Close" }
	ButtonRelease = "3" { Actions = "ShowMenu Window" }
	ButtonRelease = "4" { Actions = "ActivateClientRel 1" }
	ButtonRelease = "5" { Actions = "ActivateClientRel -1" }
	ButtonRelease = "Mod1 4" { Actions = "SendToWorkspace Next; GotoWorkspace Next" }
	ButtonRelease = "Mod1 5" { Actions = "SendToWorkspace Prev; GotoWorkspace Prev" }
	ButtonRelease = "Mod1 Shift 4" { Actions = "SendToWorkspace PrevV; GotoWorkspace PrevV" }
	ButtonRelease = "Mod1 Shift 5" { Actions = "SendToWorkspace NextV; GotoWorkspace NextV" }
	ButtonRelease = "Ctrl 4" { Actions = "MoveClientRel 1" }
	ButtonRelease = "Ctrl 5" { Actions = "MoveClientRel -1" }
	ButtonRelease = "Ctrl Mod1 1" { Actions = "Focus; Raise True" }
	DoubleClick = "2" { Actions = "Toggle Shaded" }
	DoubleClick = "Mod1 2" { Actions = "Toggle Shaded" }
	DoubleClick = "1" { Actions = "MaxFill True True" }
	DoubleClick = "Mod1 1" { Actions = "Toggle Maximized True True" }
	Motion = "1" { Threshold = "4"; Actions = "Raise; Move" }
	Motion = "Mod1 1" { Threshold = "4"; Actions = "Raise; Move" }
	Motion = "Mod4 1" { Threshold = "4"; Actions = "Raise; Move" }
	Motion = "2" { Threshold = "4"; Actions = "GroupingDrag True" }
	Motion = "Mod1 3" { Actions = "Resize" }
	# Remove the following line if you want to use click to focus.
	Enter = "Any Any" { Actions = "Focus" }
}

OtherTitle {
	ButtonRelease = "1" { Actions = "Raise; Focus" }
	ButtonRelease = "2" { Actions = "Focus" }
	ButtonRelease = "3" { Actions = "Close" }
	ButtonRelease = "Mod4 3" { Actions = "ShowMenu Window" }
	ButtonRelease = "Mod1 4" { Actions = "SendToWorkspace Next; GotoWorkspace Next" }
	ButtonRelease = "Mod1 5" { Actions = "SendToWorkspace Prev; GotoWorkspace Prev" }
	ButtonRelease = "Mod1 Shift 4" { Actions = "SendToWorkspace PrevV; GotoWorkspace PrevV" }
	ButtonRelease = "Mod1 Shift 5" { Actions = "SendToWorkspace NextV; GotoWorkspace NextV" }
	Motion = "1" { Threshold = "4"; Actions = "Raise; Move" }
	Motion = "Mod1 1" { Threshold = "4"; Actions = "Raise; Move" }
	Motion = "Mod4 1" { Threshold = "4"; Actions = "Raise; Move" }
	# Remove the following line if you want to use click to focus.
	Enter = "Any Any" { Actions = "Focus" }
}

Border {
	TopLeft {
		# Remove the following line if you want to use click to focus.
		Enter = "Any Any" { Actions = "Focus" }
		ButtonPress = "1" { Actions = "Focus; Resize TopLeft" } }
	Top {
		# Remove the following line if you want to use click to focus.
		Enter = "Any Any" { Actions = "Focus" }
		ButtonPress = "1" { Actions = "Focus; Resize Top" } }
	TopRight {
		# Remove the following line if you want to use click to focus.
		Enter = "Any Any" { Actions = "Focus" }
		ButtonPress = "1" { Actions = "Focus; Resize TopRight" } }
	Left {
		# Remove the following line if you want to use click to focus.
		Enter = "Any Any" { Actions = "Focus" }
		ButtonPress = "1" { Actions = "Focus; Resize Left" } }
	Right {
		# Remove the following line if you want to use click to focus.
		Enter = "Any Any" { Actions = "Focus" }
		ButtonPress = "1" { Actions = "Focus; Resize Right" } }
	BottomLeft {
		# Remove the following line if you want to use click to focus.
		Enter = "Any Any" { Actions = "Focus" }
		ButtonPress = "1" { Actions = "Focus; Resize BottomLeft" } }
	Bottom {
		# Remove the following line if you want to use click to focus.
		Enter = "Any Any" { Actions = "Focus" }
		ButtonPress = "1" { Actions = "Focus; Resize Bottom" } }
	BottomRight {
		# Remove the following line if you want to use click to focus.
		Enter = "Any Any" { Actions = "Focus" }
		ButtonPress = "1" { Actions = "Focus; Resize BottomRight" } }
}

ScreenEdge {
	Down {
		Enter = "Mod1 Any" { Actions = "GoToWorkspace Down" }
		ButtonRelease = "3" { Actions = "ShowMenu Root" }
		ButtonRelease = "2" { Actions = "ShowMenu Goto" }
		ButtonRelease = "1" { Actions = "GoToWorkspace Down" }
		ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" }
		ButtonRelease = "4" { Actions = "GoToWorkspace Up" }
		ButtonRelease = "5" { Actions = "GoToWorkspace Down" }
		ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace PrevV" }
		ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace NextV" }
		EnterMoving = "Any Any" { Actions = "WarpToWorkspace Down" }
	}
	Up {
		Enter = "Mod1 Any" { Actions = "GoToWorkspace Up" }
		ButtonRelease = "3" { Actions = "ShowMenu Root" }
		ButtonRelease = "2" { Actions = "ShowMenu Goto" }
		ButtonRelease = "1" { Actions = "GoToWorkspace Up" }
		ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" }
		ButtonRelease = "4" { Actions = "GoToWorkspace Up" }
		ButtonRelease = "5" { Actions = "GoToWorkspace Down" }
		ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace PrevV" }
		ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace NextV" }
		EnterMoving = "Any Any" { Actions = "WarpToWorkspace Up" }
	}
	Left {
		Enter = "Mod1 Any" { Actions = "GoToWorkspace Left" }
		ButtonRelease = "3" { Actions = "ShowMenu Root" }
		ButtonRelease = "1" { Actions = "GoToWorkspace Left" }
		DoubleClick = "1" { Actions = "GoToWorkspace Left" }
		ButtonRelease = "2" { Actions = "ShowMenu Goto" }
		ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" }
		ButtonRelease = "4" { Actions = "GoToWorkspace Right" }
		ButtonRelease = "5" { Actions = "GoToWorkspace Left" }
		ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace Next" }
		ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace Prev" }
		EnterMoving = "Any Any" { Actions = "WarpToWorkspace Left" }
	}
	Right {
		Enter = "Mod1 Any" { Actions = "GoToWorkspace Right" }
		ButtonRelease = "3" { Actions = "ShowMenu Root" }
		ButtonRelease = "1" { Actions = "GoToWorkspace Right" }
		DoubleClick = "1" { Actions = "GoToWorkspace Right" }
		ButtonRelease = "2" { Actions = "ShowMenu Goto" }
		ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" }
		ButtonRelease = "4" { Actions = "GoToWorkspace Right" }
		ButtonRelease = "5" { Actions = "GoToWorkspace Left" }
		ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace Next" }
		ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace Prev" }
		EnterMoving = "Any Any" { Actions = "WarpToWorkspace Right" }
	}
}

Client {
	# Remove the following line and uncomment the alternative if windows should raise when clicked.
	ButtonPress = "1" { Actions = "Focus" }
	# Uncomment the following line if windows should raise when clicked.
	# ButtonPress = "1" { Actions = "Focus; Raise" }

	ButtonRelease = "Mod1 1" { Actions = "Focus; Raise" }
	ButtonRelease = "Mod4 1" { Actions = "Lower" }
	ButtonRelease = "Mod1 4" { Actions = "SendToWorkspace Next; GotoWorkspace Next" }
	ButtonRelease = "Mod1 5" { Actions = "SendToWorkspace Prev; GotoWorkspace Prev" }
	ButtonRelease = "Mod1 Shift 4" { Actions = "SendToWorkspace PrevV; GotoWorkspace PrevV" }
	ButtonRelease = "Mod1 Shift 5" { Actions = "SendToWorkspace NextV; GotoWorkspace NextV" }
	ButtonRelease = "Ctrl Mod1 1" { Actions = "Focus; Raise True" }
	Motion = "Mod1 1" { Threshold = "4"; Actions = "Focus; Raise; Move" }
	Motion = "Mod4 1" { Threshold = "4"; Actions = "Focus; Raise; Move" }
	Motion = "Mod1 2" { Threshold = "4"; Actions = "GroupingDrag True" }
	Motion = "Mod1 3" { Actions = "Resize" }
	# Remove the following line if you want to use click to focus.
	Enter = "Any Any" { Actions = "Focus" }
}

Root {
	ButtonRelease = "3" { Actions = "ShowMenu Root" }
	ButtonRelease = "2" { Actions = "ShowMenu Goto" }
	ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" }
	# Horizontal movement
	ButtonRelease = "4" { Actions = "GoToWorkspace Right" }
	ButtonRelease = "5" { Actions = "GoToWorkspace Left" }
	ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace Next" }
	ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace Prev" }
	# Vertical movement
	ButtonRelease = "Shift 4" { Actions = "GoToWorkspace Up" }
	ButtonRelease = "Shift 5" { Actions = "GoToWorkspace Down" }
	ButtonRelease = "Mod1 Shift 4" { Actions = "GoToWorkspace NextV" }
	ButtonRelease = "Mod1 Shift 5" { Actions = "GoToWorkspace PrevV" }
	ButtonRelease = "1" { Actions = "HideAllMenus" }
}

Menu {
	Enter = "Any Any" { Actions = "Focus" }
	Motion = "Mod1 1" { Threshold = "4"; Actions = "Focus; Raise; Move" }
}

Other {
	Enter = "Any Any" { Actions = "Focus" }
	ButtonRelease = "3" { Actions = "Close" }
	Motion = "1" { Actions = "Focus; Raise; Move" }
	Motion = "Mod1 1" { Threshold = "4"; Actions = "Focus; Raise; Move" }
}
$ cat ~/.pekwm/config
Code:
Files {
    Keys = "~/.pekwm/keys"
    Mouse = "~/.pekwm/mouse"
    Menu = "~/.pekwm/menu"
    Start = "~/.pekwm/start"
    AutoProps = "~/.pekwm/autoproperties"
    Theme = "/usr/local/share/pekwm/themes/default"
    Icons = "~/.pekwm/icons/"
}

MoveResize {
    EdgeAttract = "10"
    EdgeResist = "10"
    WindowAttract = "5"
    WindowResist = "5"
    OpaqueMove = "True"
    OpaqueResize = "False"
}

Screen {
    Workspaces = "9"
    WorkspacesPerRow = "3"
    WorkspaceNames = "Main;Web;E-mail;Music;Work 05;Work 06;Work 07;Work 08;Work 09"
    ShowFrameList = "True"
    ShowStatusWindow = "True"
    ShowStatusWindowCenteredOnRoot = "False"
    ShowClientID = "False"
    ShowWorkspaceIndicator = "500"
    PlaceNew = "True"
    FocusNew = "True"

    TrimTitle = "..."
    FullscreenAbove = "True"
    FullscreenDetect = "True"
    HonourRandr = "True"
    HonourAspectRatio = "True"
    EdgeSize = "1 1 1 1"
    EdgeIndent = "False"
    PixmapCacheSize = "20"
    DoubleClickTime = "250"

    Placement {
        Model = "CenteredOnParent Smart MouseNotUnder"
        Smart {
            Row = "True"
            TopToBottom = "True"
            LeftToRight = "True"
            OffsetX = "0"
            OffsetY = "0"
        }
    }

    UniqueNames  {
        SetUnique = "False"
        Pre = " #"
        Post = ""
    }
}

Menu {
    DisplayIcons = "True"

    Icons = "DEFAULT" {
        Minimum = "16x16"
        Maximum = "16x16"
    }

    # To enable make separate window have other icon size restrictions,
    # for example wallpaper menu found in pekwm_menu_tools, set the following
    # for each menu you want to "free".

    # Icons = "Wallpaper" {
    #     Minimum = "64x64"
    #     Maximum = "64x64"
    # }

    # Defines how menus act on mouse input.
    # Possible values are: "ButtonPress ButtonRelease DoubleClick Motion"
    # To make submenus open on mouse over, comment the default Enter,
    # uncomment the alternative, and reload pekwm.
    
    Select = "Motion MotionPressed"
    Enter = "MotionPressed ButtonPress"
    # Enter = "Motion"
    Exec = "ButtonRelease"
}

CmdDialog {
    HistoryUnique = "True"
    HistorySize = "1024"
    HistoryFile = "~/.pekwm/history"
    HistorySaveInterval = "16"
}

Harbour {
    OnTop = "True"
    MaximizeOver = "False"
    Placement = "Right"
    Orientation = "TopToBottom"
    Head = "0"

    DockApp {
        SideMin = "64"
        SideMax = "0"
    }
}
..
Reply With Quote