text:
Besides the static – out-of-the-box – openbox menu there are also also dynamic menus available on BunsenLabs like the
I. Debian Menu,
II. Obamenu,
III. bl-obmenu-generator (menu),
IV. Lxde/lxmenu,
V. XFCE, Kde4 and Gnome Menu,
VI. jgmenu or
VII. Menutray (menu started by a system tray icon).
This post describes the installation – and also the removal – process for these menus and their main characteristics. This writing got muuuuch longer than I originally intended and expected, but whatever menu you're interested in, just look for the appropriate part (thanks to @johnraff for helping to finish this guide with hints and suggestions and to @mrneilypops for hosting all the pictures! The text is cut in two posts).
A. Implementation in the Openbox menu
There is a detailed introduction to the Debian Menu System here. It's fairly easy to implement the dynamic Debian menu into the openbox menu (thanks to Damo who mentioned the menu and helped me to get it work). Here are the steps (more info here):
1.Install dependencies:
apt-get install menu menu-xdg
2. Add the following line to your ~/.config/openbox/rc.xml between the <menu> and </menu> tags, before the entry <file>menu.xml</file> (on #BĹ around the line 890; just for clarification: "~" means in this context the directory "/home/YourUserName". The rc.xml file is also available via "Preferences/Openbox/Edit rc.xml"):
3. Open "Preferences/Openbox/Edit menu.xml" and paste the following line where it's supposed to be in the menu, e.g. before the entry "Accessories" (which should be somewhere around the lines 75-80 and begins with "<menu id="accessories"...).
<menu id="/Debian" />
If there is no "Debian" entry after the next step, try to use the following code instead of the one above:
<menu id="/Debian" label="Debian"/>
4. Restart openbox - "Preferences/Openbox/Restart" or via terminal:
openbox --restart
That's all. The Debian menu in the openbox menu will look like this:
To get rid of the Debian menu simply delete the lines you pasted in menu.xml and rc.xml and restart openbox. If you wish to unclutter the system, remove the installed packages as well via
apt-get purge menu menu-xdg
B. Replacement to the Openbox menu
There is a different usage for the Debian menu as well: It can also replace the default openbox menu, so you will have only the Debian menu after a right click.
These are the steps:
1. Create a backup file of ~/.config/openbox/menu.xml, e.g. copy this file to a different directory, rename it to menu.xml.backup and move it back or simply open the file and use "save as" with .backup ending.
2. This step is the same as step 2 above, so add the following line to your ~/.config/openbox/rc.xml between the <menu> and </menu> tags, before the entry <file>menu.xml</file> (on #BĹ around the line 890; the rc.xml file is also available via "Preferences/Openbox/Edit rc.xml"):
3. Open "Preferences/Openbox/Edit menu.xml" and delete everything, except the first and the last line. Between the two lines paste the code from step 3 above (<menu id="/Debian" />), so menu.xml will look like this:
<?xml version="1.0" encoding="UTF-8"?>
<menu id="Debian" />
4. Restart openbox - "Preferences/Openbox/Restart" or via terminal:
openbox --restart
The Debian Menu as replacement looks like this:
To get back the openbox menu simply delete ~/.config/openbox/menu.xml and rename back menu.xml.backup (that was created at step 1) to menu.xml and restart openbox.
To unclutter the system delete the line you pasted in rc.xml and remove the installed packages as well via
apt-get purge menu menu-xdg
To describe the Debian menu, let me use a corenominal quote back from #!-days: "I am not keen on the Debian menu. Some applications seem to be listed under obscure categories and some really obscure applications also appear when maybe they should not."
It's a kind of "nerdy" menu, but some users like it: "what i like about debmenu so far is that its showing me things i didn't know i had on here but i also either don't need or was wondering what was being used for it." - This is exactly what I was thinking too...
One more comment (as sometimes applications do not appear in the menu): "I agree that this can and does get both confusing and frustrating, especially for the typical end-user. From what I have seen, Debian menu will Not auto-update an application that does not have a .Desktop entry in the usr/share/applications folder. If you create a missing .Desktop file, Debian menu handles things nicely."
For a "how-to" on editing the menu entries you can also read the documentation in the "/usr/share/doc/menu/html" directory.
Note: There are two GUI menu editor packages called "alacarte" and "menulibre". As far as I have seen both provide the same basic categories. However the Debian menu has a completely different structure and those menu editors did not seem to be useful (I might have overlooked something though). There is still a way to edit the structure of the Debian menu, which is described in the documentation mentioned above ("/usr/share/doc/menu/html").
A sidenote just for the record: "Historically — way before the FreeDesktop.org standards emerged — Debian had invented its own menu system where each package provided a generic description of the desired menu entries in /usr/share/menu/. This tool is still available in Debian (in the menu package) but it is only marginally useful since package maintainers are encouraged to rely on .desktop files instead. "
There is also a readme-file in /usr/share/menu: "In this directory, each individual package should install its menu files. Although changing them in this directory to change the menus on your local system may work, the sysadmin (you?) is best advised to put the local menufiles in /etc/menu, as, otherwise your changes are deleted when you upgrade the corresponding packages. Users may override the system-wide defaults by putting their menuentry files in ~/.menu."
There are also Obamenu and (bl-)obmenu-generator. The names are similar, but let's get things cleared first. I better quote forum member johnraff:
"obamenu and obmenu-generator are of course two entirely different things.
obamenu is a python script, not originally by xaos52, who has forked the code from rmoe and added his modifications. Whichever you use, however, the differences are small at the moment.
If you run the script successfully in a terminal it will output a bunch of xml code. This is the openbox menu! To turn it into a real menu you have to incorporate a call to the script somewhere in your openbox menu file."
Here are the steps to implement obamenu in the openbox menu:
1. Download the tarball from here (or go for xaos52's version, whatever you like – see above)
wget rmoe.anukis.de/obamenu.tar.gz
2. Extract the obamenu.tar.gz file. It will create an obamenu directory with two files: "obamenu" (python script) and "obamenu.txt" (read this .txt file before using obamenu).
3. Copy the "obamenu" file in the "home/YourUserName/bin" directory, so it doesn't need to be called with its full path (or copy it where you like but call it with its full path at the next step after execute=").
4. Open "Preferences/Openbox/Edit menu.xml" and paste the following line at the appropriate place in the menu structure, e.g. before the entry "Accessories" (which should be somewhere around the lines 75-80 and begins with "<menu id="accessories"...).
<menu id="desktop-app-menu" label="Applications" icon="/usr/share/icons/applications.png" execute="obamenu" />
If you wish a different entry name instead of "Applications", just change the word after label=".
6. Restart openbox.
This is how it looks without tweaking:
To remove it from the menu just delete the line pasted in menu.xml and restart openbox (if you wish to unclutter the system also delete the obamenu and obamenu.txt files).
In order to fix the missing icons issue have a look at the obamenu.txt file. Quote: "The author of obamenu admits freely to have taken a rather deliberate choice in that regard by having image_dir be a simple string rather than a list, which might seem to be a reasonable way to some. The author, however, didn't consider it wise to play find and catch with ignorance and idiosyncrasies of some parties. He rather chose to use the trusted Unix mechanism of links. In other words: You are advised to soft link all icon files outside the standard icon directory to /usr/share/pixmaps or similar. ("find" is your friend, e.g. find /usr/share/icons -name 'foo.*')."
If you prefer to use obamenu without icons, find the following line in the obamenu file:
image_cat_prefix = "applications -" # if empty will create no icon text only menu
As it is described in the file, after deleting 'applications -', there will be no icons in the menu.
image_cat_prefix = "" # if empty will create no icon text only menu
It's a pragmatic and easy to use dynamic menu implemented in the openbox menu. There are only the main categories with their applications, no submenus of submenus like in the Debian menu. Without icons it looks like this (fits perfectly to the openbox menu):
Editing the menu entries: The entries and the order for the main categories (Office, Development, Graphics, etc.) are defined in the obamenu file, look for the "application_groups =" line. If you change the order here, it gets also changed in the menu structure. In the next section called "group_aliases =" it can be set in which category an application will end up, e.g. "AudioVideo":"Multimedia" -> if there is "AudioVideo" in the Categories line in the .desktop file, the application will be shown under "Multimedia".
If an application is in a wrong category, go to /usr/share/applications and edit the "Categories" line in the .desktop file (as root). For example if a messenger app is in the menu under "Internet" AND "Multimedia", because there is e.g. "Network" AND "AudioVideo" in the "Categories" line, just remove "AudioVideo" (or "Network", if you prefer to keep it under "Multimedia"). For some applications – like Kate or Krita (because their .desktop files are in a kde4 subdirectory) or feh (because it's on the ignoreList in the obamenu file ) – there will be no obamenu entries, but it's possible to fix it by creating (copying) a .desktop file in the /usr/share/applications directory (or simply remove it from the ignoreList like with feh).
Correct me if I'm wrong but it seems – not like with the order of categories – there is no easy way to change the order of applications in the submenus.
bl-bmenu-generator is more complex than obamenu. bl-obmenu-generator is a fork of obmenu-generator optimized for BunsenLabs (icons, settings, installation, etc.) It is written in perl and basically creates a replacement menu to the default openbox menu. Obmenu-generator was made by trizen (who also created ((gtk-))youtube-viewer). Let's not forget that it is forum member ohnonot's favorite menu on BunsenLabs. The menu by (bl-)obmenu-generator can be generated as a dynamic or as a static menu. More info regarding obmenu-generator can be found on github or here and here. The repo for bl-obmenu-generator is available here.
Before a short description of the installation steps let me thank forum member Head on a Stick for creating the obmenu-generator repository and starting the forum thread, which led me to try obmenu-generator and making the bl-obmenu-generator fork.
1. Installation
For installing bl-obmenu-generator with all its dependencies and letting it create a dynamic menu with icons simply run the following (if you already have the ~/src folder remove "mkdir ~/src && " from the beginning):
mkdir ~/src && sudo apt install cpanminus gexec libcpan-distnameinfo-perl libcpan-meta-check-perl libfile-pushd-perl liblocal-lib-perl libgtk2-perl libmodule-cpanfile-perl libparse-pmfile-perl libstring-shellquote-perl libdata-dump-perl && sudo cpanm Linux::DesktopFiles && sudo cpanm Data::Dump && cd ~/src && wget https://www.notabug.org/martix/bl-obmenu-generator/archive/master.tar.gz && tar vxf master.tar.gz && rm master.tar.gz && cd bl-obmenu-generator && sudo cp bl-obmenu-generator /usr/bin && sudo chmod 755 /usr/bin/bl-obmenu-generator && mkdir ~/.config/bl-obmenu-generator && cp schema.pl ~/.config/bl-obmenu-generator && bl-obmenu-generator -i -p
After installation you can delete the ~/src folder and bl-obmenu-generator's files there. Step by step installation instructions for bl-obmenu-generator are described here.
With the default #BĹ Paper icon theme the menu looks like this:
It opens after a right click and replaces the openbox menu (the original ~/.config/openbox/menu.xml will be changed to "menu.xml.bak". It'll also creates ~/.config/bl-obmenu-generator/schema.pl, which file has to be edited in order to customize the menu (open via Menu/Preferences/Openbox/Edit schema.pl).
2. Add Menu Switch
On the screenshot there is a menu entry called Menu Switch. This goes back to this thread and the bl-menu-switch script. This script enables switching back and forth between the menu by bl-obmenu-generator and the static Openbox menu. For installing this feature run the following after the installation of bl-obmenu-generator (if you already have an ~/src folder, remove "mkdir ~/src && " from the beginning):
mkdir ~/src && cd ~/src && wget https://notabug.org/martix/bl-menu-switch/archive/master.tar.gz && tar vxf master.tar.gz && cd bl-menu-switch && cp bl-menu-switch ~/bin && chmod 755 ~/bin/bl-menu-switch && sudo cp ~/src/bl-menu-switch/bl-menu-switch_Paper_icon_32x32/bl-menu-switch.svg /usr/share/icons/Paper/32x32/apps/ && sudo cp ~/src/bl-menu-switch/bl-menu-switch_Papirus_icon_48x48/bl-menu-switch.svg /usr/share/icons/Papirus/48x48/apps && sed -i '/bl-menu-switch/s/#{item/{item/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/item label="Edit autostart"/i \\t\t\t\t<item label="Menu Switch">\n\t\t\t\t\t<action name="Execute">\n\t\t\t\t\t\t<command>\n\t\t\t\t\t\t\tbl-menu-switch\n\t\t\t\t\t\t</command>\n\t\t\t\t\t</action>\n\t\t\t\t</item>' ~/.config/openbox/menu.xml.bak
The installation will place bl-menu-switch in ~/bin, copy its icon in the required icon theme folders and update schema.pl and openbox's menu.xml.bak. Running the command bl-menu-switch or using the Menu Switch entry switches between the Openbox and bl-obmenu-generator menus.
3. Fixing icons for bl-obmenu-generator when using Papirus icon theme
On default bl-obmenu-generator's schema.pl is optimized for the Helium release's Paper icon theme. If the icon theme Papirus is used, run the follwing command in order to fix missing icons:
cp ~/.config/bl-obmenu-generator/schema.pl ~/.config/bl-obmenu-generator/schema.pl.bak && sed -i '/Preferences/s/preferences-other/preferences-desktop/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/menu.xml/s/text-editor/menu-editor/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/schema.pl/s/text-editor/menu-editor/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/bl-text-editor/s/package_editors/cs-windows/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/bl-text-editor/s/hexedit/text-editor/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/obconf/s/gtk-preferences/preferences-desktop-tweaks/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/bl-compositor/s/window-new/Xfwm4CompositeEditor/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/gmrun/s/system-run/application-x-phatch/g' ~/.config/bl-obmenu-generator/schema.pl
When changing back from the Papirus icon theme to Paper or Bunsen-Paper, you can use the ~/.config/bl-obmenu-generator/schema.pl.bak file and rename it (back) to schema.pl.
1. Get rid of the file ~/.config/openbox/menu.xml (move it to an other directory or delete it; I tried to simply rename it to ".old" in the same directory but it did not work that way) and remove /usr/bin/bl-obmenu-generator.
2. Rename (back) the ~/.config/openbox/menu.xml.bak to menu.xml (i.e. simply delete .bak from the name, so you'll have the menu that was in use before bl-obmenu-generator was installed). If you prefer to get back the default "out-of-the-box" openbox menu, run the following command:
cp /usr/share/bunsen/skel/.config/openbox/menu.xml ~/.config/openbox/menu.xml
3. Uninstall the perl modules:
sudo cpanm -U Linux::DesktopFiles
sudo cpanm -U Data::Dump
4. For removing the installed dependencies run:
sudo apt purge cpanminus gexec libcpan-distnameinfo-perl libcpan-meta-check-perl libfile-pushd-perl liblocal-lib-perl libgtk2-perl libmodule-cpanfile-perl libparse-pmfile-perl libstring-shellquote-perl libdata-dump-perl
5. Delete the config directory used by bl-obmenu-generator: ~/.config/bl-obmenu-generator
6. Restart openbox.
openbox --restart
Editing the menu entries: There is more info on how to edit the menu, add categories, external submenus, put a bash-menu via xdotool to the menu, create all kinds of bells and whistles etc. on this site and here (thanks to forum member seppalta for these detailed tutorials!). At the beggining of the file ~/.config/bl-obamenu-generator/schema.pl there is a description of the syntax:
item: add an item inside the menu {item => ["command", "label", "icon"]},
cat: add a category inside the menu {cat => ["name", "label", "icon"]},
sep: horizontal line separator {sep => undef}, {sep => "label"},
pipe: a pipe menu entry {pipe => ["command", "label", "icon"]},
file: include the content of an XML file {file => "/path/to/file.xml"},
raw: any XML data supported by Openbox {raw => q(xml data)},
begin_cat: begin of a category {begin_cat => ["name", "icon"]},
end_cat: end of a category {end_cat => undef},
obgenmenu: generic menu settings {obgenmenu => ["label", "icon"]},
exit: default "Exit" action {exit => ["label", "icon"]},
There are also some "commented out" lines on default like
# {cat => ['gtk', 'GTK Applications', 'gnome-applications']},
If you remove the #, there will be a new menu category with all the GTK applications. I really liked to tweak the menu as there is no need to restart openbox; it's enough to save the changes in "schema.pl" (or does not start, if there is wrong code). bl-bmenu-generator looks for apps in /usr/share/applications and ~/.local/share/applications. If apps don't show up there, just create an appropriate .desktop file.
There are no man pages for bl-obmenu-generator, only "help" via
bl-obmenu-generator -h
usage: bö-obmenu-generator [options]
-p : (re)generate a pipe menu
-s : (re)generate a static menu
-o : static menu file (default: ~/.config/openbox/menu.xml)
-m : menu id (default: 'root-menu')
-t : menu label text (default: "Applications")
-r : regenerate the config file
-i : use icons in menus
-d : regenerate icons.db (with -i)
-u : update the config file
-c : reconfigure openbox automatically
-R : reconfigure openbox now and exit
** Static menu without icons:
bl-obmenu-generator -s -c
** Dynamic menu with icons:
bl-obmenu-generator -p -i
It's a pretty cool replacement to the default openbox menu. With all kinds of bells and whistles it looks like this. <-Amazing menu!
Why is a menu by (bl-)obmenu-generator great? Let's quote forum member ohnonot:
"It's absolutely genious because it's:
- fast as hell despite being
- dynamically generated
- configurable (easy once you get used to the syntax. easier than xml, imho)
- so you can also have static items in there, and submenus and everything
- icons or not (if you choose icons they are cached so it doesn't slow down too much)
- it adds its own configuration submenu."
Edit: Updated instructions - obmenu-generator replaced by insturctions for bl-obmenu-generator
Last edited by martix (2018-06-15 17:45:11)
The following menu is default on the desktop lxde, thanks to forum member dr_iian for mentioning it in a thread. It's very easy to implement it in the openbox menu.
1. First install the required packages:
apt-get install lxmenu-data openbox-menu
2. Open menu.xml via "Preferences/Openbox/Edit menu xml". Paste the following code in menu.xml e.g. between the line <separator/> and <menu id="accessories" label="Accessories"> (this is probably somewhere around the lines 70 and 85) and in this case the "Applications" menu entry will be above "Accessories" in the openbox-menu:
<menu execute="openbox-menu lxde-applications.menu" id="apps" label="Applications"/>
To change the entry name just modify the word after label=". In order to use the menu without icons, just put "-i" after openbox-menu in the code above.
3. Restart openbox e.g. via "Preferences/Openbox/Restart".
That's it. The dynamic lxde/lxmenu will appear under "Applications" in the openbox menu. With icons it will look like this:
It's easy to edit this menu as there is a GUI menu editor called lxmed. It looks a bit outdated but is still working. It needs Java Runtime Environment and also works with OpenJDK instead of Sun's java.
Installation of lxmed:
1. In order to use the lxmed menu-editor install openjdk first:
apt-get install openjdk-7-jre
2. Download the tarball from here. The following steps are the same just like described on the site:
3. Extract the file.
4. Enter the lxmed folder and run this command to make the install script executable:
chmod +x install.sh
5. Install lxmed by
sudo ./install.sh
6. If you have lxde/lxmenu installed, start the editor via "Applications/Preferences/Main Menu Editor".
Lxmed will require a root password after start and it will look like this:
Removing an app from a certain category and move it to an other one (or rename it) via LXDE Main Menu Editor seems to work for other menus like obamenu or jgmenu too. You can also use this menu with fbpanel and it's possible to add new dynamic categories to the menu (whereas it was mentioned in a thread that only static categories could be added to the fbpanel menu).
Lxde/lxmenu without icons fits perfectly to the openbox menu:
When you look at the pictures with and without icons closely, you will notice the entry "Main Menu Editor" for lxmed. On the picture with icons it is called "Main Menu Editor LXDE", which was changed via lxmed. Besides renaming it is also possible to change the order of the entries, hide entries, copy&paste or cut&paste entries.
If you wish to remove lxde/lxmenu, just delete the line that was pasted into menu.xml. If there is no need for the package anymore, use
apt-get purge lxmenu-data
To remove lxmed menu-editor use
sudo /opt/lxmed/uninstall.sh
If you receive a "command not found" error message, try first
sudo chmod +x /opt/lxmed/uninstall.sh
and the uninstall command after that.
The installation of the XFCE, KDE4 and Gnome menu is similar to the process of the Lxde/lxmenu. However for the XFCE menu its .menu file needs to be tweaked first.
Installation of the XFCE Menu
1. Install
apt-get install openbox-menu
2. Open the file /etc/xdg/menus/xfce-applications.menu as root and replace in line 5 "<Name>Xfce</Name>" – as advised here – the word "XFCE" with "Applications", so it'll look like this:
3. Open menu.xml via "Preferences/Openbox/Edit menu xml". Paste the following code in menu.xml e.g. between the line <separator/> and <menu id="accessories" label="Accessories"> (this is probably somewhere around the lines 70 and 85) and in this case the "Applications" menu entry will be above "Accessories" in the openbox-menu:
<menu execute="openbox-menu xfce-applications.menu" id="apps" label="Applications"/>
To change the entry name just modify the word after label=". In order to use the menu without icons, put "-i" after openbox-menu in the code above.
4. Restart openbox e.g. via "Preferences/Openbox/Restart".
The XFCE Menu will appear under "Applications" in the openbox menu. Without icons this is how the menu structure looks like:
As a sidenote: The name of the entries "Main Menu Editor Menulibre" and "Menu Editor" (alacarte) were changed – if I recall it correctly – via lxmed (which is called "Main Menu Editor"). After I removed both packages – menulibre and alacarte – these two entries remained (although they did not start anything). It turned out that two .desktop files in ~/.local/share/applications had to be removed manually as well.
The XFCE Menu has a well-organized, pragmatic structure with a huge "Other" category. There were over fifty entries in this category, lots of them duplicate ones. Here is a "how-to" on customizing this menu. According to this wiki-page Menulibre works well for editing (and lxmed as well) but I did not test them with the XFCE menu.
Installation of the KDE4 Menu
The KDE4 menu requires only three steps, install openbox-menu, paste the appropriate line in menu.xml and restarting openbox:
1. Install
apt-get install openbox-menu
2. Open menu.xml via "Preferences/Openbox/Edit menu xml". Paste the following code in menu.xml e.g. between the line <separator/> and <menu id="accessories" label="Accessories"> (this is probably somewhere around the lines 70 and 85) and in this case the "Applications" menu entry will be above "Accessories" in the openbox-menu:
<menu execute="openbox-menu kde4-applications.menu" id="apps" label="Applications"/>
For no icons put "-i" after openbox-menu in the code.
3. Restart openbox.
The KDE4 menu is a bit messy – strange structure and plenty duplicate menus –, without tweaking it's not really suitable for everyday use:
Installation of the Gnome Menu
Same procedure for the Gnome menu as above:
1. Install
apt-get install openbox-menu
2. Open menu.xml via "Preferences/Openbox/Edit menu xml". Paste the following code in menu.xml e.g. between the line <separator/> and <menu id="accessories" label="Accessories"> (this is probably somewhere around the lines 70 and 85) and in this case the "Applications" menu entry will be above "Accessories" in the openbox-menu:
<menu execute="openbox-menu gnome-applications.menu" id="apps" label="Applications"/>
For no icons put "-i" after openbox-menu in the code.
3. Restart openbox.
This is how the implemented Gnome menu looks like (there seems to be the category "Games" missing):
To remove these menus just delete the line that was pasted into menu.xml and to clean up run: apt-get purge openbox-menu
jgmenu is a standalone X11 menu application, which was created by forum member malm (credit for contributions goes to forum member o9000). The menu was developed for Openbox and tint2, but it works with many use-cases like dwm, polybar, plank or cairo-dock as well (see jgmenu wiki). jgmenu provides a conventional launcher/start menu with some hackable features (size, position, color, transparency, etc.).
As a package is available in the backports, the menu can be installed via:
sudo apt install jgmenu
The menu starts by running
In order to create the jgmenu config file (~/.config/jgmenu/jgmenurc) run the following command:
jgmenu init
By default, jgmenu will guess appearance settings (e.g. colours and positioning) based on the tint2 config file - if it exists - or just use default settings.
You can overrule any of these settings by uncommenting the appropriate variable in ~/.config/jgmenu/jgmenurc. For example if you would like to change the font type and size to "URW Chancery L bold italic 11", just open ~/.config/jgmenu/jgmenurc -> uncomment the line "font =" and change it to:
font = URW Chancery L bold italic 11
Save it. Open the menu, press F5 for restarting the menu and the new font type and size will be shown.
For further configuration-options see:
man jgmenu
Or check this site. There is a great overview regarding geometric variables (position of items, submenus, menu-padding, sub-spacing, arrow-width, etc.) here. In order to use it on Openbox with a shortcut or mouse-bind, check the details here.
In order to make it autostart, copy&paste the following line in ~/.config/openbox/autostart:
(sleep 2s; jgmenu --hide-on-startup) &
Here are the details for a tint2 implementation (you will find in the wiki the instructions for dwm and polybar too).
Menutray is a menu, which can be started after a click on a system tray icon. It does not replace the openbox menu, so both menus can be used at the same time (there will be no menu entry for Menutray in the openbox menu). Menutray is somewhat similar to Obmenu-generator (both were created by trizen) as it is also written in perl, has similar dependencies and config files (schema.pl and config.pl).
1. Install the dependencies:
sudo apt-get install cpanminus gexec libcpan-distnameinfo-perl libcpan-meta-check-perl libfile-pushd-perl liblocal-lib-perl libmodule-cpanfile-perl libparse-pmfile-perl libstring-shellquote-perl libdata-dump-perl
2. Download the .zip file (or git pull) from here:
wget https://github.com/trizen/menutray/archive/master.zip
3. Extract master.zip.
4. cd to the menutray-master directory, where - among others - the extracted menutray, schema.pl and README.md files are and place the file "menutray" in your PATH:
cp menutray ~/bin
5. Create a Menutray config directory:
mkdir ~/.config/menutray
6. Copy schema.pl in the created directory:
cp schema.pl ~/.config/menutray
7. Run the following command for creating a menu with icons (or "-g" instead of "-i" for no icons)
menutray -i
Without tweaking Menutray places an Ubuntu logo in the system tray. After clicking on it the menu looks like this:
As mentioned above, the menu can be tweaked in a similar way just like a menu by obmenu-generator. The config files - schema.pl and config.pl - are in the ~/.config/menutray directory. For further options (using gtk3 instead of gtk2, change path of schema.pl, etc.) see the github page.
To remove Menutray just delete the menutray file from ~/bin and the menutray directory ~/.config/menutray. Um get rid of the dependencies run
apt-get purge cpanminus gexec libcpan-distnameinfo-perl libcpan-meta-check-perl libfile-pushd-perl liblocal-lib-perl libmodule-cpanfile-perl libparse-pmfile-perl libstring-shellquote-perl libdata-dump-perl
Just for the record: There used to be a python script for a menu called XDG-Menu, which led to a project named uxdgmenu. There is still a .deb package available, however it seems to be outdated and did not work for me.
Last edited by martix (2018-04-27 10:35:55)
Fantastic work! Even though I've grown to despise nested menus (on BL I use a single-pane right-click menu for settings, shortcut keys for common apps and xfce4-appfinder for the rest), I'm sure there are many who will love you for this!
Megabonus points for including scrots and removal instructions for all of these.
I'm sure we'll end up either stickying this or linking it to a sticky. Cheers!
^For now, I've added a link to this list.
( a boring Japan blog, idle Twitterings and GitStuff )
In case you forget, the rules.
What a great resource, thankyou for sharing.
@hhh Well, in the first line credit goes to those coders who created these great menus! I just like to try different dynamic menus from time to time. An obmenu-generator thread gave me thinking about a tuto as it might seem complicated at the first glance but knowing the steps it's actually very easy to install and use it. I'm still wondering though why "purge" did not remove the /.config/obmenu-generator files for me. Btw XFCE4 Appfinder is good to have, I like it too! Although it relies on file names and descriptions, therefore e.g. after typing "pdf", readers like Atril or Evince don't show up.
@john Thank you for linking! If I forgot or overlooked some dynamic menu solutions, I'll try to add it to the post in the future.
Tweak and tinker those menus like there's no tomorrow!
I'm still wondering though why "purge" did not remove the /.config/obmenu-generator files for me.
Apt-get will never remove a user's personal files because they might be important. It's up to you to remove left-over config files in your home directory.
( a boring Japan blog, idle Twitterings and GitStuff )
In case you forget, the rules.
@john I see, thank you. So - when uninstalling something - does it mean there is no difference in "apt-get remove" and "apt-get purge"? (At least in this respect.) Somehow I had on my mind that the former does not remove config files and the later removes everything, but good to know that "purge" does not touch config files in the home directory then.
@john I see, thank you. So - when uninstalling something - does it mean there is no difference in "apt-get remove" and "apt-get purge"?....
man apt-get
Be Excellent to Each Other...
FORUM RULES and posting guidelines «» Help page for forum post formatting
Artwork on DeviantArt «» BunsenLabs on DeviantArt
man apt-get
Yes, indeed, thanks! This is what I meant : "purge is identical to remove except that packages are removed and purged (any configuration files are deleted too)." Well, not the edited ones in ~/.config/obmenu-generator.
Added Menutray to the guide. Somewhat strange menu, as it starts by a systray icon. This kind of menu is probably not used by many users.
When apt talks about "configuration files" it means system configuration files, usually stored under /etc/. User's personal files are always (or should be) left untouched.
Users on single-user systems sometimes confuse system-wide settings with per-user settings, but policies about them are quite different.
( a boring Japan blog, idle Twitterings and GitStuff )
In case you forget, the rules.
Hey, thank you for this!
This is so useful, thorough and... understandable!
Thank you for sharing!
JR Bradypus
Hard(ly?) working sloth...
Hi, again!
I was trying it out here and I think the line to be added to the menu.xml file is:
<menu id="/Debian" label="Debian"/>
or there'll be no button for the Debian menu...
(but I may be wrong, it happens a lot more often than I like to admit.)
Last edited by Bradypus (2017-07-06 02:43:08)
Hard(ly?) working sloth...
Hi, againa!
I was trying it out here and I think the line to be added to the menu.xml file is:
<menu id="/Debian" label="Debian"/>
or there'll be no button for the Debian menu...
(but I may be wrong, it happens a lot more often than I like to admit.)
I saw the typo and that line you posted is the correct one. Debian menu now works for me.
Real Men Use Linux
I saw the typo and that line you posted is the correct one. Debian menu now works for me.
It feels good to have been useful!
Hard(ly?) working sloth...
Bradypus wrote:
Hi, againa!
I was trying it out here and I think the line to be added to the menu.xml file is:
<menu id="/Debian" label="Debian"/>
or there'll be no button for the Debian menu...
(but I may be wrong, it happens a lot more often than I like to admit.)
I saw the typo and that line you posted is the correct one. Debian menu now works for me.
Hmm, I'm not sure: Which button do you mean?
Hmm, I'm not sure: Which button do you mean?
Sorry, by "button", I mean an entry in the menu, like a word to click on.
Adding the line:
<menu id="/Debian" />
to the menu, I got the same OB menu, without any place to click on to access the Debian Menu (that is what I mean by "no button", no link in the menu). The Debian menu may have been be there, but I couldn't access it. So, I think it's fair to say that, for me, this option did no work.
When I tried to replace the line with:
<menu id="/Debian" label="Debian"/>
The word "Debian" showed on the menu and, when I clicked on it, the Debian menu showed.
As I said, I may be wrong, but I tried this in two different computers, with the same result.
Thinking about it, I guess it does make sense, no label, no, menu entry, link (or "button") in the menu. Actually, I didn't even get a blank line, with the first option.
The best thing would be to try it out. I may have done something wrong in the first option, but I tried it in two different computers, twice in one of them, with the same result.
I hope this can be useful.
(I'm sure I am learning a lot!)
Last edited by Bradypus (2017-07-06 15:38:15)
Hard(ly?) working sloth...
^I see, thank you for the explanation.
I used that line without "label="Debian"" and it seems that here it is not required as after a restart there is the "Debian" entry with its menu-structure.
It's good to hear about these issues though, I'll add it to the description above.
I used that line without "label="Debian"" and it seems that here it is not required as after a restart there is the "Debian" entry with its menu-structure.
Hey, Martix,
It's pretty odd that things work differently with the same system (although in different machines). I actually found the "label="Debian"" solution (which worked here) by trial and error (from observing the other menu entries), after I got no "Debian" menu entry after following the instructions and restarting my system. I think that, if a lot of people had experienced the same issue, it would have shown in the forum earlier. Or maybe people who found this issue just gave up on Debian menu and went on to test other alternatives.
The line you posted (without "label="Debian") is the same one I found in other places (such as http://openbox.org/wiki/Help:Menus#The_Debian_menu), so it must work at least in some cases (if not in most cases). I just hope it works equally well for everyone with the "label="Debian"".
It's good to hear about these issues though, I'll add it to the description above.
It's good to think that my remark may have been useful.
All the best!
Last edited by Bradypus (2017-07-09 15:15:17)
Hard(ly?) working sloth...
Awesome topic, thanks!
After installing obmenu-generator both from repo and from git I have the following output when I try to use it. Any help on how to solve it?
It is a fresh deuterium
Can't locate Linux/DesktopFiles.pm in @INC (you may need to install the Linux::DesktopFiles module) (@INC contains: /etc/perl /usr/local/lib/i386-linux-gnu/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/i386-linux-gnu/perl5/5.20 /usr/share/perl5 /usr/lib/i386-linux-gnu/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at /usr/bin/obmenu-generator line 34.
^Indeed, I had that issue as well after upgrading to stretch.
Run as root:
perl -MCPAN -e shell
Answer the question and then from the shell inside:
install Linux::DesktopFiles
Exit root and try again the obmenu command.
thank you sir, that worked like a charm and I wouldn't have thought of it. It should be in the first post guide!
You're welcome. Good idea too, added!
There is also a way to have both: The static menu and the dynamic menu and switch back and forth. Here is a detailed description.
The switcher looks like a nice little toy, nice job!
Is there a way to change the font of the obmenu-generator? Can't find it around
In "Preferences/Openbox/GUI Config Tool" there is "Appearance".
You can choose under "Menu Item" the font style and size for the bl-obmenu-generator menu.


text:
May 31`17 - Carolyn Solomon and 1924067 Ontario Inc. - Conviction
Toronto– Carolyn (Michelle) Solomon and 1924067 Ontario Inc. o/a Blue Mountain Travel pled guilty and were convicted of four (4) and one (1) counts of operating as a travel agent without registration, respectively, contrary to section 4(1)(a) of the Travel Industry Act, 2002 (theAct).
The pleas and convictions under the Act were joined with Ms. Solomon's pleas and conviction of six (6) fraud related charges, under the Criminal Code of Canada.
Ms. Solomon was sentenced on both sets of charges, combined, as follows:
- 18 months' jail, with credit for time already served;
- Three (3) years' Probation with the condition (in addition to statutory conditions) that Ms. Solomon not sell or counsel for the purpose of selling any travel services to the public in any capacity;
- Restitution in the amount of $462,804.56 to be paid in equal monthly installments by the end of the 3-year probation period;
- An Order for a Fine In lieu of Forfeiture for the full amount of restitution. Failure to pay the full amount by the deadline provided, will result in Ms. Solomon's imprisonment for another 3 years;
- A Prohibition Order for five (5) years prohibiting Ms. Solomon from having authority over real property, money or valuable security of another person; and
- An Order that a sample of Ms. Solomon's DNA will be taken for future investigative purposes.
1924067 Ontario Inc. was sentenced to a fine of $50,000.00.
Ms. Solomon was the principal and a guiding mind of 1924067 Ontario Inc. and operated in Toronto and elsewhere in Ontario. In addition, Ms. Solomon was a former employee of 407488 Ontario Ltd. o/a Business & Vacation Travel Planners and Blue Mountain Travel (BMT), a registrant under the Act. BMT's registration was voluntary terminated effective July 31, 2015. In a related prosecution, BMT and its officer and director, were charged and convicted of a number of offences under the Act.
For More Information, Media Please Contact:
Mr. Richard Smart, President & C.E.O. or Dorian Werda, Vice President, Operations
Tel: (905) 624-6241 / Toll Free: 1-888-451-TICO

subset: commoncrawl


text:
Remember the Harlem Shake? That intraweb meme where a group of people perform something of a comedy sketch to the tune of The Harlem Shake by Baauer? Of course you know what I'm talking about. Remember how our feeds were flooded with everyone doing the Harlem Shake? Whilst it was kind of cool initially it eventually – and inevitably – became quite painful. This clip, however is not painful at all and the fact that I've only stumbled upon it now is shocking. This can run on repeat all day long. I mean it's a montage of beautiful
chicks women doing the shake. Bless them.
You stay classy.


text:
Hello everyone! We are so excited to share the first sneak peek to our Fall 2017 release!
We have 12 stamps and 15 dies in this release! All products will be available on July 20!
Hello Fall Stamp Set
4x6 stamp set with matching dies.
Illustrated by Angel Gerardo; Distributed by Waffle Flower Crafts;
Shipping July 20, 2017; Matching dies available.
Thank you for stopping by! See you tomorrow for another sneak peek!


text:
Book update No. 4 — famous fans
In case you haven't heard, I'm working on a new book about baseballs.
It's scheduled to be published in March 2011.
The first draft is due in March 2010.
(I still don't know what to call it.)
It's supposed to be about 60,000 words.
My current word count is a little over 37,000.
(That's 132 pages double-spaced.)
I've made progress since my last update, but I still have a long way to go.
Right now I'm trying to come up with a list of fans who've been featured in the news for making one great/memorable catch, or perhaps several catches (of foul balls or homers) in one game. I'm not quite sure how this will fit into the book. It'll all depend on how many examples I can come up with, so I'm hoping you can help me think of some. Here's are a few examples…
1) C.J. Ramsey, the 12-year-old kid who caught two foul balls hit by Josh Hamilton during one at bat this year in Arlington.
2) Doug Rohrkaste, the Pirates fan who caught three foul balls in a 15-minute span in 2005.
3) Nick Yohanek, my friend and fellow ballhawk from Milwaukee, who made a diving catch on a home run ball during Spring Training and saved a sexy sunbather in the process.
4) Steve Monforto, the father from Philadelphia whose three-year-old daughter took his foul ball and chucked it over the railing.
5) Larry Quesenberry, the fan in Cleveland who caught two home runs in one inning.
6) Danny Vinik, the teenager at Fenway Park who became a hometown hero after robbing Angels catcher Jeff Mathis of a pop-foul during the playoffs in 2007.
Get the idea? If you can come up with more examples, please let me know. It would be a big help. (I just found this "article" about another guy who supposedly caught three foul balls in one game, although there's hardly any info, so I'm wondering if the story is even legit.)
Yes, I'm updating my update. Thank you all for the suggestions, and please keep them coming. I'm going to include stuff in the book about milestone home run balls, but that's not what I'm looking for here. Right now, I'm specifically looking for fans who received media attention when it wasn't planned or expected. In other words, with Barry Bonds' 756th home run, everyone knew beforehand that the fan who snagged it would become an instant celebrity (and potentially an instant millionaire, too). To some extent, the same was true for Bonds' 660th and 661st home runs, but since they were retrieved by the same kayaker in McCovey Cove, it became a much bigger story, so I think that'll qualify. See what I mean? I'm trying to come up with more examples of fans who created their own story by doing something unusual or spectacular. FYI, I didn't include guys like Steve Bartman and Jeffrey Maier on this list because a) neither of them caught the ball and b) it was fan interference. Danny Vinik made the list because he didn't "interfere." Mathis had tried to reach into the stands to make the catch; Vinik simply reached above Mathis's glove and caught the ball.


text: Share: Comments Print December 5, 2014 at 5:37 PM Prosecutors charge violent felon with break-in and gun thefts from sporting good store Posted by Mike Carter King County prosecutors charged a 43-year-old felon on Friday in connection with an alleged attempt to steal firearms from the Big 5 sporting-goods store in Burien early Tuesday. Ricky Arntsen, who is also known as Ricky Nelson, remains jailed in lieu of $750,000 bail. According to the state Department of Corrections, Arntsen, of Burien, served 11 years in prison on a manslaughter charge and has served additional sentences since his release in 2005. He also has a lengthy criminal history in Colorado, charging papers say. Prosecutors charged Arnsten with second-degree burglary, first-degree unlawful possession of a firearm and first-degree malicious mischief – the latter charge for allegedly causing at least $80,000 in damage to fixtures and merchandise inside the store, located at 125 S.W. 148th St., charging papers say. Arnsten is accused of driving a Kia Sedona minivan through a glass wall and metal gate at the front of the store just after 6:30 a.m. Tuesday, charging papers say. The crash set of a security alarm, which summoned King County deputies to the business, they say. When the deputies arrived, they found rifles and shotguns on the floor near the minivan, and additional weapons near the firearm sales counter, the papers say. The deputies heard movement inside the store, so backed out and requested assistance from a tactical team. Following a lengthy standoff, officers found Arnsten, who was apparently intoxicated, hiding in the store's ceiling, according to the charges. They also served a search warrant on the minivan and found nine rifles, eight shotguns and ammunition that had been loaded inside, the papers say. Arnsten was taken to Harborview Medical Center for treatment of undisclosed injuries before being booked into jail, according to the charges. While at the hospital, Arnsten "used a concealed razor to cut his restraint straps," completely cutting through one strap and partially cutting the other, the charges say. Arnsten, who is flagged as a "violent offender" and a "serious threat to law enforcement" in a national police data base, is to be arraigned Dec. 18, according to prosecutors. Comments | More in The Blotter | Topics: Big 5, Burglary, gun theft


text:
San Diego, CA
Given Upon Request
This seminar provides valuable information and guidance to engineers, technicians, and project managers on airborne EO missions and capabilities.
Those interested in Airborne Electro-Optical Sensor Systems.
Contact Name: Ken hood
Advanced Search
Don't miss our Aug. 2 Washington Technology Power Training session on Mastering Stakeholder Engagement, where you'll learned the critical skills you need to more fully connect with your customers and win more business.
Read More
In our latest Project 38 Podcast, editor Nick Wakeman interviews Tom Romeo, the leader of Maximus Federal about how it has zoomed up the 2019 Top 100.
Read More
Sign up for our newsletter.
I agree to this site's Privacy Policy.


text:
|Meeting Of The Minds For Intelligent Conversations Only!
|Thread Tools
|Display Modes
|05 Oct 2005, 06:13 PM
|#1 (permalink)
Art is Resistance
Would they do this if it was Michael Moore? (AP)
Filmmaker Sues Kerry, Campaign Aide By MARYCLAIRE DALE, Associated Press Writer
27 minutes ago
PHILADELPHIA - A filmmaker has sued Sen. John Kerry and a one-time campaign aide, saying they defamed him as they sought to block the broadcast of an anti-Kerry documentary during the 2004 presidential election.
The lawsuit, filed this week on behalf of producer Carlton Sherwood and a Vietnam veterans group, is the latest salvo in the battle over the documentary "Stolen Honor: Wounds That Never Heal."
The film contends that Kerry's anti-war activities when he returned from Vietnam caused further harm to captured U.S. soldiers.
The Sinclair Broadcast Group, which as of last year owned 62 TV stations that reached a quarter of all U.S. households, canceled plans to air the documentary during the razor-close Bush-Kerry race last fall and instead showed only portions of it as part of a broader program.
The Democratic National Committee had complained that "Stolen Honor" amounted to an illegal in-kind contribution to President Bush's campaign, and Kerry's campaign asked for equal time.
Sherwood's suit alleges that Kerry directed the DNC to issue a statement that falsely said the film was produced and funded by "extreme right-wing activists."
The film was funded only by Vietnam veterans from Pennsylvania, according to Sherwood, a Harrisburg resident who served in Vietnam. He and a combat veterans group called the Vietnam Veterans Legacy Foundation filed the federal suit in Philadelphia on Monday.
The suit charges that Anthony Podesta, who ran Kerry's campaign in Pennsylvania, called Sherwood "a disgraced journalist" and "Bush hack" in a widely circulated e-mail.
A Kerry spokesman suggested the suit was designed as a fund-raising tool for the veterans foundation and others.
"This is simply more of the same smears and sleaze against a decorated Vietnam veteran from more of the same serial liars who disgraced themselves in 2004," spokesman David Wade said.
"It's too bad the truth doesn't matter to the right wing when there's a chance to fund-raise based on outright falsehood and slander," he said.
Podesta did not immediately return a message seeking comment.
In July, the Federal Elections Commission rejected a complaint filed by the DNC, ruling that Baltimore-based Sinclair had not violated federal election law by running parts of the documentary.
|05 Oct 2005, 07:57 PM
|#2 (permalink)
Master Sergeant
Join Date: Oct 2003
Location: Pushing toward Visari Square...
Posts: 14,508Rep Power: 6467
Liberals' ability to spit on someone and then accuse that person of spitting on them or on "the truth" or "the justice" or "the American way" never ceases to amaze me. Is there a person who gets paid to be a Liberal that owns a mirror??
People who use the words "Internet Bullies" are the most pussiest form of pussies you'll ever find. Chances are better than not that any girlfriend they've ever had cheated on them multiple times, probably right in front of them, laughing at their pitiful punk asses the whole time while they sat there and cried. If you or someone you know has been caused grief by an "Internet Bully" then you and/or that person is nothing but a little punk ass bitch, and the world would be a better, more manly place if you'd just jump off a fucking bridge already. Late.
|21 Oct 2005, 05:33 PM
|#3 (permalink)
Robocop is my hero
Join Date: Oct 2005
Location: North Carolina
Posts: 165Rep Power: 19
|19 Nov 2005, 06:24 PM
|#4 (permalink)
Join Date: Aug 2003
Posts: 7,695Rep Power: 508
What kind of Bullshit is this? They sue a Man who lost to a complete Moron and now they're milking money out of him because he surposedly blocked a Documentary bad mouthing him claiming that the People had the right to now what he 'did'.
Well Since when did Film-makers and Mediafreaks jump on their Highorse and demand that people now who their electing as President. We weren't told that Bush would send Thousands of Soliders to a Forgien Dangerous Country for 3 years looking for non-existant weapons of mass Destruction just to maintain the oil-lines from Iraq....
It somewhat seems danced around when you look back at it...
|02 Dec 2005, 11:18 PM
|#5 (permalink)
Banned By Administrators
Join Date: Aug 2002
Location: AZ
Posts: 10,294Rep Power: 0
|Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
|Thread Tools
|Display Modes
Linear Mode
|Similar Threads
|Thread Starter
|Last Post
|BD Match 19: Michael Moore vs. The Hogan Family
|25 Aug 2008 12:22 PM
|Michael Moore...
|13 Oct 2004 10:56 PM
|anyone who hates michael moore click here
|Forgotten Sin
|05 Sep 2004 11:55 PM
|Michael Moore Is A Big Fat Stupid White Man
|27 Jun 2004 02:47 AM
|Fuck Michael Moore
|Meeting Of The Minds
|09 Dec 2003 12:34 AM


text:
In the pantheon of programming languages, one stands out from among the hundreds of languages extant as one of the most misunderstood and under-appreciated. It's called Smalltalk. The philosophy behind this language is profound. The implications for the future of software development are far-reaching. I was reminded of this when I read a seminal paper by Alan Lovejoy entitled, "Smalltalk: Getting the Message [1]." He talked at length about "message-oriented programming." It is thus worthwhile to review some of his conceptual explanations (through excerpts). They are pearls of wisdom beyond price.
On Reflection and DSLs
Smalltalk is a worldview, a way of thinking, a completely different programming paradigm. The concepts at the heart of Smalltalk are so profound, and so foundational, that all serious programmers should learn the language, even if they don't ever expect to actually use it professionally. Learning C++, Java or C# is not any sort of substitute for learning the real thing. None of those languages satisfy Dr. Kay's definition of OOP [2].
Smalltalk is considerably simpler than most other languages, both conceptually and syntactically. But Smalltalk is also considerably more powerful and expressive than most other languages, due in part to its greater simplicity, uniformity and symmetry. Smalltalk is comprehensively uniform and consistent, and comprehensively symmetrical — which is an important part of the reason why it can be both simple and powerful at the same time. The flexibility provided by Smalltalk's high degree of symmetry and extreme late binding have proven to help programmer productivity and creativity more than any theoretical benefits that might be derived from the use of static type checking, symmetry-breaking primitive data types or symmetry-breaking syntactic sugar.
Smalltalk is also pervasively dynamic, pervasively reflective, and pervasively open. Its metalevel is completely symmetric with its base level: all the same things can be done at the metalevel as at the base level, using the same syntax.
Stated concisely, the symmetry, the uniformity, the consistency and the simplicity of Smalltalk lie in the following: all values are objects, all behavior is invoked by sending messages, and almost nothing is done by syntax when it can instead be done by sending messages to objects.
But most importantly, Smalltalk is fun. It's fun because its programming tools make use of Smalltalk's superior reflective capabilities to provide a development environment unlike any other.
Smalltalk is also fun because defining and using domain specific languages isn't an afterthought, it's the only way Smalltalk works at all. As a result, Smalltalk code lets both the reader and the writer focus on the problem domain, using language and notation that is natural to that domain.
The Smalltalk Computational Model
In Smalltalk, all values are objects.
Almost all computation is done by sending messages to objects.
Messages and Methods
A message can be thought of as a request to invoke or perform a computation. When a message is sent to an object, the receiving object (usually referred to as the "receiver of the message," or simply as "the receiver") is responsible for deciding how to fulfill the request to invoke (perform) the computation named by the message — or in Smalltalk jargon, how to "respond to the message." An object that receives a message responds to the message by (dynamically, at runtime) finding a method in its method namespace whose name matches that of the message, and then executing that method.
A method is an object that embodies a computational algorithm that, when executed, computes a value — possibly with side effects. To execute a method is to execute the algorithm embodied by the method. Conceptually, a method is analogous to a function (or subroutine), and a message is analogous to a function/subroutine call (a function or subroutine "call" represents a request for it to be executed). But the analogy between methods and functions (subroutines) is only that — a conceptual analogy — for reasons that are explained below.
The name of a message or method is known as its selector. The selector of a message or method identifies its intentional semantics (logical meaning) and is what distinguishes one message or method from another. In addition to its selector, a message may have zero or more arguments (parameters). And a method may accept zero or more arguments — although any particular method requires a particular number of arguments. Each argument in a message becomes an argument to whatever method is executed in response to the message.
A method namespace operates as a mapping (functional predicate) that, for each unique method selector (method name) in its domain, associates that method selector (method name) with a particular method. It is used to lookup a method by its selector (name).
Dynamic message dispatch is the term used to refer to the process of using a method namespace to (dynamically, at runtime) find the method associated with a particular method selector (name). It should be noted that Dr. Kay (and Smalltalk) use the term "method" to mean a function or subroutine that is invoked in response to the sending of a message, by means of dynamic message dispatch at run time (and not by static binding at compile time). This is one of the two differences between a method and a function/subroutine. It's also the essential difference between Smalltalk methods and the functions/subroutines in other programming languages that, in disrepect to those who coined the term, are often referred to as "methods."
Because of dynamic message dispatch, the semantics of sending a message to an object depend absolutely on the object that receives the message. The same message may be interpreted quite differently by different objects, due to the fact that each object may use a different method namespace in order to lookup a method based on the selector of a message, and so may associate a different method with the same message selector. Consequently, a message can be thought of as an abstract function call which will result in the execution of whatever concrete function (subroutine) is chosen by the object that receives the message. The idea is that a message should name the logical function to be computed, but the object receiving the message should decide how best to physically compute the desired result. The universal, pervasive application of this distinction between logical function (semantics) and physical function (implementation strategy) is the central point of object oriented programming, as defined and envisioned by Dr. Kay.
A class defines the structure of its instances because it specifies the set of instance variables they will have. A class defines the behavior of its instances because it specifies and implements the method namespace used by its instances to lookup methods in response to messages.
The methods that a class specifies for use by its instances are known as instance methods. The instance methods specified by a class define which methods will be executed in response to messages sent to its instances — and so define the meaning of those messages when sent to any of its instances. By defining the mapping of messages to methods, a class also defines the operational meaning of the instance variables of its instances.
Note, however, that there are OOP languages that don't use classes. The best known such language is Self, which uses objects and methods, but does not use classes. The fact that an OO language can be implemented without classes is rather inconvenient for those who think classes are central to the definition of OO. The truth is that classes and methods are both simply convenient implementation techniques for that which truly is central to OO: message sending. There is an analogy here with Lisp, where s-expressions are simply a convenient implementation technique for that which is truly central to Lisp: the lambda calculus.
A class is also an object. Like any other object, a class is itself an instance of a class — which is called the metaclass of the class. A class is the sole instance of its metaclass. The metaclass of a class named Foo is always referred to as "Foo class." All metaclasses are instances of the class Metaclass. The class Metaclass is an instance of the metaclass (canonically referred to as) "Metaclass class," which is then (recursively) an instance of Metaclass.
Since a class is an object, and is also an instance of a class (the metaclass of the class), each class can have its own methods which can be executed by sending messages to the class. In fact, instances of a class are created by sending it messages.
The methods that are used by a class to respond to messages sent to the class itself (not its instances) are known as class methods. Note that the class methods of a class are one and the same as the instance methods defined by its metaclass — and that the "class instance variables" of a class are one and the same as the instance variables defined by its metaclass.
Variables, Types and Classes
Smalltalk variables have no type constraint syntactically associated with them. Any variable can have any value assigned to it — in other words, the value of a variable can be an object that is an instance of any class (all values are objects).
It should be noted that a Smalltalk class is not a type, although it implements one (or more). A Smalltalk type is defined as the power set of messages to which an object can meaningfully respond — a definition that differs non-trivially from that of the term type as commonly used in most other programming languages. Smalltalk essentially uses what has come to be called duck typing. The author likes to call it "optimistic typing."
Different classes can all implement the same Smalltalk ("duck") type — which is a key ingredient to the extreme polymorphic power of Smalltalk. Unlike a class, a Smalltalk type is not an object — although you can define a class whose instances model a type, and can modify Smalltalk at the metalevel so that classes can inform you of their type (or types) using one or more instances of the type-modelling class you've defined.
It is not correct to say that Smalltalk is untyped, or that it is weakly typed. Smalltalk is strongly typed by means of dynamic typing, instead of by means of static typing. Strong typing requires that type errors be detected and prevented — it does not require that type errors must be detected and prevented statically by a compiler, using syntactic analysis of source code.
The class (and hence the type) of a Smalltalk object is encapsulated as part of the value (internal structure) of an object. The type (or types) of an object is an intrinsic part of the value of an object, and is exclusively determined by the class of the object, and not at all by what variable happens to reference it. To make either the class or the type of an object in any way dependent on the variable that references it is a violation of the encapsulation principle, with consequences that are every bit as serious as any other failure to observe good information hiding protocol. In spite of that hard fact, it is a common feature of "OO" languages to actually allow the exact same "message" to have different semantics (behavior), when sent to the exact same object, depending on the static type constraint of the variable which references the object to which the message is sent. That interpretation of "OO" and "message" statically binds the meaning of a "message" to the variable used to reference an object, and prevents the object itself from having full control over the meaning of the messages it is sent. An object that does not fully control the semantics of the messages it is sent does not fully encapsulate its behavior — hence the violation of encapsulation.
The class (and hence the type) of a value is an essential property of both the input and output data used and produced by a computational process. In other words, the class (and hence the type or types) of objects are just as much a part of the values to be computed dynamically at run time as is any other data involved in a computation. Attempting to statically restrict the set of values that may be involved in a computation, based on syntactic constraints enforced at compile time, not only artificially and unneccesarily reduces the set of valid computations that can be performed, but makes the compiler responsible for a task that should rightfully be done by the programmer.
If the programmer can be trusted to use and produce the right values in the code he writes, then he can be trusted to use and produce values of the right types — since the type of a value is no different than any other aspect of a value. Conversely, if the compiler can rightfully be assigned the task of determining which types are or are not valid, why isn't it also assigned the task of determining the validity of all other aspects of the values to be assigned to variables? Of course, even if the compiler were assigned all such responsibility, the additional constraints that would need to be provided in the code, so that the compiler could enforce those constraints on all aspects of all values, would still have to written by a programmer. There's a reason that imperative code is not written that way: there usually isn't enough information when imperative code is compiled to make such decisions — especially not optimal ones! And that's one reason why mainstream (imperative) languages with static typing tacitly admit the error in their design by permitting programmers to "cast" values from one type to another at run time, thus circumventing the static type system.
Without static type checking, some typing errors will only be detected at runtime, and not at compile time. But catching all type errors at compile time has a cost (relative to relying solely on dynamic typing), and the cost is not worth the benefit. From an engineering perspective, dynamic typing is good enough. The fact that some academics think otherwise is nothing new.
Strong typing requires that type errors be detected and prevented — it does not require that type errors must be detected and prevented statically by a compiler, using syntactic analysis of source code.
There are two self-consistent programming paradigms: 1) imperative programming, where program semantics emerge operationally as a result of behavior that is explicitly specified using imperative commands; and 2) declarative programming, where program behavior emerges operationally as a result of semantics that is explicitly specified using the rules of logic. Static type checking is a poor attempt to mix the two paradigms. Instead of trying to compute correct behavior from explicitly specified semantics, it merely tries to prove whether explicitly specified behavior conforms to constraints on the usage of types and function calls — something that it can only do by preventing correct behavior from being specified, simply because it can't prove that the usage constraints won't be violated dynamically. The "impedence mismatch" caused by static type checking, which is a natural consequence of mixing the two basic programming paradigms, imposes costs that are greater than the benefits.
In a system where behavior is explicitly specified using imperative statements, guaranteeing the semantics of a message (function call) is something that no system of static type constraint checking can provide, period. It's the implementation of the methods (functions) that operationally distinguish the semantics of "fire an employee" from that of "fire a gun." A static type checking system can guarantee that the function "fire" is applicable to an Employee or to a Gun, and can prevent the assignment of a Gun object to a variable whose static type constraint says "Employee." But it cannot guarantee what the semantics of the function (or method) that responds to the message "fire" might be — which is why it's essentially useless, from an engineering perspective.
When strong typing is provided by dynamic typing, the presence of static typing causes more damage than benefit. In practice dynamic typing is a better engineering solution. That's a conclusion that many Smalltalk programmers don't believe initially, but come to appreciate with ever greater certainty the longer they use the language. That's why, in spite of how easy it is to define objects that model or represent types, and how easy it would be to modify the Smalltalk compiler to add static type checking, and despite the fact that serious efforts to do one and/or the other of those things have been expended more than once, neither static type checking, nor reifying types as objects, have ever really caught on in the Smalltalk programming community [3].
Defining Classes
A Smalltalk class is a living object — it is not a static declaration in a text file. A Smalltalk class is not an object created only at "runtime" as an afterthought based on a declarative definition — it is an object that functions as its own specification, even while the program is being written! The object that is the class comes into existence as a result of sending messages as the programmer writes the code (usually, the development tools send the necessary messages, so the programmer does not have to do it directly). In fact, the class object must exist first, before any instance variables can be defined or methods can be "declared." And that's why there is no distinction between "compile time" and "run time."
Because Smalltalk classes function as their own specifications (i.e., models), Smalltalk is intrinsically based on model-driven engineering from design to execution, and from top to bottom. Smalltalk programs model themselves intrinsically, pervasively, comprehensively, completely and down to the core. Introspection/reflection arises as a natural property of the Smalltalk computational model — it does not need to be added as an "extra cost" afterthought. Deep introspection is a natural result of unifying "compile time" with "run time," specifications (models) with their instances, values with objects, and (last but not least) the base level and the meta-level.
Smalltalk programs are built dynamically and incrementally, by sending messages to live objects, which result in the creation of live objects which can themselves be sent messages. When you add, rename or remove the instance variables specified by a class, the effect is immediate: all the existing instances of the class are atomically modified right then and there. There is no waiting until the "program" is recompiled. Such is the value of using live objects as the governing specifications of your system. Smalltalk "programs" are not declaratively specified in flat, static text files!
Introspection/reflection arises as a natural property of the Smalltalk computational model — it does not need to be added as an "extra cost" afterthought.
The following example shows a message that defines (or more likely, redefines) a class named Point as a subclass of the class Object, and also specifies the class's instance variables and category:
Object subclass: #Point
instanceVariableNames: 'x y'
classVariableNames: ''
poolDictionaries: ''
category: 'Graphics-Primitives'
The category of a class has no affect on the behavior of the class or its instances, but does affect how the development environment organizes the class among all the other classes in the class library (in other words, it's an annotation for the benefit of programmers). In the example above, the class is assigned to the category 'Graphics-Primitives'.
Based on the message sent to Object in the example above, instances of Point will have two instance variables, named x and y. Also, the class Point will not have any class variables. It also won't have any shared pool dictionaries (i.e., it doesn't import any namespaces).
Here's a slightly more elaborate example showing a message that defines a subclass of Point named ThreeDPoint , which specifies that ThreeDPoint will have the instance variable z (in addition to x and y, which are inherited from its superclass, Point), and has a class variable named Zero and imports a shared pool dictionary (namespace) named TrigConstants:
Point subclass: #ThreeDPoint
instanceVariableNames: 'z'
classVariableNames: 'Zero'
poolDictionaries: 'TrigConstants'
category: 'Graphics-Primitives'
To add an accessor method and a mutator method for ThreeDPont's instance variable z, we can send the following messages:
"Answer the value of my instance variable z." ^z'
classified: #accessing. ThreeDPoint
'z: newValue
"Set the value of my instance variable z to be that of the argument newValue." z := newValue'
classified: #accessing.
The argument following the keyword #classified: specifies the category of the method being defined. As was the case with the category of a class, the "category" of a method (which is more usually referred in Smalltalk jargon as a method protocol) is simply an annotation to be used by the development environment for organizing methods into groups, for the convenience of programmers.
Messages such as those in the examples above may be sent at any time. Programmers don't usually send such messages directly, however. The development tools do it for them. But when needed, programmers can and do "do it themselves."
Final Thoughts
Notation vs. Turing Equivalence: All programming languages are Turing Equivalent. So why does it matter which programming language one uses? It matters because Turing Equivalence only defines what can be computed, not how quickly or easily the program that performs the computation can be designed, coded, implemented, tested and deployed to production. If you don't think notation matters in that regard, then consider the difference between doing arithmetic using Roman Numerals versus using Arabic Numerals. Ever try doing long division using Roman Numerals?
There's a reason most programs aren't written in assembly language anymore. Differences in the expressive power of the programming notation used do matter.
Smalltalk as a Domain-Specific Meta-Language: Because almost all computation in Smalltalk is invoked and implemented by sending messages, and because the syntax of sending messages is the same regardless of when, where, why or by whom a message is first defined, Smalltalk syntax unifies the language, the class library and the applications written by programmers.
You can add your own control structures — and they will not only work just like any other control structures, they will look like them, too. You can add your own number types — and they will look and act just like those in the base language. You can add your own collection types — and those, too, will look and act just like those in the standard class library.
Smalltalk essentially eliminates any distinction between "built-in" and "programmer defined," and does so more thouroughly than just about any other language — Lisp and Forth would be the only well-known exceptions. Lisp syntax is uniformly based on prefix symmetry. Forth syntax is uniformly based on postfix symmetry. Smalltalk syntax is uniformly based on infix symmetry.
You can add your own control structures — and they will not only work just like any other control structures, they will look like them, too.
Writing a program in Smalltalk essentially defines a domain-specific language — which can then be recursively used by programmers to extend Smalltalk further, with ever richer domain-specific languages. Ultimately, the entire application becomes a single message send which executes a method whose code is written in a high-level domain specific language, and so on down the chain of abstractions until the primitive methods are reached.
It's all just messages, "all the way down."
Messages are Primary: In Smalltalk, messages are "the message" (with apologies to Marshall McLuhan). Messages and their semantics are primary: classes and methods only exist to satisfy the expected semantics of the messages that are sent, and not the other way around. That's why extreme programming and test-driven development both originated in Smalltalk. Both assume that implementation artifacts exist to satisfy the users of those artifacts, that classes and methods exist to satisfy the requirement specification(s) embodied by the application/business logic that uses them. That's why those methodologies have the programmer first write test code, and then implement classes and methods so that the test code satisfies the requirements implied by the messages sent by that code.
In extreme programming, in test-driven development, and in Smalltalk, it's the semantics of messages that matter, and that are primary. Classes and methods are written to conform to the expected semantics of the messages they will be sent — to appropriately respond to the messages sent by applications or business logic. If the code fails, it could just as easily be the fault of the implementation of the objects that are responding (or failing to respond) to the messages, as the fault of the programmer who sent the messages. The compiler is not smart enough to know which is the case — so why expect it to assume that responsibility?
From the Smalltalk perspective, it makes just as much sense for the development environment to prevent the programmer from sending whatever messages he desires as it would for the existing class library (of any programming language) to prevent business users from writing use cases as they wish. Imagine a "use case compiler" rejecting a statement in a use case because there's no such class or method in the existing class library. That would make no sense at all. To someone used to programming in Smalltalk, neither does static typing, and for the same reason: the programmer is the master, and the class library is his servant. The responsibility of the class library is to serve the needs of the programmer; satisfying the constraints of the class library is not the proper function of a programmer.
Of course, both use cases and methods can incorrectly specify system behavior. But static type checking cannot prevent that from happening, because it's not at all equivalent to declaratively specifying the desired semantics, so that the correct behavior can be computed by the system. The behavior of a program must be tested for correctness and acceptability in any case — and the faster the programmer can get the code ready for such testing, the better. Dynamic typing gets that done more effectively.
Without static typing on which to rely, Smalltalk programmers put much more focus on the semantics of messages. The Smalltalk programming culture puts great weight and importance on having well-defined, reliable message semantics. Informally using the semantics of messages as (near) invariants not only provides many of the same benefits as would static typing, it also provides some of the benefits that would ensue from declarative programming. Why? Because a body of code that sends messages (whose semantics are reliably defined) functions, in a sense, as a declarative specification of the desired semantics of a computation — a property of code on which test-driven development relies. Test cases validate that the messages have the expected semantics — which static typing cannot do.
With reliable message semantics (validated and enforced by test cases), methods and classes become nothing more than implementation details — as they should be.
Thus, the key takeaway from this article should be how Smalltalk differs from most other "OOP" languages. The distinction is neither trivial nor impractical. It can profoundly influence how we write software in the future. Smalltalk is OOP "done right [4]."
Use it, don't use it, but learn Smalltalk. To comprehend its underpinnings is to appreciate the full potential of object-oriented programming. And in the process, you may just find how much better it is to use Smalltalk over its chief competitors, e.g., Ruby, Python, Java, C#, C++.
[1] Copyright © 2007 by Alan L. Lovejoy. Refer to the WayBack Machine. Licenced under Creative Commons.
[2] These languages employ a watered-down interpretation of OOP which is much weaker than what you have in Smalltalk. They extend "Abstract Data Types" which is not what Alan Kay had in mind. See: http://www.quora.com/Why-are-C-and-Java-not-considered-as-Object-Oriented-Language-compared-to-the-original-concept-by-Alan-Kay
[3] Squeak Smalltalk has recently added Traits as part of its standard library, which in some ways are analogous to reified types — but the motivation for Traits is not to enable the enforcement of static type constraints at compile time, but rather as a more elegant way to accomplish the same goals that motivate multiple inheritance.
[4] That's a good reason why Smalltalk has directly influenced the design of many other programming languages over the past four decades. These include Objective-C, Python, Java, Ruby, Groovy, Scala, and most recently Dart.


text:
Stephanie Lavau is a Lecturer in Interdisciplinary Environmental Practice. Her research and teaching focus on social and cultural aspects of environment management, knowledge and governance, particularly in relation to ecosystem health, environmental risk, biodiversity conservation, and natural resource management.
Stephanie's research interests include:
- policy-practice relations
- contemporary and historical nature-cultures
- knowledge practices
Stephanie's research is primarily qualitative and ethnographic, and is situated at the intersection of science and technology studies, human geography, and environmental sociology. She has studied sustainable river management in Australia (funded by an APA and CSIRO); the extension of biosecurity policy into food production and environmental management in Britain (funded by ESRC); the socio-technical challenges of biological control for crop protection in Britain (funded by Plymouth University); the role of biological indicators in lay and expert apprehensions of environmental change (funded by ISSR); and community engagement in waterways management (funded by Melbourne Water).
As a member of the Melbourne Waterways Research-Practice Partnership, Stephanie leads Theme 5: community engagement.
Stephanie returned to Australia from the UK in 2016, where she was a Postdoctoral research fellow at the University of Exeter and then a Lecturer in Human Geography at Plymouth University. She has previous professional experience in science communication and science policy in government and not-for-profit organisations.


text:
NOTE: This is a backup copy of our Weinzimmer Families Family Tree Home Page. While our family trees at Rootsweb's WorldConnect project are back online, the rest of our site at Rootsweb is still offline for repair, so we have corrected any otherwise broken links below, leading to our personal site's webpages, so they will take you to archived copies of pages at the Wayback Machine at the Internet Archive.
Find Your Branch
Hints Using the Tree
Go To Tree
|Our Weinzimmer Families Surname Study family tree is an outgrowth of the combined efforts of Weinzimmer researchers around the world. It's starting page is at http://wc.rootsweb.ancestry.com/cgi-bin/igm.cgi?db=weinzimmer and you can always find it easily, even if you do not have it in your favorites or bookmarks, by requesting the Weinzimmer tree at http://worldconnect.rootsweb.com.
Note that not everyone using the Weinzimmer surname or it's common variants is biologically related, so we are not tying the branches together until we have firm proof. In some cases, people needing to escape tzarist Russia bought or borrowed papers, and immigrated under the surname Weinzimer or it's variants, although they were not true Weinzimmers. Write if you want more information about this, we have several confirmed instances of people who faked being a Weinzimmer or Wajncymer, in order to gain access to other countries when they left Poland.
You will find other family trees where some of our disparate branches have been linked together. Before you assume those linkages are accurate, make sure you obtain proof of the relationships. One thing to consider doing, if you are not sure if your Weinzimmer or Wajncymer ancestor was related to Weinzimmers in the other branches, is to have Y-DNA testing performed on a "direct male line" descendant of your Weinzimmer patriarch. Please read our dna results page for more information about DNA testing, and email us to discuss the best way to do this. So far, only one branch has been tested, and we are reticent to claim that Y DNA result as the YDNA for all Weinzimmers without more lines being tested.
Jacob ben Hyman Weinzimmer
Mordechai Eleazer Weinzimmer
Tzi (Harry) Weinzimmer
Yisroel Hirsch Weinzimmer
Zelig Hirsch Weinzimmer
The sections below provide quick links to specific views of the tree and vignettes discussing the major branches of the Weinzimmer Family that we have clearly identified thus far. The connections between these branches are yet to be determined and are a work in progress.
If you know which branch you belong to, you can use these links to take you right to your ancestors' pages. If you do not know which branch you belong to, then you can either go directly to the tree by clicking here, read the section below about how to navigate the tree, which also explains how to find specific people in the tree, or send an email asking for help.
Also, no matter whether you are a member of the Weinzimmer family just wanting to say hello, or someone finding any errors in the narrative or tree or having more information you would like to see added to this narrative, please do email us.
Yisroel Hirsch Family Tree Chart Yisroel Hirsch Descendant Report
Eleazer Dovid Personal Page Ancestor Chart Descendant Report Family Tree Chart
Abraham Zelek Personal Page Ancestor Report Descendant Report Family Tree Chart
Sarah Gitel Personal Page Ancestor Chart Descendant Report Family Tree Chart
Yitchok Labe Personal Page Ancestor Chart Descendant Report Family Tree Chart
Yisroel Hirsch Weinzimmer had at least four children: Eleazer Dovid, Abraham Zelek, Sarah Gitel, and Yitchok Labe. Quite a few of them and their descendants were born in Mishnitz and in Kolno, and many of them immigrated to the United States.
Eleazer Dovid Weinzimmer and his wife Sarah had at least eight children in Poland. Their sons Benjamin, Frank, and Abe migrated to the United States, later changing their surname to Wymor. Their other known children were Yisroel Hirsch, Frumma Tzural, and Channah Drovel.
Abraham Zelek Weinzimmer was born about 1859. He married Sarah Rivke Schwawa and they had at least eight children in Poland, all of whom migrated to the United States, as did their parents. The children of Abraham and Sarah Weinzimmer were Anna, Harry, Jacob, Hymie, Julius, Rose, Benjamin and Florence. Most of their sons changed their surname to Zimmer, and most of the family lived in Cleveland, Ohio.
Sarah Gitel Weinzimmer was born about 1865 and married Abraham Jabeck about 1885. They had at least nine children in New York: Annie, Harry, Bella, Moses, Samuel, Max, Lena, Esther and Ruth.
Yitchok Labe Weinzimmer married Lena Josephenowitz and they had nine children: Meyer, Samuel, Abraham, Morris, Harry, Frumma Esther, David, Anna, and Sara Gittel. Most lived in Cleveland, but some moved or migrated to England, Ireland, Tennessee, Chicago or New York.
If you would like to see which Weinzimmers lived in Cleveland between 1890 and 1923, what they did for a living and which other Weinzimmer family members lived nearby, you might enjoy our transciption page showing the Weinzimmer Cleveland city directory entries for 1890 through 1923.[NOTE: with Rootsweb User Websites still offline, since the Weinzimmer Cleveland City directory page has not been archived at the Wayback Machine, we will try to get a backup copy online and then correct the link.]
Tzvi Weinzimmer Personal Page Ancestor Report Descendant Report Family Tree Chart
Mordecai Weinzimmer Personal Page Ancestor Report Descendant Report Family Tree Chart
We know very little about Mordechai Eleazer and Tzi, except that, according to the work of another researcher, they were apparently brothers. We are considering the possibility that Tzvi, also known as Harry, may be the same as our Yisroel Hirsch, who was known as Yisroel Tzvi and as Israel Harry, but have no firm evidence at this point to support the theory that he was the same man.
Tzvi's daughter Annie Shifra Weinzimmer married and had a family in New York City with Max Goldfarb. Tzvi's daughter Dora Weinzimmer and her husband Hyman Hinnerfeld (aka Inerfeld) also married and had their family in New York City.
Mordechai Eleazer married Rivka Steinberg. Their son David Joseph Weinzimmer was a tailor who was born in Poland about 1861, and married Hannah Chrust. David and Hannah had at least two children in the area of Warsaw before migrating to the United States and having several more children in New York. David Joseph Weinzimmer passed away in New York in 1915 and his wife Hannah passed away in 1945.
Zelig Hirsch Family Tree Chart
|Zelig Hirsch Family Tree Report
Selig Hirsch Weinzimer was a son of Avraham Weinzimer, and was born about 1841 in Poland. He lived in Kolno prior to migrating to the United States in 1891. He lived in New York City and also went by the name Samuel or Selig Waincimer. He had at least five children that we know of who survived to adulthood, and at least two marriages. Many of his descendants migrated to the United States, but some also are now in Israel and Chile. He passed away in Brooklyn, New York in 1922.
Research is still in progress, but it looks like the children of Selig Hirsch's son Meyer Yonkel Wajncymer included Louis M, Abraham, Sara, Sidney, Leah 1, Isidore, Moishe, Chaia Feige, Sima, and Rosa. Rosa and Leah married and went to Chile, Louis, Abraham, Sarah, Sidney and Isidore went to the United States.
Zelig Hirsch Weinzimmer's section of the tree is still under major construction, so if you know more or want more details, please contact me. Less than half of his descendants are online in the tree at this point, and they all will be added once our research is more complete.
Jacob Weinzimer Family Tree Chart
|Jacob Weinzimer Descendant Report
The tailor Jacob Weinzimer was a son of Hyman Weinzimer. Jacob was born about 1839 in Poland, and he migrated to the United States in the 1870's. He had at least two children that we know of, a son Wolf Weinzimer, who was born about 1865, and a daughter Sarah who was born about 1868. He passed away in Manhattan, New York in June 1897.
Jacob Weinzimer's section of the tree is still under major construction, so if you know more or want more details, please contact me. We have several Weinzimers who were born in the late 1800's and whose father's name was Jacob, but are not certain, at this point whether Jacob, the son of Hyman, was the father of them all.
If you already know how to navigate family trees at Rootsweb's World Connect Project, click here to read more about our families and find helpful links to specific views of the tree.
Every page listing people on our tree has (right below the ads at the top) a search box and a list of the letters of the alphabet, which look like the following. You can either click on "List" to get an index listing everyone in the tree, click on a letter to get a list of all surnames starting with that letter, or put a surname into the search box to get a list of the people who have that name, and click "List". Then, once the search results appear, you can click on the name of an individual to view their personal page.
Enter surname OR surname, given to find:
____________________ List Advanced Search
No Surname < A B C D E F G H I J K L M N O P Q R S T U V W X Y Z >
To search for a specific person, enter their surname followed by a comma and their first name, and click "List". Again, once the search results appear, you can click on the name of an individual to view their personal page.
If you do not know if or how someone's surname has been entered into the tree, you can use the "Advanced Search" feature. This is a really cool feature that lets you specify a variety of parameters for your search if you want to see everyone in the tree with a particular given name, from a particular town or with some other characteristic or set of characteristics.
The "Advanced Search" feature also gives you the opportunity to use the "Soundex" or "Metaphone" systems if you only have a sense of what a name sounds like but do not have a definite spelling. I like "Metaphone" because it gives me fewer false hits than the "Soundex" system does.
The above information should be enough to get you started finding who you want in the tree. You can read on, if you want to learn more details about navigating the tree, or you can click here to find quick links to descendency charts and to read more about the families.
Below is an example of what you will see if you click on the letter "W" in the menu. That will give you a list of all surnames starting with "W" in the tree. If you click on a surname appearing on the resulting list of surnames, you then will get a list of the people who have that name. Again, just click on the name of an individual to view their personal page.
In some cases, you will see a plus sign "+" or a question mark "?" after a name. What this means is as follows:
? single question marks have been appended to the surnames (i.e., a last name) of women whose maiden name is unknown
??? multiple question marks at the end of a name indicate that the full name is not clear in the source data
+ plus signs have been appended to given names (i.e., first names) when it is not clear whether the entry represents information belonging to a new person not currently in the tree, or to someone already in the tree - it is an unattached or possible duplicate entry
Please note that the chart below is for illustration, and clicking on it's links may take you to slightly different location in the index as the tree itself gets updated with corrections and more individuals. This list is based on an older version of the tree, so not all spelling variants are shown. For an up to date list, visit the tree itself.
On each individual's personal page, you will also see a menu like the following that will permit you to view a bigger part of the tree. If you click on "Descendancy," you will get a simple outline of a tree showing that individual's spouses, children, and all their children's spouses and descendants and their children.
Index | Descendancy | Register | Download GEDCOM | Add Post-em
If you click on "Register," you will get a report explaining who is in each generation, talking about that individual's parents, spouses, children, and all their children's spouses and descendants and their children.
A menu like the following will appear on Descendancy tree pages. If you click on "Ahnentafel," you will get an explanation of who is in each generation, talking about that individual's parents and spouse or spouses, along with children of ancestors, and all their ancestor's spouses and descendants and their children.
If you click on "Index" in a menu, it will give you a list of people. If you click on "Individual" in a menu, it will give you that individual's personal page, which shows information about their birth, marriage(s), death, along with limited information about their parents, spouses, and children. Again, clicking on any name on the page will take you to a page with more information about the person you have selected.
This is a partial list of the sources used to construct the tree. If you wish to know exactly which sources were used for information on a specific person in the tree, please do \ email me.
Back to Top
Back to Weinzimmer Families Family Tree
How to find a specific person on a page
|NOTE: This home page for the family tree is on a separate genealogy website owned by someone related to Meyer Weinzimmer's wife. You are welcome to browse, but bear in mind that the other pages on this website are devoted to the genealogy of Meyer Weinzimmer's wife and descendants and their relatives.
The Original page at rootsweb which tells about the Weinzimmer Families Family Tree, was last edited October 20, 2014 and it's URL, when it comes back online, will be http://freepages.family.rootsweb.ancestry.com/~thecohens/weinzimmertree.html
This backup copy is at http://thecohens.theunixplace.com/family/weinzimmertree.shtml and was last modified October 21, 2018