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"
}
}
..