Kahakai


SUBMITTED BY: Guest

DATE: June 2, 2014, 2:16 p.m.

FORMAT: Text only

SIZE: 29.1 kB

HITS: 5895

  1. NAME
  2. Kahakai - an X11 window manager with multi-language embedded scripting
  3. SYNOPSIS
  4. kahakai [--display DISPLAYNAME] [--rcfile CONFIGFILE] [--stylefile STYLEFILE] [--menufile MENUFILE] [--usage] [--help] [--version]
  5. DESCRIPTION
  6. Kahakai is a fork of the Waimea window manager, with the goal of allowing as much internal customization as possible. Kahakai uses SWIG to provide wrappers that allow high-level scripting languages to access the internals of the core of the window manager, which is written in C++.
  7. OPTIONS
  8. --display DISPLAYNAME
  9. X server to contact
  10. --rcfile CONFIGFILE
  11. Use the alternate CONFIGFILE instead of ~/.kahakai/config and /usr/share/kahakai/config.
  12. --stylefile STYLEFILE
  13. Use the alternate STYLEFILE instead of /usr/share/kahakai/styles/Default. This overrides styleFile resource.
  14. --menufile MENUFILE
  15. Use the alternate MENUFILE instead of /usr/share/kahakai/menu This overrides menuFile resource.
  16. --usage
  17. Display brief usage message
  18. --help
  19. Show full help message
  20. --version
  21. Output version information and exit
  22. CONFIG FILE
  23. When starting, Kahakai looks for a .kahakai/config resource file in the users home directory. If file doesn't exist, Kahakai falls back to /usr/share/kahakai/config, the system wide configuration file. To force Kahakai to read a different configuration file use --rcfile switch. Below is a list of configuration options that Kahakai understands.
  24. screenMask: List of screen numbers
  25. Whitespace separated list of screens that Kahakai should manage. If you for example want Kahakai to handle only screen .0 and screen .2, then list of screen numbers should be: 0 2
  26. scriptDir: Dirpath
  27. Path to alternate scripts directory instead of /usr/share/kahakai/scripts. scriptDir is used execution of dynamic menu scripts.
  28. doubleClickInterval: Integer
  29. Adjust the delay (in milliseconds) between mouse clicks for Kahakai to consider it a double click. Default value is 300.
  30. When running Kahakai on display with multiple screens the screen0 key in the following configuration options can also be screen1, 2 etc. for any appropriate screen.
  31. screen0.styleFile: Filepath
  32. Path to alternate STYLEFILE instead of /usr/share/kahakai/styles/Default.
  33. screen0.menuFile: Filepath
  34. Path to alternate MENUFILE instead of /usr/share/kahakai/menu.
  35. screen0.numberOfDesktops: Integer
  36. This tells Kahakai how many virtual desktops we should use. Default value is 4.
  37. screen0.desktopNames: List of desktop names
  38. A comma separated list of desktop names.
  39. screen0.doubleBufferedText: Boolean
  40. Tells Kahakai to use double buffered text drawing method. Removes text flickering and requires far less text redrawing. Faster in most cases. But be aware, then using flat solid textures one double buffered text redraw is more expensive than one single buffered one. Default value is True.
  41. screen0.lazyTransparency: Boolean
  42. Tells Kahakai to use lazy redrawing of transparent textures. When enabled, Kahakai only redraws transparent textures at end of move functions. Default value is False.
  43. screen0.colorsPerChannel: Integer
  44. This tells Kahakai how many colors to take from the X server on pseudocolor displays. A channel would be red, green, or blue. Kahakai will allocate this variable ^ 3 colors and make them always available. Value must be between 2 and 6. When you run Kahakai on an 8-bit display, you must set this resource to 4. Default value is 4.
  45. screen0.cacheMax: Integer
  46. This tells Kahakai how much memory (in KB) it may use to store cached pixmaps on the X server. If your machine runs short of memory, you may lower this value. Default value is 200.
  47. screen0.imageDither: Boolean
  48. Tells Kahakai to dither images on none TrueColor screens. Default value is True.
  49. screen0.virtualSize: IntegerxInteger
  50. Tells Kahakai what virtual desktop size to use. Example: 3x3 will set the virtual desktop size to three times screen height in virtual height and three times screen width in virtual width. Default value is 3x3.
  51. screen0.menuStacking: StackingType
  52. Tells Kahakai what stacking type to use for menus. Can be one of: AlwaysOnTop, AlwaysAtBottom or Normal. Default type is Normal.
  53. screen0.transientAbove: Bool
  54. Tells Kahakai to use special handling of transient windows. When turned on Kahakai will always keep transient windows above and focused relative to the the 'transient for' window. Default value is True.
  55. screen0.focusRevertTo: RevertType
  56. Specifies where the input focus reverts to if a window or menu becomes not viewable. RevertType can be one of Root or Window. When set to Root, Kahakai will revert focus to the root window. When set to Window, Kahakai will revert focus to the last focused window that is viewable. Default value is Window.
  57. Dockappholder Resources
  58. It is possible to have more than one dockappholder running. First dockappholder should be named dock0 and the second dock1 and so on. One dockappholder is always running whether you have a dock0 line in your CONFIGFILE or not.
  59. screen0.dock[num].geometry: OffsetString
  60. Define dockappholder position. OffsetString must be an X offset string of form: [{+-}<xoffset>{+-}<yoffset>]
  61. screen0.dock[num].order: Regular Expression List
  62. A whitespace separated list of regular expressions describing how to order the dockapps in the dockappholder. Dockapps can be ordered by window name, window class and window title. For window name use n/Regexp/ , `Regexp' being the POSIX regular expression used for window name matching. For window class use c/Regexp/ , `Regexp' being the POSIX regular expression used for window class matching. For window title use t/Regexp/ , `Regexp' being the POSIX regular expression used for window title matching.
  63. Example:
  64. screen0.dock0.order: n/.*meter$/ c/pager/
  65. This will put dockapp window with name ending with `meter' at the first position in dockappholder and dockapp with classname containing `pager' at second position. All dockapp windows that doesn't match any regular expression will be put in last dockapp at last position.
  66. screen0.dock[num].desktopMask: Desktop number list
  67. A whitespace separated list of desktop numbers. Dockappholder will only appear in desktops specified by this list. To make dockappholder appear in all desktops, replace list with the string `All'. Default is All
  68. screen0.dock[num].direction: Direction
  69. Dockappholder direction {Vertical, Horizontal}
  70. screen0.dock[num].centered: Boolean
  71. True if you want the dockappholder to be centered. If direction is Vertical, yoffset from geometry resource will be ignored and dockappholder will be centered vertically. If direction is Horizontal, xoffset from geometry resource will be ignored and dockappholder will be centered horizontally.
  72. screen0.dock[num].gridSpace: Integer
  73. Number of pixels spacing between dockapps in dockappholder.
  74. screen0.dock[num].stacking: StackingType
  75. Stacking order for dockappholder {AlwaysOnTop, AlwaysAtBottom}.
  76. screen0.dock[num].inworkspace: Boolean
  77. True if you don't wont dockappholder to alter the workarea. Maximizied windows will be maximized over the dockappholder when this is set to true. Default is False.
  78. STYLES
  79. Kahakai enables you to use Blackbox specialized style files that contain X(7) resources to specify colors, textures and fonts, and thus the overall look of your window decorations and menus. However there are a few keys in Blackbox styles that Kahakai doesn't use and there are a few new keys that don't exist in standard Blackbox styles.
  80. Kahakai allows you to configure the style of menus and the windows. Dockappholders use the same style as the windows.
  81. Here are the different types of values:
  82. Color
  83. A valid X resource-style color name, e.g. `green', or `wheat'.
  84. Font
  85. XLFD (X core font) or Xft font name. Xft font names must be followed by [xft] suffix.
  86. e.g.:
  87. -adobe-courier-medium-r-normal--10-100-75-75-m-60-iso8859-1
  88. The format for Xft font names is:
  89. <family>-<size>:<name>=<value> [xft]
  90. An arbitrary set of additional elements can be appended to the Xft font name, the complete list of possible properties is:
  91. Name Type
  92. ---------------------------------
  93. family String
  94. style String
  95. slant Int
  96. weight Int
  97. size Double
  98. aspect Double (only in Xft2)
  99. pixelsize Double
  100. encoding String (only in Xft1)
  101. spacing Int
  102. foundry String
  103. core Bool (only in Xft1)
  104. antialias Bool
  105. xlfd String (only in Xft1)
  106. file String
  107. index Int
  108. rasterizer String
  109. outline Bool
  110. scalable Bool
  111. rgba Int
  112. (Defaults from resources)
  113. scale Double
  114. render Bool (only in Xft1)
  115. minspace Bool
  116. (Specific to FreeType rasterizer)
  117. charwidth Int
  118. charheight Int
  119. matrix XftMatrix
  120. charset CharSet (only in Xft2)
  121. lang String (only in Xft2)
  122. As family and size are both nearly always needed to access a Xft font, they're given a privileged place, but really they're no different than the remaining values. For elements that use an enumerated list of possible values, the values are given names which can be used in place of an integer, or can actually replace the whole name=value part. They're all unique, so this actually works. Here's a list of all of the enumerated values and the associated name:
  123. Value Element
  124. ---------------------------------
  125. light weight
  126. medium weight
  127. demibold weight
  128. bold weight
  129. black weight
  130. roman slant
  131. italic slant
  132. oblique slant
  133. proportional spacing
  134. mono spacing
  135. charcell spacing
  136. rgb rgba
  137. bgr rgba
  138. vrgb rgba
  139. vbgr rgba
  140. Some example Xft font names:
  141. times-12 [xft]
  142. 12 point times
  143. times,charter-12:bold [xft]
  144. 12 point, preferring 'times', but accepting 'charter', bold.
  145. times-12:bold:slant=italic,oblique [xft]
  146. 12 point times bold, either italic or oblique
  147. times-12:rgba=vbgr [xft]
  148. 12 point times, optimized for display on an LCD screen with sub-pixel elements arranged vertically with blue on the top and red on the bottom.
  149. times:pixelsize=100 [xft]
  150. 100 pixel times -- pixel size overrides any point size
  151. Xft opacity level
  152. Xft font opacity level. Integer value from 0 to 100, where 0 is the default non translucent opacity level and and 100 makes it a fully transparent font.
  153. Font justification
  154. Is one of left, right or center. e.g.: 'left'.
  155. Texture descriptions
  156. Texture descriptions are specified directly to the key that they should apply to, e.g.:
  157. window.label: Raised Gradient Diagonal Bevel1
  158. A texture description consists of up to five fields, which are as follows:
  159. Flat / Raised / Sunken
  160. gives the component either a flat, raised or sunken appearance.
  161. Gradient / Solid / Pixmap
  162. tells Kahakai to draw either a solid color or a gradiented texture.
  163. Horizontal / Vertical / Diagonal / Crossdiagonal / Pipecross / Elliptic / Rectangle / Pyramid
  164. Select one of these texture types. They only work when also Gradient is specified!
  165. Tiled / Scaled / Stretched
  166. Select one of these resizing methods. They only work when also Pixmap is specified!. Tiled resizing does not resize the image just tiles it, fastest method. Scaled resizing performs a normal scaling of image, all parts of the image are scaled equally. Stretched resizing only scales the middle part of the image, all borders are preserved.
  167. Interlaced
  168. tells Kahakai to interlace the texture (darken every other line). This option is most commonly used with gradiented textures, but it also works in solid textures.
  169. Bevel1 / Bevel2
  170. tells Kahakai which type of bevel to use. Bevel1 is the default bevel. The shading is placed on the edge of the image. Bevel2 is an alternative. The shading is placed one pixel in from the edge of the image.
  171. Instead of a texture description, also the option ParentRelative is available, which makes the component appear as a part of its parent, totally transparant.
  172. All gradiented textures are composed of two color values: the color and colorTo resources. When Interlaced is used in Solid mode, the colorTo resource is used to find the interlacing color.
  173. A image file must be specified for all pixmap textures. pixmap resources is used for finding the image file. Must be either a complete file path, a file path relative to Kahakai start directory or an image file in the same directory as the style file.
  174. Texture opacity level
  175. Texture opacity level. Integer value from 0 to 100, where 0 is the default non translucent opacity level and and 100 makes it a fully transparent texture. This requires that the program setting the background image has support for setting _XROOTPMAP_ID property on root window. Esetroot does this. Opacity works for all types of textures even pixmaps.
  176. Pixmap stretching borders
  177. Borders used for pixmap stretching. Format is:
  178. { LEFT, RIGHT, TOP, BOTTOM }
  179. LEFT being the width of left border, RIGHT being the width of right border, TOP being the height of top border and BOTTOM being the height of bottom border. Only graphics not within any of the borders will be scaled when stretching pixmap.
  180. Here are the keys Kahakai understands together with the value they should contain.
  181. Window Keys
  182. Controls the look of the window decorations. The '*' in the window keys can be one of: title, label, handle, button or grip.
  183. window.*.focus: Texture description
  184. window.*.focus.opacity: Texture opacity level
  185. window.*.focus.color: Color
  186. window.*.focus.colorTo: Color
  187. window.*.focus.pixmap: Pixmap
  188. window.*.focus.border: Border
  189. Texture type, opacity level, colors and pixmap used for focused window textures.
  190. window.*.unfocus: Texture description
  191. window.*.unfocus.opacity: Texture opacity level
  192. window.*.unfocus.color: Color
  193. window.*.unfocus.colorTo: Color
  194. window.*.unfocus.pixmap: Pixmap
  195. window.*.unfocus.border: Border
  196. Texture type, opacity level and colors used for unfocused window textures.
  197. window.label.focus.textColor: Color
  198. window.label.focus.textColor.opacity: Xft opacity level
  199. window.label.focus.textShadowColor: Color
  200. window.label.focus.textShadowColor.opacity: Xft opacity level
  201. Color and opacity level used for focused window label font.
  202. window.label.focus.textShadowXOffset: Integer
  203. window.label.focus.textShadowYOffset: Integer
  204. X and Y shadow offset for focused window label. If neither XOffset or YOffset are specified or both are zero no shadow will be rendered.
  205. window.label.unfocus.textColor: Color
  206. window.label.unfocus.textColor.opacity: Xft opacity level
  207. window.label.unfocus.textShadowColor: Color
  208. window.label.unfocus.textShadowColor.opacity: Xft opacity level
  209. Color and opacity level used for unfocused window label font.
  210. window.label.unfocus.textShadowXOffset: Integer
  211. window.label.unfocus.textShadowYOffset: Integer
  212. X and Y shadow offset for unfocused window label. If neither XOffset or YOffset are specified or both are zero no shadow will be rendered.
  213. window.button.focus.picColor: Color
  214. Color used for focused window button symbols.
  215. window.button.unfocus.picColor: Color
  216. Color used for unfocused window button symbols.
  217. window.button.pressed.picColor: Color
  218. Color used for pressed button symbols.
  219. window.justify: Font justification
  220. Font justification for window labels.
  221. window.font: Font
  222. Font for window titles.
  223. borderWidth: Integer
  224. Integer value for window border width.
  225. borderColor: Color
  226. Color of window border.
  227. outlineColor: Color
  228. Color of window outline used for non-opaque moving and resizing.
  229. window.title.height: Integer
  230. Integer value for forced titlebar height. If key isn't defined the title height is set by the height of the font.
  231. Menu Keys
  232. Controls the look of the menus. The '*' in the menu keys can be one of: title, frame or hilite.
  233. menu.*: Texture description
  234. menu.*.opacity: Texture opacity level
  235. menu.*.color: Color
  236. menu.*.colorTo: Color
  237. menu.*.pixmap: Pixmap
  238. menu.*.border: Border
  239. Texture type, opacity level and colors used for menu textures.
  240. menu.*.textColor: Color
  241. menu.*.textColor.opacity: Xft opacity level
  242. menu.*.textShadowColor: Color
  243. menu.*.textShadowColor.opacity: Xft opacity level
  244. Color and opacity level used for menu fonts.
  245. menu.*.textShadowXOffset: Integer
  246. menu.*.textShadowYOffset: Integer
  247. X and Y shadow offset for menu item. If neither XOffset or YOffset are specified or both are zero no shadow will be rendered.
  248. menu.*.justify: Font justification
  249. Font justification for menu items.
  250. menu.*.font: Font
  251. Font for menu items.
  252. menu.bullet.look: String or 'char'
  253. String or character code used for menu bullets.
  254. menu.checkbox.true.look: String or 'char'
  255. String or character code used for true checkboxes.
  256. menu.checkbox.false.look: String or 'char'
  257. String or character code used for false checkboxes.
  258. menu.borderWidth: Integer
  259. Integer value for menu border width.
  260. menu.item.height: Integer
  261. Integer value for forced menu frame item height. If key isn't defined the frame menu item height is set by the height of the font.
  262. menu.title.height: Integer
  263. Integer value for forced menu title item height. If key isn't defined the frame menu title height is set by the height of the font.
  264. Dockappholder Keys
  265. Controls the look of the dockappholders. A different texture can be assigned to each dockappholder. '[ID]' should be replaced by a dockappholder ID number. A dockappholder ID is >=0 and depends on the dockappholder configuration in the rc-file.
  266. dockappholder.dock[ID].frame: Texture description
  267. dockappholder.dock[ID].frame.opacity: Opacity level
  268. dockappholder.dock[ID].frame.color: Color
  269. dockappholder.dock[ID].frame.colorTo: Color
  270. dockappholder.dock[ID].frame.pixmap: Pixmap
  271. dockappholder.dock[ID].frame.border: Border
  272. Texture type, opacity level and colors used for dockappholder 'dock[ID]'s frame texture.
  273. dockappholder.dock[ID].borderWidth: Integer
  274. Border width used for dockappholder 'dock[ID]'s border.
  275. dockappholder.dock[ID].borderColor: Color
  276. Border color used for dockappholder 'dock[ID]'s border.
  277. Button Keys
  278. Controls the look of the titlebar buttons. For backwards compatibility with blackbox styles Kahakai still understands the above mentioned window.button.* key, but Kahakai have a much more advanced configuration system for titlebar buttons. The Kahakai titlebar configuration system allows you to have any number of titlebar buttons and the position and look for each button can be specified.
  279. A titlebar button works just like a checkbox. It has two states, a 'false' state and a 'true' state. Which state the button is in depends on a variable and the look of each of these states can be specified. The '[ID]' must be a number >= 0. For Kahakai to read button configuration with an ID of 2, there must be a configuration with an ID of 0 and an ID of 1, this is because Kahakai stops reading button configurations when it comes to missing ID.
  280. window.button[ID].foreground: Boolean
  281. True if you want Kahakai to draw its standard foreground graphics on the button. Graphics drawn depends on the buttons state configuration.
  282. window.button[ID].state: Checkbox State
  283. This specifies what variable the button should monitor for its state. Can be one of these:
  284. MAXIMIZED
  285. MINIMIZED
  286. SHADED
  287. STICKY
  288. ALWAYSONTOP
  289. ALWAYSATBOTTOM
  290. DECORTITLE
  291. DECORHANDLE
  292. DECORBORDER
  293. DECORALL
  294. FULLSCREEN
  295. CLOSE
  296. None
  297. When set to None, titlebar button will only have one state (false state). Default is None.
  298. window.button[ID].autoplace: Autoplace Type
  299. This specifies the autoplace type for the button. Can be one of Left, Right or False. Left will automatically place the button on the left side of the titlebar so that it doesn't cover any other button and Right will automatically place the button on the right side. No automatic placement will be used when set to False. Default is False.
  300. window.button[ID].position: Offset
  301. X coordinate for button. If offset is positive, then the left side of the titlebar will be used as X coordinate zero. If offset is negative, then the right side of the titlebar will be used as X coordinate zero. 'position' resource will be ignored if not 'autoplace' resource is set to False.
  302. window.button[ID].[STATE].focus: Texture description
  303. window.button[ID].[STATE].focus.opacity: Opacity level
  304. window.button[ID].[STATE].focus.color: Color
  305. window.button[ID].[STATE].focus.colorTo: Color
  306. window.button[ID].[STATE].focus.pixmap: Pixmap
  307. window.button[ID].[STATE].focus.border: Border
  308. window.button[ID].[STATE].unfocus: Texture description
  309. window.button[ID].[STATE].unfocus.opacity: Opacity level
  310. window.button[ID].[STATE].unfocus.color: Color
  311. window.button[ID].[STATE].unfocus.colorTo: Color
  312. window.button[ID].[STATE].focus.border: Border
  313. window.button[ID].[STATE].unfocus.pixmap: Pixmap
  314. window.button[ID].[STATE].pressed: Texture description
  315. window.button[ID].[STATE].pressed.opacity: Opacity level
  316. window.button[ID].[STATE].pressed.color: Color
  317. window.button[ID].[STATE].pressed.colorTo: Color
  318. window.button[ID].[STATE].pressed.pixmap: Pixmap
  319. window.button[ID].[STATE].pressed.border: Border
  320. Texture type, opacity level and colors used for titlebar button[ID]. [STATE] can be 'false' or 'true'. If button have more than one state then both 'false' and 'true' state textures should be specified. If button have only one state then only 'false' state needs to be specified.
  321. rootCommand: Command line
  322. This command is executed whenever this style is loaded. Typically it sets the root window to a nice picture.
  323. Default style file is /usr/share/kahakai/styles/Default. You can study or edit this style to grasp how the style mechanism works.
  324. MENUS
  325. All menus must be defined in the menu file.
  326. A menu definition starts with a [start] tag and ends with an [end] tag. Between the [start] and the [end] tag a number of [item], [title], [sub] and [checkbox] tags should be placed. The looks and action lists are the only things separating the first three menu item types. All three of these tags could be followed by a (string), "string", {string} and <string>. A [checkbox] tag is basically an [item] tag with two states.
  327. Kahakai menu system is compatible with blackbox(1) menu system, so higher level tags as [begin], [exec], [submenu], [nop], [restart] and [exit] are supported. blackbox(1) also supports [styledir], [reconfig] and [config] tags, these tags are not used by Kahakai.
  328. () = menu item title
  329. "" = action
  330. {} = command line
  331. <> = sub menu
  332. e.g.:
  333. [start] (menu)
  334. [title] (Menu)
  335. [item] (Xterm) {xterm}
  336. [sub] (Programs) <progs>
  337. [item] (Restart) "restart"
  338. [item] (Exit) "exit"
  339. [end]
  340. It is possible to start defining a new menu within another menu. e.g.:
  341. [start] (menu)
  342. [start] (menu2)
  343. [item] (not smart) {rm -rf ~}
  344. [end]
  345. [sub] <menu2>
  346. [end]
  347. [include] tags can be used anywhere in a menu file to include the contains of another file. e.g.:
  348. [include] (/home/user/.waimea/rootmenu)
  349. Environment Variables And Window Info Expansion
  350. Menu item titles include filenames and submenu references can contain environment variables. e.g.:
  351. [item] (Logout $USER) "exit"
  352. $USER will be replaced with USER environment variable.
  353. Menu mapped by event occurring on a window.* window can contain special window info character sequences. These character sequences are expanded with the current window info when menu is mapped. e.g.:
  354. [item] (win name: \n)
  355. Will be expanded to:
  356. [item] (win name: windowname)
  357. Where windowname is the actual class name of the window.
  358. These are the character sequences that Kahakai recognizes:
  359. "\c" Window class
  360. "\n" Window class name
  361. "\h" Host name for window owner
  362. "\p" PID of window owner
  363. If some window info isn't known for a window, the character sequence used for expanding this info will be replaced with an empty string.
  364. All special characters need to be escaped (with a `\') to protect them from expansion. Special characters are:
  365. ( ) { } < > [ ] " $
  366. Checkboxes
  367. A checkbox item is a item that have two states and a flag decides which state the item is in. e.g.:
  368. [checkbox=STICKY] @FALSE (Sticky) "sticky" @TRUE (Sticky) "unsticky"
  369. Flag to decide which mode to be in for this checkbox is STICKY (the sticky flag for a window). If STICKY flag is 'False' the checkbox item will be in mode defined by menu string after @FALSE and if STICKY flag is 'True' the checkbox item will be in mode defined by the menu string after @TRUE.
  370. Here is the list of flags that can be used with checkbox items:
  371. MAXIMIZED
  372. MINIMIZED
  373. SHADED
  374. STICKY
  375. ALWAYSONTOP
  376. ALWAYSATBOTTOM
  377. DECORTITLE
  378. DECORHANDLE
  379. DECORBORDER
  380. FULLSCREEN
  381. Taskswitcher
  382. Predefined menu named "__windowlist__" can be used in menu file and scripts to access the taskswitcher menu.
  383. Window merging
  384. Predefined menus named "__mergelist__", "__mergelist_vertically__" and "__mergelist_horizontally__" can be used in menu file and scripts to access window merging menus.
  385. Dynamic menus
  386. Kahakai supports dynamic menus. A Dynamic menu is a menu that is generated when mapped. Compared to a normal static menu that must be fully defined in the MENUFILE the definition of a dynamic menu only consists of a command line. The command line is executed when the menu is to be mapped and the standard output from the command is parsed in the same way as the MENUFILE to generate the dynamic menu. Every time the menu is remapped the command line is executed and a new menu is generated. A dynamic menu is defined as a submenu link in the MENUFILE or as a menu_name parameter to one of the menumap actions. A dynamic menu definition must start with a '!' character and be followed by a command line. e.g.:
  387. [sub] (Styles) <!styledir.pl>
  388. Creates a submenu item with title 'Styles' and the submenu for the item is dynamic menu created by execution of styledir.pl script. Dynamic menus can contain definitions of other dynamic menus.
  389. Default menu file is /usr/share/kahakai/menu. You can study or edit this menu file to grasp how the menu system works.
  390. ENVIRONMENT
  391. HOME
  392. Kahakai uses this variable to find its .kahakai directory.
  393. DISPLAY
  394. When no other display was given on the command line, Kahakai will start on the display specified by this variable.
  395. FILES
  396. ~/.kahakai/config
  397. User configuration file. See CONFIG FILE section for further details.
  398. /usr/share/kahakai/config
  399. The system wide configuration file. See CONFIG FILE section for further details.
  400. /usr/share/kahakai/style/Default.style
  401. The system wide style file. See STYLES section for further details.
  402. /usr/share/kahakai/menu
  403. The system wide menu file. See MENUS section for further details.

comments powered by Disqus