Sunday, December 28, 2008

Gorm 1.2.8

Noteworthy changes in version 1.2.8

Requires: gnustep-gui-0.16.0. It will not compile without this version of the library. Reason: Nib and Gorm loading were moved to a more sensible file structure. Additionally, Nib loading was refactored.

  • Correction for bug#25001 (Gorm compilation fails with --as-needed linker flag).
  • Correction for bug#25111 (Segmentation fault when switching between items being inspected).
  • Fixes for nib encoding to use the proper template class instances.
  • Changes to use new headers.
  • Sunday, December 21, 2008

    New GNUstep Release

    GNUstep Make 2.0.7, Base 1.18.0, GUI/Back 0.16.0 can be found here.

    Noteworthy changes in Make:
  • New configuration file to set default installation
  • gnustep-make now uses the -no-print-directory flag when invoking make
  • Files make have same name but different extensions (.c and .m)
  • Change in path checking algorithm in and GNUstep.csh
  • Test applications linked against gnustep-gui by default

    Noteworthy changes in Base:
  • Many new OSX 10.5 methods and stubs and general 10.5 compatibility
  • Changes to build on 64bit Windows
  • Support for @synchronize

    Noteworthy changes in GUI:
  • Nib loading refractored and improved.
  • Added support for autosaving in NSDocuments
  • NSWindowController made a subclass of NSResponder
  • NSTokenField and netokenFiledCell classes added.

    Noteworthy changes in Back:
  • Transparent windows implemented in WIN32 backend, better position and scaling of images. General cleanup of code.
  • Monday, December 01, 2008

    Sunday, October 26, 2008

    ProjectCenter 0.5.0 & Gorm 1.2.6

    Changes for ProjectCenter 0.5.0:

  • Added new project types "Framework" and "Resource Set".
  • Implemented on demand loading of bundles (project types, editor).
  • Impemented localization support for projects.
  • Some user interface ehnancements were made (save/restore geometry of subviews in project window splitview, drag and drop for icons).
  • Clicking on .m and .h file in project browser expands to file structure (classes, methods).
  • Incorporated ProjectManager's editor with some modifications. Implemented syntax color highlighting.
  • All windows and panels are now GORM files.
  • Fixes for MingW environment.
  • Support for separate build directory added.

    Changes for Gorm 1.2.6:

  • Corrections to allow Gorm to build and run properly on the Darwin operating system.
  • Corrected sizing of Controls Palette.
  • Added preliminary support for IBPlugin API.
  • Added preferences panel to add plugins dynamically.
  • Moved load/save logic for gorm, gmodel, and nib to plugins. This change should allow plugins for virtually any format to be read/written by Gorm.
  • Correction for bug#24146, bug#23889.
  • Monday, October 20, 2008

    Slackware 12.1 Packages

    As announced by Stefan Bidigaray:

    GNUstep core packages for Slackware 12.1 are now available at:

    Packages List:
    * Make 2.0.6
    * Base 1.16.3
    * GUI 0.14.0
    * Back 0.14.0
    * GWorkspace 0.8.7

    Packages have been built atop a full (minus KDE) Slackware 12.1 installation.

    GNUstep-back is now shipped with both libcairo and libart support. Libcairo is the default backend. Libart can be "turned on" by setting your GSBackend to "art" in your defaults.

    More packages will become available as I run into more time, stay tuned!

    If you run into any problems installing any of these packages, feel free to contact me.

    Thank you,

    Sunday, October 12, 2008

    FLOSS Weekly 44: GNUstep

    Interview with GNUstep developers, Gregory Casamento and Riccardo Mottola. Listen here

    Tuesday, September 30, 2008

    GWorkspace 0.8.7

    Changes in version 0.8.7

    * bugfix in color read of preferences (crash when certains desktop colors were set)
    * portability issue solved with NetBSD
    * fswatcher now is able to auto-close connections when started automatically with --auto, like other system daemons
    * complete rewrite of the configure/make system using recursive configure files. Now the package can finally make a working "make dist" which was used for this release
    * updated appwrappers and new appwrapper for OpenOffice
    * Infopanel now displays information from the plist, allowing thus consistent data easily

    Saturday, July 19, 2008

    MplayerGS 0.6

    MplayerGS is a frontend to Mplayer which was originally a port of Mplayer OSX. However, it has changed since then. Notable changes since the last release are:

    a. Revamped menu structure
    b. Implimented mouse support in dvdnav
    c. More filetypes added

    It can be downloaded at GNUstep FTP

    Tuesday, July 08, 2008

    Sunday, June 22, 2008

    TimeMon 4.1

    TimeMon is a GNUstep-based CPU monitor which sits in the dock. It shows several levels of information, CPU, nice, user and system, in configurable colors.

    Monday, June 16, 2008

    New Release of GNUstep

    New stable release of GNUstep make 2.0.6, base 1.16, gui 0.14, back 0.14.

    By the way, two images for bloggers:

    Wednesday, June 04, 2008

    GNUstep on Ubuntu 8.04

    Install these dependencies:

  • subversion (for downloading GNUstep from svn repository)
  • gobjc
  • libxmu-dev
  • libcairo2-dev (cairo backend)
  • libart-2.0-dev (art backend)
  • libtiff4-dev
  • libgif-dev
  • libssl-dev
  • libgmp3-dev
  • libffcall1-dev
  • libaspell-dev
  • libcupsys2-dev

    GNUstep can be download from official website or svn respository:

    svn co core

    Additional fonts for art backend can be found at Ocean Resources.

    A detailed guide is available for new users. Alternatively, use GNUstep Startup to install GNUstep.

    If there is a problem of environment variables for installing GNUstep with sudo, use `sudo -E` instead.
  • Monday, May 26, 2008

    mySTEP at LinuxTag and get one for yourself !!

    A good chance to see embedded GNUstep on various PDA such as Openmoko Neo 1973 and Acer n30. And grab one with 99 EUR.

    Tuesday, April 22, 2008

    Sunday, April 20, 2008

    Zipper 1.3

    This release consists of two bug fixes:

  • Resolve an issue with 7zip archives on system where only the 7za binary is avaliable
  • The output of unzip changed, causing Zipper to skip the first entry in the zip file
  • Friday, April 04, 2008

    Thursday, April 03, 2008

    Sunday, March 23, 2008

    How to keep your GNOME settings when using WindowMaker

    This article provides a way to keep GNOME settings in WindowMaker. It may partially improve the integration between GNOME and GNUstep.

    Wednesday, March 19, 2008

    GNUstep Renaissance 0.9.0 GUI Framework released!

    GNUstep Renaissance is a Framework for writing GUIs for GNUstep and Apple Cocoa in an open, portable XML format without Interface Builder. From the release notes:

  • Ported to Windows (via GNUstep).
  • Ported to Apple Mac OS X 10.5.
  • Updated to use newer key-value-coding API.
  • Extended and standardized available attributes of many tags.
  • Monday, March 17, 2008

    GNUstep Google Summer of Code 2008

    GNUstep is accepted for Google Summer of Code 2008. Please help update the following wiki pages. It is only TWO weeks away from deadline of applications.

    From: Adam Fedor

    GNustep was accepted as a mentoring organization for 2008 Google SoC! However, that means we have a lot of work to do in the next few weeks. There is barely a week before students are able to submit applications for projects, and only a week after that is the deadline for applications.

    I need help updating the project ideas page:

    Developers and even students interested in SoC are invited to write down project ideas here. The more complete and informative an idea is, the more interesting it will seem to others, so please think a lot about your ideas!

    Also, please sign up if you'd like to be a mentor:


    Sunday, March 09, 2008

    RSS Reader

    There are a few RSS Readers for GNUstep. Ticker is a simple one. When it starts, the Feeds window shows up. Or you also use menu 'Feeds > Administer feed...' to bring it up. In feeds window, you can input a feed and change its appearance, then use menu 'Feeds > Add/Update' to store it. Once it is stored, use menu 'Feeds > Instantiate' to make a window out of it. It will stay on your desktop and cycle through entries of RSS. Menu 'Article' allows you to show all entries, open entry in default web browser, Lynx, etc. You can instantiate as many RSS as you want and arrange each feed as individual window. To open entry in Mozilla, check Ticker website for details.

    Grr is a 3-pane RSS Reader as most of RSS Readers out there. It is currently hosted in Étoilé Project. If you already download Étoilé as previously suggested, you can install RSSKit and Grr in Etoile/Frameworks/RSSKit and Etoile/Services/User/Grr respectively.


    Grr can parse various formats of RSS and Atom. You can subscribe feeds and organize them with categories. RSS can be downloaded with proxy and searched. It can parse limited HTML with reasonable result. That is pretty much you can expect from a standard RSS Reader.

    NewsStand is another RSS reader in Étoilé Project. It is ported from Vienna 2 without fancy user interface and WebKit. You can find it in Etoile/Services/User/NewsStand. It uses the same XML/HTML parser as StepChat. Therefore, you may want to install StepChat first, or at least ETXML inside. It also depends on curl to parse various date format.


    It works more or less the same as Grr. Besides, it allows you to import and export your feeds in OPML format. Smart folder works, so you have a few default ones like 'Unread Articles'. But the interface for editing smart folder is not done yet.

    Frankly, both Grr and NewsStand suffer from stability problems with different reasons. One is written from scratch and has to fight with malformatted RSS. The other one is ported from a Cocoa application and the difference between Cocoa and GNUstep need to be ironed out. It would be nice to have a stable RSS reader for GNUstep.

    Previous articles in this series:

  • Gomoku and Localization in GNUstep
  • Font Manager and GNUstep Backend
  • System Preferences and Theme
  • Ink, a GNUstep text editor, and Services
  • Addresses, a contact manager
  • StepChat, TalkSoup, and Grouch
  • More on Services
  • Image Viewer and Editor
  • PDF Viewer

  • Friday, March 07, 2008

    mySTEP vs iPhone SDK

    mySTEP is an embedded GNUstep framework to develop applications for Linux/X11 based handheld devices. It is a open source project and is under LGPL. It runs on Sharp Zaurus, OpenMoko, Acer n30, etc. See the complete comparison with iPhone SDK for details.

    Thursday, March 06, 2008

    GNUstep on FreeBSD 7.0

    These dependencies can be installed with packages or ports:

  • windowmaker
  • svn
  • ffcall
  • gmake
  • openssl
  • libxslt
  • libart_lgpl
  • cairo
  • libgmp
  • mDNSResponder
  • aspell

    Remember to use gmake instead of make for compilation. The rest is the same as GNUstep on Ubuntu. Although I haven't met any problem, this post may help in some cases.
  • Monday, February 25, 2008

    PDF Viewer

    Vindaloo is a PDF viewer. It is currently maintained by Étoilé Project. If you download the whole Étoilé project as in previous article, you can install the IconKit, PopplerKit and Vindaloo under subdirectory Etoile/Frameworks/IconKit, Etoile/Frameworks/PopplerKit and Etoile/Services/User/Vindaloo respectively. PopplerKit depends on poppler library for PDF rendering.


    Vindaloo comes with basical functionality for a PDF viewer. You can zoom in and zoom out, fit page, width or height, and jump pages. The performance of going through pages are reasonablly good. Although you cannot select text for copy-and-paste, you can search text and the found ones will be rendered with light yellow background. That's pretty much all it does for now.

    Another application to preview PDF is Yap. It is more like a previewer before you print the documents. It uses a2ps to generate PostScript, therefore, you can use it on many formats as long as a2ps supports, including most source codes, html, even LaTeX. You can also view images, but the only way to scale is to use menu 'Resolution' to do limited scaling. An interesting function is that if you select an area of image, that part of image will be automatically copied into pasteboard. Then you can paste it into other applications. You can also use menu 'File > Save pasteboard as TIFF' to save it directly.


    For formats other than images, it uses GhostScript for rendering. For the first time, you should use menu 'Info > Preferences' to set the external tools. Click button Defaults should work for most of people. Use Set to save the preferences. Once you open a PDF document, it shows a row of radio buttons on the top as pages. You can use menu 'Resolution' to adjust scale for viewing. If you have any problem with Yap, it is mostly caused by wrong parameters in a2ps. You can look at your terminal emulator and find the command like this

    /usr/bin/a2ps ("--portrait", "--rows=2", "--columns=2", "-o", "-", "source_code.m")

    These paramters, like portrait, rows, are the same as menu 'Options > Display'. You can either use menu 'Options > Reset' or go through each option to make sure none of them are enabled.

    Previous articles in this series:

  • Gomoku and Localization in GNUstep
  • Font Manager and GNUstep Backend
  • System Preferences and Theme
  • Ink, a GNUstep text editor, and Services
  • Addresses, a contact manager
  • StepChat, TalkSoup, and Grouch
  • More on Services
  • Image Viewer and Editor

  • Thursday, February 21, 2008

    PRICE 0.8.2

    What are the news?
    - selectable method for greyscale conversion (rgb average and luminance of YCrCb)
    - image inversion for both color and greyscale images
    - in the GNUstep version an interface was corrected since it was corrupted and caused crashes

    Tuesday, February 19, 2008

    Image Viewer and Editor

    There are many image viewers for GNUstep. By default, GNUstep supports reading TIFF, GIF, PNG and JPEG formats and writing to TIFF. It also supports image scaling and transformation. So it is relatively easy to write a simple image viewer with GNUstep. Different backends may have slightly different results and performance.

    Preview supports these basic built-in functionalities from GNUstep. You can also drag image to move it around if the image is bigger than the window, though for me, it is quite slow if I do that. It is more usable just to drag the scrollbar. It is a document-based application. So you can view multiple images at the same time.

    PhotoClip is a single-image viewer and scales the image to fit the window by default. It supports image clipping and rotation by 90, 180 or 270 degree with jpegtran, which comes with libjpeg. You can easily view the previous and next image in the same directory. It is an idea application to go through your photo collection in the same directory, view them, do rotation and clipping, then save them.

    PRICE is an image editor with many features. It not only allows you to scale and crop images, but also adjust brightness and contrast, even apply filters, do convolution and Fourier transformation, and trace edge ! While it does not offer preview on some of these filters, it does support undo and redo as a temporary solution. It seems to have issues with image containing alpha layer, but works quite well with the rest. I also have troubles using the convolution, which is the basis of many filters. All these features can be found in manual. Some of these features may require knowledges of image processing, but it is definitely an application with quality and worth to look.

    Cenon is a professional application for vector graphics and desktop publishing (DTP). It can import many formats including PDF and Adobe Illustrator, then export to Cenon, EPS, or DXF (Drawing Interchange Format) format. You can have layers, draw shapes and Bezier paths, add text and paragraph, do text on paths, align objects and do transformation, fill objects with colours or gradients, vectorize pixel images, etc. There are so many features that I would suggest you to read the manual first.


    You need to download Cenon and CenonLibrary, then follow the INSTALL to install it. It is not updated to use GNUstep Makefiles Package 2.0 yet, so there are some warnings during compilation. I still have some random crashes from time to time, but in general, it is quite pleasant to use. Just remember to save frequently. It also supports multiple undo and redo.

    Previous articles in this series:

  • Gomoku and Localization in GNUstep
  • Font Manager and GNUstep Backend
  • System Preferences and Theme
  • Ink, a GNUstep text editor, and Services
  • Addresses, a contact manager
  • StepChat, TalkSoup, and Grouch
  • More on Services

  • Tuesday, February 12, 2008

    More on Services

    In previous article, we introduce Services. This time, we will show some more applications which supports services.


    Affiche is a sticky-note application.


    You can create notes in different colours, change fonts on text and set titles. Notes with titles will show up in menu Windows. These settings can be applied globally in preferences or individually. Text can be imported and exported.


    Once Affiche is installed, you can use service to create new note from any application with text view. In this case, select text in Ink, choose menu 'Services > Affiche > Make Note'. If Affiche is not running, it will launch automatically and make a new note based on selected text. It shows how convenient services are.

    DictionaryReader is another good example. If you downloaded Étoilé project before, it is under Etoile/Services/User/DictionaryReader/.


    It looks up definition with DICT protocol. Although it supports local dictionaries, I had hard time to find a good one. So it may be wise to use the remote servers, which is the default setting. It also provides a service to look up definition of selected text in any application with text view.

    For advanced users, I wrote a small application to use Unix scripts as services. It is inspired by Terminal. Unfortunately, Terminal is not maintained for a long time and does not compile with latest GNUstep. For developers, it is quite easy to fix. You can get ScriptServices by

    svn co ScriptServices

    After installation, you need to run `openapp ScriptServices --update` to update services. You have to do that every time you install new scripts as services. Once services are updated, you should be able to see a Calculate service in Services menu. It calculates your selection with Unix bc and return the result. There are some useful scripts in Examples subdirectory. You just need to copy them to ~/GNUstep/Library/ApplicationSupport/ScriptService/ and run `openapp ScriptServices --update`. For more dtails, see README of ScriptServices.

    ScriptServices is far from perfect. But it makes a point that you can reuse many Unix tools from GNUstep through services. It opens doors for countless applications.

    Previous articles in this series:

  • Gomoku and Localization in GNUstep
  • Font Manager and GNUstep Backend
  • System Preferences and Theme
  • Ink, a GNUstep text editor, and Services
  • Addresses, a contact manager
  • StepChat, TalkSoup, and Grouch

  • Friday, February 08, 2008

    SimpleWebKit Status

    This is the latest status of SimpleWebKit.


  • Loading: 99% (NSURLConnection -> parser)
  • Parser: 99% (HTML 4.0 -> DOM Tree)
  • Evaluator: 90% (DOM Tree -> NSAttributedString)


  • Loading: 100% (handling <script> and <script src="">)
  • Parser: 90% (not well tested for completeness and robustness)
  • Evaluator: 50%
  • Objects: 0%


  • Loading: 100% (handling <style> and <tag style="">)
  • Parser: 0%
  • Evaluator: 0%

    WebView, WebFrame, ...

  • Basics: 100% (interworking of all these classes)
  • Advanced: 70% (not completely working are Forms & Frames)
  • Editing: 0% (not intended)

    For people who know nothing about SimpleWebKit, you can find the official website, news and discussion here and there.
  • Thursday, February 07, 2008

    StepChat, TalkSoup, and Grouch

    StepChat is an instant messenger using Jabber Protocol (or called XMPP). Jabber Protocol is an open source project. Both Google Talk and Apple iChat support it. If you have a Google account, you have a Jabber ID already. StepChat is a part of Étoilé Project. It requires Addresses on GNUstep. It can also run on Mac OS X. To avoid any complication, I suggest you to download the whole Étoilé, which is easier to work with:

    svn co Etoile

    We need a patched Addresses. Go to Etoile/Frameworks/AddressesKit and install it with `make; sudo make install`.

    Now, you should be able to install StepChat under Etoile/Services/User/Jabber.

    For the first time, it will ask your Jabber ID, server, then password.


    It automatically adds the Jabber ID into your contact in the address book. If you didn't set Me in the address book, it will create one for you. You can also check the saved server and password in user defaults:

    defaults read StepChat

    If you input wrong information the first time, StepChat won't let you change it. When that happens, you can fix it by

    1. Manually add your Jabber ID in address book. Cycle through the options of instant messenger for Jabber once ID is input. Remember to set Me with menu "Person > This is me" in AddressManager.

    2. Do `defaults delete StepChat XMPPPasswords` to remove saved password

    3. Manually set server by `defaults write StepChat Servers '{"" =}'`

    4. Note that should be your Jabber ID and should be your Jabber server.

    Since password is deleted, StepChat will ask you again the next you run it.


    StepChat is a standard Jabber client you can expect. You can add more buddies, change status and have chats with many people. There are also some new features like XHTML-IM and vCard support. The text field on the top allows you to input something to be seen by your buddies.

    StepChat has a XMPP framework underneath. It might be useful for other applications to take an advantage of it.

    TalkSoup is an IRC client. During the installation, it may put bundles under root directory as /Library/ApplicationSupport. You need to move the content of it into your GNUstep/Local/Library/ApplicationSupport. Once you can start TalkSoup, choose menu 'Connection > Open Server List...'.


    You can select FreeNode >, click Connect button, then you will be connected to the server. To join GNUstep channel on FreeNode, type `/join GNUstep`:


    Then the GNUstep channel will show on a new tab. Now, you can talk to people and get your questions answered. For more about IRC, you can read this tutorial. TalkSoup uses plugins to expand its functionality. You can include more functions with its preferences (menu Info > Preferences):


    Just drag-and-drop plugins between Loaded and Availabe. Each plugin has detailed description and explanation on how to use it.

    For AIM and ICQ users, there is a Grouch. I don't have an AIM account. So I will just show you a screenshot:

    Previous articles in this series:

  • Gomoku and Localization in GNUstep
  • Font Manager and GNUstep Backend
  • System Preferences and Theme
  • Ink, a GNUstep text editor, and Services
  • Addresses, a contact manager

  • Tuesday, February 05, 2008

    Étoilé Spring Hackathon

    David Chisnall announce:

    Hi Everyone,

    The Computer Science Department here in Swansea has agreed to allow us the use of a room for a hackathon over Easter.

    The date is provisionally the 31st of March to the 3rd of April (let me know if this is a major problem for anyone, and we can try to reschedule).

    The Swansea University campus is situated a short distance from the city centre, between a park and the sea. There are a few nice pubs (including one with real ale and free WiFi) within walking distance, and some nice scenery to explore when people are bored with staring at screens.

    There are direct busses and trains from London airports (trains around £25 in advance or very expensive close to the time, bus around £40) and a number of cheap B&Bs within ten-fifteen minutes walk of the campus.

    Étoilé and GNUstep developers of all levels of experience are welcome. If anyone would be interested in giving a public talk during the hackathon, let me know and I'll organise some publicity.


    Sunday, February 03, 2008

    Addresses, a contact manager

    Addresses is inspired by Apple's Address Book. For regular users, you can use it to organize your contacts locally. Addresses is also used by GNUMail and StepChat, which we will talk about some time later.


    Everything is self-explained. Choose menu "Person > New" to add new person. The plus (+) button on the bottom is a faster way to add group and person. Use button "Edit" to switch between viewing and editing. You can put name, address, phone number, etc. To change a field, say Main Phone to Work Phone, you have to input the phone number first and hit Enter key, then choose the small icon next to the field to cycle through the options. You can also use the small plus and minus icon to add or remove fields. Click on the question mark to add a photo for that person. Contacts can be grouped by drag-and-drop. You can import and export contacts in vCard format, which are used by most of contact managers for data exchange. In the preferences (use menu 'Info > Preferences'), you can decide how to display people's name and address according to the custom of each country.

    Addresses has many potentials to be a great application. It is written to be extendable with plugins. The search functionality is in the Addresses framework already. Developers just need to add the user interface in AddressManager. There is a LDAPAddressBook in subdirectory Goodies to access information on LDAP server. It can potentially allow users to exchange information, even with ZeroConf support in GNUstep.

    Previous articles in this series:

  • Gomoku and Localization in GNUstep
  • Font Manager and GNUstep Backend
  • System Preferences and Theme
  • Ink, a GNUstep text editor, and Services

  • Tuesday, January 29, 2008

    RegexKit 0.6.0

    This release upgrades PCRE to version 7.6, which includes an important security related bugfix. All users are encouraged to upgrade. Other changes include preliminary support for internationalization, returning NSError objects, and the ability to evaluate multiple regular expressions in a collection concurrently on multiple threads, one per CPU.

    GNUstep 2.0 (FHS) Binary Packages for openSUSE 10.2 on i586

    Announcement and Web Page.

    Monday, January 28, 2008

    Ink, a GNUstep text editor, and Services

    Ink is originally written as an example for GNUstep text view and has many latest features. You can get it from svn by execute this:

    svn co Ink


    It can read plain or rich text file. Fonts and colours can be easily changed. To change colours, make a selection of text and drag a colour onto the selection. There is no 'set' button on colour panel. You can have rulers and change positions of tabs. The tab stops seems to only support left alignment for now. To remove a tab stop, click and hold on it, then move it away off the ruler. Your mouse cursor may not follow, but the tab stop will disappear. Undo is working good and supports multiple undoings. Image can be inserted by using menu "Document > Insert File..." or pasted from other applications. Paragraphs can be aligned to left, center or right. You can have spell checking if you set it up correctly. You can also print your document or save it as PostScript file. The results may depend on the backend you use. Cairo backend is supposed to work better in this case. Ink mostly uses standard GNUstep components. So many of these functionalities are also available to other applications using GNUstep text view by default.

    There are other choices of text editors, like TextEdit or Typewriter. They all work more or less the same. I would suggest to stick with Ink for now. For developers, Bean may be a good candidate to port to GNUstep, but you may need to improve GNUstep text system first.

    Ink is also a good example of using Services in GNUstep. This Cocoa document from Apple explains the concept of services. You can download some examples of services by doing this:

    svn co ExamplesService

    After installation, execute `make_services` to update your system services. Now, use Ink to open a document and make a selection. Choose menu Services and you will see all available services. For example, you can change case of selected text. These services are context-sensitive and are only enabled when they can handle the selection of text or images. Services allow you to easily access functions from other applications without switching applications. Many GNUstep applications provide services. We will mention them later. As long as you can make a selection in GNUstep applications, you probably can use services. To conclude this article, LaTeX Service may be worth to take a look. It allows you to type a LaTeX text in any text view and use services to render them as embedded image. Pretty nice.

    Previous articles in this series:

  • Gomoku and Localization in GNUstep
  • Font Manager and GNUstep Backend
  • System Preferences and Theme

  • Wednesday, January 23, 2008


    VolumeManager is basically a GNustep daemon/tool that uses HAL and DBUS to detect newly attached / removed / mounted / unmounted volumes. What does it do further? Well, a GNUstep application can register itself as DO client at VolumeManager and will get notified about such changes and may also use DO to mount/unmount volumes. Moreover, VolumeManager can be configured such that is automatically mounts new data volumes or that it automatically plays audio CDs or DVDs using GNustep services. In addition to the daemon the package contains a plugin to SystemPreferences to configure VolumeManager and it does contain a menulet for Étoilé's menu server that displays mounted volumes and allows to unmount them.

    CDPlayer 0.5

    It is quite a while since last update.

    Monday, January 21, 2008

    System Preferences and Theme

    If you are not a command-line person to use defaults, there is a System Preferences to help you on some of the settings, but not all.


    Some people complain that GNUstep color scheme is too dark. The root of problem is because most monitors are not properly calibrated. Color Scheme allows you to change the scheme as a whole or on individual color. There are three default color schemes to choose.


    Date & Time is for time zone. Find your city and click on it. It is equivalent to

    defaults write NSGlobalDomain NSTimeZone 'MyPlace'.


    You can find the valid name for time zone in GNUstep/System/Library/Libraries/gnustep-base/Versions/1.15/Resources/NSTimeZones/zones. It is quite obvious that System Preferences is easier to use in this case.


    Fonts is the same as what we mentioned in previous article about NSFont and others. A good thing of using System Preferences is that you don't need to guess the font name any more. It does not support NSPreferredFonts, but it is good enough.


    Defaults list all possible settings for GNUstep. You can see the GSBackend as we introduced before. It is quite convenient to know what GNUstep supports and what are the valid values for these settings. User Defaults Summary also explains some of the settings and possible values.


    Modifier Keys map your physical keyboard to modifier key, like Ctrl, Alt and Option. You should read Keyboard Setup to know what Control, Command and Alternative mean. Then how do you know your physical right "Shift" maps to Right Hyper, Right Super or any other choice ? You can start a program xev and try each of your modifier key. You should be able to see something like this:

    KeyRelease event, serial 30, synthetic NO, window 0x3200001,
    root 0x3f, subw 0x0, time 1896953680, (375,276), root:(380,325),
    state 0x40, keycode 115 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

    This is what it prints when I release the left Apple command key. You can tell it is called Super_L in X window. Then it is what System Prerences calls Left Super. You can also use defaults directly. Super_L is the value to used. You can always use this command to see what is in the user defaults:

    defaults read NSGlobalDomain

    Other preferences are mostly used by GWorkspace, which will be talked about some time later.

    It is possible to have different theme of GNUstep. The solution is to install a user bundle to override the default GNUstep drawing. User bundles will be loaded automatically in any GNUstep application. It is specified in user defaults NSAppKitUserBundles. One side effect of this approach is that the user bundle has to be in sync with GNUstep. And bugs in user bundles may affect all of your GNUstep applications. Camaelon is the first one to support theme on GNUstep. You can download it from Étoilé project:

    svn co Camaelon

    Once installed, it will be under your GNUstep/System/Library/Bundles/Camaelon.themeEngine.

    Then add the full path of Camaelon bundle in user defaults:

    defaults write NSGlobalDomain NSAppKitUserBundles '( "/usr/local/GNUstep/System/Library/Bundles/Camaelon.themeEngine" )'

    Next time you start any GNUstep application, it may look like this:


    And this is the default GNUstep theme:


    GNUstep is still under development and Camaelon is not actively developed recently. So your milage may vary. Another theme engine is Narcissus. After installed, add its full path into user defaults:

    defaults write NSGlobalDomain GSAppKitUserBundles '("/usr/local/GNUstep/Local/Library/Bundles/Narcissus.themeEngine")'

    Note that Narcissus is installed in Local by default. And this is a screenshot of it:


    Narcissus is written more recently and its source codes may be more cleaner than Camaelon, but it is still in early stage and is less tested. Camaelon starts as an experiment to support theme on GNUstep and some of these methods are incorporated in GNUstep later. With recent changes in GNUstep, it may need some updates. Again, any change in GNUstep may affect these theme engines. If your GNUstep application has weird behaviors, you can remove the theme in user defaults by

    defaults delete NSGlobalDomain NSAppKitUserBundles

    It will fall back to default GNUstep theme.

    Previous articles in this series:

  • Gomoku and Localization in GNUstep
  • Font Manager and GNUstep Backend

  • Saturday, January 19, 2008

    SimpleAgenda 0.36

    See announcement for details:
    * Calendar UI changes : to reduce calendar size, use different visual hints. Today has a yellow background (unchanged), the selected day cell is bezeled/pushed (was a bold font) and busy days use a bold font (instead of a tick mark). Always show six weeks with black text for the chosen month and white text for the previous and next ones. Use a defined font size so that it all fits whatever the user choose as a default size.
    * Day view : circle through appointments with TAB and edit the selected one with enter
    * Day view : no more appointments overlapping. The algorithm is not 100% correct, we might want to change that in the future
    * Change license for future GNUstep GPLv3 release compatibility Thanks to Yavor Doganov for pointing out the issue.
    * Use ETags to prevent overwriting distant modifications
    * Add a menu item to force agendas to reload their data
    * Bug fixes and various improvements
    * Experimental GroupDAV support : some things work but use with care. Feedback appreciated

    Thursday, January 17, 2008

    Font Manager and GNUstep Backend

    Since a few font-related things were brought up in the previous article, there is a GNUstep application, Font Manager, to view installed fonts in the system. To download it from svn, execute this:

    svn co FontManager

    You can see a list of fonts in the system and preview text with different fonts, sizes and colours. Different styles of the same font is grouped together. It is quite convenient to see them all and pick the good ones to use. Then where is the font name to be used in user defaults of NSFont and NSPreferredFonts as in previous article ? To know the answer, you need to know which GNUstep backend you are using.

    GNUstep provides different backends to draw text and graphics. The default one is art backend and the alternative one is cairo backend. If you install GNUstep without knowing anything about backend, you probably have art backend. By default, you will see only one font in Font Manager, Helvetica, unless you install extra ones as in previous article. Art backend use nfont package as discussed here. If you look into nfont package, you will find a file FontInfo.plist. For each style (face) of font, there is a corresponding PostScriptName. This PostScriptName is the name you will use in NSFont and NSPreferredFonts.

    Cairo backend use fontconfig instead of nfont package. In this way, it shares fonts with X window. The font name to use in user defaults is less obvious. You can try the name listed under Fonts in Font Manager or the name in the preview panel on the most right. The rule of thumb is that if you want to use normal font, do not add Roman in font name. If you do want bold or italic font, you should use the name on the preview panel containing Bold, Italic, or others.

    To show the difference, this is the screenshot from art backend:


    And this is from cairo backend:


    While cairo backend handles graphics better, art backend does supports ligature nicely.

    For advanced users, you can switch between backends easily. As mentioned in INSTALL of gnustep-back, you can install art backend and cairo backend side-by-side:

    ./configure --enable-graphics=art --with-name=art; make; sudo make install

    ./configure --enable-graphics=cairo --with-name=cairo; make; sudo make install

    Then you can select backend with

    defaults write NSGlobalDomain GSBackend libgnustep-cairo


    defaults write NSGlobalDomain GSBackend libgnustep-art

    If you specify fonts for NSFont or NSPreferredFonts, remember that these two backends may use different font name. Therefore, you may get warnings about missing font when you switch from one backend to another.

    Font Manager works on both Mac OS X (Cocoa) and GNUstep. It plans to support font enable and disable. It may be challenging because Cocoa, art backend and cairo backend all use different mechanism to manage fonts.

    Previous articles in this series:

  • Gomoku and Localization in GNUstep

  • Wednesday, January 16, 2008

    Sunday, January 13, 2008

    Gomoku and Localization in GNUstep

    This is the first post of a series of articles about GNUstep applications. The purpose is to introduce useful GNUstep applications to regular users and provides some tips. These applications can be used on daily basis, though it doesn't mean they are perfect or bug-free. Any problem should be reported to the original authors or in GNUstep maillist.

    Gomoku is an extended TicTacToe game for GNUstep. It is small and fun to play. You first click on the board to put a white piece, then try to have 5 white pieces adjacent to each other horizontally, vertically or diagonally like this:


    If you think it is too easy, you can increase the difficulty under Info menu:


    Now, computer seems very smart:


    You can also increase the size of board by executing it with the size of board like this:

    openapp ./ 10

    The size must be bigger than 8.

    Gomoku is a good example to test internationalization (i18n) and localization (i10n) in GNUstep because it is small and simple to do so. It is already localized in 9 languages and you should have no problem using it with your native language. In some cases, depending on your system, you may have some difficulties to see your native language. This article summarizes the steps to take for art backend. Here shows another example in cairo backend. The steps are mostly identical.

    GNUstep is smart enough to guess your language, Execute `echo $LANG` or `echo $LC_CTYPE` to know your locale. In my case, it is en_US.UTF8. So my system is in UTF8 encoding and uses English. If I decide to use German in Gomoku, I have to specify the language in user defaults by executing

    defaults write NSGlobalDomain NSLanguages "(German, English)"

    It tells GNUstep to find the German localization first, then English. Unfortunately, it is not enough for me. The German localization is in different encoding than mine (UTF8). I guess it is in ISO 8859-1 encoding. So I set an environment variable GNUSTEP_STRING_ENCODING like this:

    export GNUSTEP_STRING_ENCODING=NSISOLatin1StringEncoding

    Now, the menu is in German:


    Note both NSLanguages and GNUSTEP_STRING_ENCODING affect all GNUstep applications.

    If I want to go further to use Traditional Chinese, the default font of GNUstep may not have Chinese characters in it. So I need to specify the default font by doing this:

    defaults write NSGlobalDomain NSFont "AR PL ShanHeiSun Uni"

    And select the language and encoding:

    defaults write NSGlobalDomain NSLanguages "(TraditionalChinese, English)"


    Now, it shows Chinese:


    If you work on many languages and specifying a single font for NSFont doesn't suit you, you can try NSPreferredFonts, but it only works on art backend. First, you can download pre-packed fonts from Étoilé Project. Look for etoile-default-fonts.tar.gz. Unpack and move the nfont package (.nfont) into your ~/GNUstep/Library/Fonts/ or in the system GNUstep/System/Library/Fonts/. Then specify the preferred fonts:

    defaults delete NSGlobalDomain NSFont

    defaults write NSGlobalDomain NSPreferredFonts '("ShanHeiSun-Uni")'

    In this way, GNUstep will try to use the preferred fonts if it cannot find the glyphs in the default font. Again, it only works for art backend for now. If you do not specify NSPreferredFonts, GNUstep will go through all of your fonts to find the glyphs, It may pick up the font you don't like. So it is better to specify the NSPreferredFonts.

    For developers who wants to support NSPreferredFonts in cairo backend, try to implement -coveredCharacterSet and -numberOfGlyphs in back/Source/cairo/CairoFontInfo.m. You can use back/Source/art/ftfont.m as a reference.

    Monday, January 07, 2008

    Thursday, January 03, 2008

    GNUstep Packages for Slackware 12.0

    There are packages for both stable and unstable releases of GNUstep.