ICEWM-PROGRAMS(5)

πŸ’… NAME πŸ’…

okay so bestie, welcome to icewm-programs β€” the icewm programs configuration file ✨ it's the whole vibe of your menu, fr.


🫢 SYNOPSIS 🫢

$ICEWM_PRIVCFG/programs
$XDG_CONFIG_HOME/icewm/programs
$HOME/.icewm/programs
/usr/etc/icewm/programs
/usr/share/icewm/programs

like, those are the places it lives. noted πŸ‘‘


🌸 DESCRIPTION 🌸

so the programs file is an automatically generated menu configuration file full of your installed programs. key word: automatically. you're not supposed to hand-craft this bad boy β€” it "should be automatically generated" by xdg_menu, wmconfig (that's the Redhat one), menu (the Debian one), or icewm-menu-fdo, probably as part of your login or X startup sequence. it's giving "set it and forget it" energy πŸ’…


πŸŽ€ FORMAT πŸŽ€

the format of the file contains one of the following line syntaxes, and honestly they're all slay in their own way:

  • prog "title" icon program options β€” specifies a program to execute when the menu item is selected. the classic. the moment. ✨
  • restart "title" icon program options β€” specifies a program to replace the window manager when the menu item is selected. this one's for launching other window managers from within icewm(1), so like, main character energy but make it a hostile takeover 🫢
  • runonce "title" icon "[name][.class]" program options β€” specifies a program to execute when the menu item is selected; however β€” and this is the whole point bestie β€” if a window of the specified name and class is present, the program will not be run again. no double-launching. we don't do that here πŸ’€
  • menu "title" icon { # contained items } β€” specifies a sub-menu. the lines that appear between the braces can be any menu item described here. nesting! iconic! πŸ¦‹
  • menufile "title" icon "filename" β€” specifies a file from which to collect sub-menu items (lines) and place them at this point in the menu πŸ“„
  • menuprog "title" icon program options β€” specifies a program that will print sub-menu items on standard output, and they'll be collected and placed in the sub-menu at this point πŸ”₯
  • menuprogreload "title" icon timeout program options β€” similar to menuprog, but after at least timeout seconds the menu is regenerated. it refreshes itself, we love a self-care queen πŸ§–
  • include "filename" β€” read additional entries from the file filename
  • includeprog program options β€” read additional entries from the output of program options
  • separator β€” a separator for menu items. a little line. a lil breather. the pause before the drop πŸ’…

✨ Where ✨

let's break down the pieces, because vocabulary check is important:

  • prog, restart, runonce, menu, menufile, menuprog, menuprogreload, include, includeprog, separator β€” these are literal string keywords. type them exactly, no cap πŸ‘‘
  • "title" β€” this is the title string associated with the menu item that is displayed in the menu. when the title contains spaces, the title must be surrounded by double quotes ("""). yes the manpage really does style it like that. we don't question the ancestors πŸ™ˆ
  • icon β€” is the name of the icon file (with or without extension) or the full path to an icon file πŸŽ€
  • "[name][.class]" β€” name is the resource name of a window launched by program, and class is the resource class of the window. only one of name or class need be specified. this is used to determine whether the program is already running. it is used with the runonce keyword. iykyk πŸ¦‹
  • program options β€” program is the name of the executable or full path to the executable file that will be run in response to selecting the menu item. when used with the menuprog keyword, the program must print on standard output the contents of the menu, and is used for dynamic menus. options is the options and arguments passed to the program verbatim β€” no editing, no "fixing", just vibes passed straight through 🌈
  • filename β€” filename is the name of the file relative to one of the icewm(1) configuration directories, or the full path to a file. the file is used with the menufile keyword and specifies the file from which to read further menu items πŸ“

πŸ“ EXAMPLES πŸ“

following is the example programs file that ships with icewm(1) β€” and bestie, it is literally a time capsule. look at these icons. look at tuxracer. we stan a retro moment 😭

# This file is intended to be customized by the distributions.
# (they should place it in /etc/X11/icewm)
#
# mostly obsolete, fixme
menu Editors folder {
    prog vim vim gvim
    prog emacs emacs emacs
    prog Lyx emacs lyx
}
menu "WWW" folder {
    prog Galeon galeon galeon
    prog Arena arena arena
    prog Lynx lynx xterm -e lynx
    prog Links lynx xterm -e links
}
menu "Document Viewers" folder {
    prog "DVI Previewer" xdvi xdvi
    prog "Ghostview" ghostview gv
}
menu Graphics folder {
    prog Gimp gimp gimp
    prog XV xv xv
    prog XPaint xpaint xpaint
    prog XFig xfig xfig
}
menu Games folder {
    prog Xboard xboard xboard
    prog "Tux Racer" tuxracer tuxracer
}
menu System folder {
    prog "Control Panel" redhat control-panel
}
menu Utilities folder {
    prog XPlayCD xplaycd xplaycd
    prog XMixer xmixer xmixer
    prog Clock xclock xclock
    prog Magnify xmag xmag
    prog Calculator xcalc xcalc
    prog Colormap xcolormap xcmap
    prog Clipboard xclipboard xclipboard
    prog xkill bomb xkill
    prog xload xload xload
    prog xosview xosview xosview
    separator
    prog "Screen Saver" xlock xlock -nolock
    prog "Screen Lock" xlock xlock
}
menu "Window Managers" folder {
    restart icewm - icewm
    restart metacity - metacity
    restart wmaker - wmaker
    restart fluxbox - fluxbox
    restart blackbox - blackbox
    restart enlightenment - enlightenment
    restart fvwm2 - fvwm2
    restart fvwm - fvwm
    restart sawfish - sawfish
    restart sawfish2 - sawfish2
}

okay but the # mostly obsolete, fixme comment in there is so real. the original authors knew. respect 🫑


πŸ’œ FILES πŸ’œ

locations for the programs file are as follows:

$ICEWM_PRIVCFG/programs
$XDG_CONFIG_HOME/icewm/programs
$HOME/.icewm/programs
/usr/etc/icewm/programs
/usr/share/icewm/programs
✨ the locations are searched in the order listed; the first file found is read and the remainder ignored. so like, first come first served, bestie. don't expect a merge. there is no merge. πŸ’…

🌈 SEE ALSO 🌈

icewm(1), icewm-menu(5), icewm-menu-fdo(1). go read them, they're the supporting cast and they ate 🫢


πŸ‘‘ AUTHOR πŸ‘‘

Brian Bidulock <mailto:bidulock@openss7.org> β€” legend behaviour, fr fr ⭐


🌸 LICENSE 🌸

IceWM is licensed under the GNU Library General Public License. see the COPYING file in the distribution for the full tea πŸ“œ


and that's the whole page bestie!! πŸŽ€ this gem is from icewm 4.1.0, dated 2026-08-06 β€” go forth and configure your menu, you absolute icon πŸ’–βœ¨πŸ’…

πŸ“¦ where this page comes from