A little "hard play" with squeak reveals an extensive preference system. Many... of Squeak's visual and mouse/keyboard behavior characteristics can be changed in ways that lesser environments cannot conceive of, let alone do.
There are several ways to access the magic. Some of them include the preference browser, external packages, and scripting. If you are new to Squeak, you should start with the preferences browser. Is you feel more comfortable, move on to external packages and scripting.
A Fresh Squeak image has several flaps around the edges of the world. The tools flap on the right side of the world includes a vertical looking Preferences browser. If ou drag it out into the world, you will find some very useful instructions and a search box. The top darker cyan part of the browser is a very... wrapped menu of various preference categories. Clicking them reveals assorted lists OF preferences that can be easily manipulated. The baloon help provides useful information about preferences you have your mouse form over. You can interactively change most of the Squeak preferences except for fonts and colors. Those can be set through the World | Appearance menu. Access the world menu by left clicking anywhere you can see the world desktop.
The Squeak community has developed an extensive repository of enhancements and extensions located on SqueakMap. You can find everything from simple menu and morph enhancements like ShrinkingSelection (Standard in Squeak 3.7) to major overhauls like Personalizing the environment: Making Squeak your own. See the Publishing Packages with SqueakMap page for more information on using SqueakMap.
By scripting I mean everything from a collection of instructions in a workspace to creating your own extensive Morphic/MVC modifications.
When I bring in a new image, I want it to customize it in a hurry so I can get back to creating. I use a preferences workspace and file in a special change set or two. I do it this way because it is much faster and less prone to typing errors.
If you study the class side of the Preferences class, you will find a very useful set of methods for directly setting just about any preferences. I find that I like a particular set of colors for the various windows. I also like scroll bars on the right that tend to stick around so I can find them. So, my preferences workspace includes the lines:
Preferences disable: #alternativeScrollbarLook; disable: #menuColorFromWorld; enable: #scrollBarsNarrow; disable: #roundedWindowCorners; disable: #roundedMenuCorners; enable: #hiddenScrollBars; enable: #inboardScrollbars; enable: #scrollBarsOnRight; " after loading Diego's look enhancements " disable: #menuAppearance3d; " after loading *58* " " 3.7 includes this as a standard feature " enable: #selectionsMayShrink; enable: #wordStyleCursorMovement.
enable: #preferenceNamesets that preference to true.
disable: #preferenceNamesets that preference to false.
Some color aspects of squeak have special names, Here are some examples.
Preferences desktopColor: ( Color r: 0.9 g: 0.92 b: 0.99 ); insertionPointColor: ( Color r: 1.00 g: 0.55 b: 0.0 ); keyboardFocusColor: ( Color r: 0.7 g: 0.75 b: 0.99 ); textHighlightColor: ( Color r: 0.75 g: 0.95 b: 0.65).
I have not met two people who agree on what constitues a perfect color scheme. So, treat these choices as an example and have fun making the specific colors your own.
Now to the menus; I tend to adjust them to be easy for me to read. I find the "star"nix sand/earth thing works, so:
Preferences setParameter: #menuColor to: ( Color r: 0.98 g: 0.94 b: 0.81 ); setParameter: #menuTitleColor to: ( Color r: 0.90 g: 0.88 b: 0.71 ); setParameter: #menuBorderColor to: ( Color r: 0.30 g: 0.27 b: 0.11 ); setParameter: #menuLineLowerColor to: ( Color r: 0.30 g: 0.27 b: 0.11 ); setParameter: #menuLineUpperColor to: ( Color r: 0.40 g: 0.37 b: 0.21 ); setParameter: #menuTitleBorderColor to: ( Color r: 0.30 g: 0.27 b: 0.11 ); setParameter: #menuLineColor to: ( Color r: 0.30 g: 0.27 b: 0.11 ).
setParameter: #aParameterName to: aValuecan be used to set any known parameter in the Parameters to any value. Be careful and have fun./P
( Preferences parameterAt: #windowColors )
at: #FileList put: ( Color white )
The
#windowColorsvalue is a keyed collection of colors.