Thursday, December 12, 2013

GWorkspace, how to easily mount/unmount volumes

GWorkspace allows for easy mounting and unmounting of volumes (disks, usb sticks, CD-ROMs) like you would do manually on console, without the requirement of daemons or other tools.

Here is how.

First, be sure your underlying operating system is correctly configured to allow you to do that. I'll show as example how I configured my Debian system.

Your current user needs to have the permissions to mount the volume(s), this is usually done by being part of the correct group. For Debian we find cdrom and floppy as ready groups


The predefined mount-point for the cdrom is /mnt/cdrom, since I usually handle with USB sticks I added a mount point for it:

$ ls -l /media/
total 8
lrwxrwxrwx 1 root root    6 Jan  1  1970 cdrom -> cdrom0
drwxr-xr-x 2 root root 4096 Jan  1  1970 cdrom0
drwxr-xr-x 2 root root 4096 Nov 27 14:01 usb

Now, let's add the correct lines to /etc/fstab for our usb entry. The cdrom entry is usually already configured by Debian.

/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/sdb        /media/usb      auto    defaults,users  0       0

I auto shall determine the file system automagically, while users allows for user permissions for the mounted files. You can check if everything is configured fine if you can "mount" from the command line with your current user.

Then open SystemPreferences and configure the managed paths as shown here:

SystemPreferences - Mount points
Configure the mount points for removable media, here I have enabled the cdrom and the usb mount points. The mtab path is currently ignored by GWorkspace, so don't bother and the default value is anyway correct for Linux.

Now, in GWorkspace we can select Check for disks under the Tools menu.
GWorkspace - check for disks
If everything goes well, voilĂ , your volume will get mounted. It will appear on the destkop if you have the Desktop enabled and you can show its content. In any case it shall be visible in the File Viewer in its mount place.

Usb stick contents

If all options are set correctly as suggested, the volume is readable, writable as you can check with the Attributes Inspector. Also we can open the .zip file with Zipper easily.

Zipper and Attributes

To unmount a volume, just drag its icon to the Recycle Bin.

GWorkspace, fixed mount bug on Linux

Fixed a nasty bug (I was using the wrong macro) that was causing GWorkspace not to mount removable volumes (like an USB key) on Linux.

Sunday, November 24, 2013

Graphos supports Cusps!

Since many years, Graphos supports nice-looking and well known bezier-paths. However it always supported, by the design inherited by GDraw, symmetric handles. Since the handle points define the curve's tangent to the control point, there will be no discontinuity. That is, each control point's handles are equal and symmetric, allowing for smooth curves like here:

I added now support for splitting handles and making them a-symmetric, thus being able to draw cusps in a line.

While in path-editing (white arrow) a contextual menu will allow you to choose what kind of type the node is.

To support this new kind of information which is associated with each node, I changed the file format. Paths are now saved as a series of control points with their associated type, instead of the older format that was essential PS data, where each line-to and move-to was described. The latter format split information about each control-point between left-and-right and while more compact, did not allow to add the new information.

Anyway, here the result, left a smooth path, right the same path where the central point has been "split".

Note to self: this will allow to draw Graphos' own logo in Graphos much better. Something to do the next time I'm bored!

Saturday, November 23, 2013

Graphos 0.5 released

The GNUstep Application Project announced a new release of its vector drawing application, Graphos on Oct 15th.

Improved text object and handling, improved selection handling (e.g. for multiple objects that are group selected) and many other bugs. The format is 0.4 compatibile, although text object might be placed differently if loaded from old files, due to the old bug.

Tuesday, September 10, 2013

WindowMaker-style menus in GNUstep?

Did you know it was possible?
I got that question asked more than once!
Or horizontal menus? or Macintosh-style?

Well the obvious way is to install theme enabling this feature. However, you may want to tweak just a certain feature or customize the default look.

Now you need to set a certain default. If you do not want to fiddle with the defaults write NSInterfaceStyleDefault GSWindowMakerInterfaceStyle, then the "Defaults" preference panel will be your friend!
The Panel has been long around a long time! It is easy to enable things. But once you need to set 

I just completed two useful enhancements in System Preferences:

  • New editor type for fixed-list choices, as is the case for the interface styles!
  • All values can have now a localized description!

You can see the new editor in action with WindowMaker style menus which, by the way, are more convenient when using the "stick" pointer instead of a Mouse, as found on ThinkPads and certain other laptops.

Thursday, July 11, 2013

FTP: new features, some polish

I added some long-due functions to FTP, handled by a request dialog
  • Local and Remote Rename
  • Local and Remote New Folder

Furthermore, currently it is boring that after each operation the file lists are not updated.

I thus changed the core representation, fileTable, to be a mutable array and added basic manipultation methods. I will the progressively add provision to update dynamically the list after operations. Right now I worked on delete. The first impact is that the contents of the selection need always be copied before launching an operation, otherwise operations with selections larger than one element may fail or behave wrongly after the first element got processed.

Also, I noticed that FTP lacks a refresh function. Sometimes after years you notice the most basic things! I'll need to implement that.

Friday, June 28, 2013

Graphos: text alignment and other fixes

I finally fixed text alignment in Graphos! It was broken since a long time, perhaps since Graphos 0.1, probably due to the conversion made from GDraw. You had the controls in the editor, but then it didn't draw correctly!

Another long-standing bug was the manipulation of handles of a closed bezier path: the handles inside the path could not be touched. I think this bug existed even in GDraw!

A lot of work then went into restructuring the whole architecture that handles the zooming of the view. previously, everything was recomputed, there was no notion of original size, everything was transformed back and forth on the fly. While quick and easy, this provided serious problems when saving! Furthermore it means that there is data corruption when performing zooms!

Now, the original information is stored inside each object and everything is then calculated for representation. Some zoomed data is pre-calculated, other not. Probably there can be quite some optimization, but first everything needs to be debugged, since this is a quite consistent change. No new format is necessary since previosuly saving with a zooom different from 100% resulted in a broken file anyway.

Thursday, June 27, 2013

Graphos: new path editing

I changed the way selection and editing of paths and objects work in Graphos.

Previously, the program attempted to be smart: the "white" arrow tool would auto-select an object and start editing it. Clicking outside would deselect it.

This behaviour seems smart, but with many objects, with control poitns close together, it could drive you crazy. I thus changed the behaviour, by differentiating the black arrow and the white arrow tools  more:
  • the Black Arrow selects and unselects the whole object
  • the White Arrow selects and modifies control points, but does not change the object selection
  • the White Arrow only selects control points within the current selected object
  • missing a control point with the White Arrow does not deselect the object

This arrangement makes the two tools more orthogonal. It looks perhaps a bit more cumbersome for basic operation, but it ends to be much easier when objects overlap. Especially when using a graphics tabled this makes a huge improvement in my opinion.

And to close, just a drawing to show the current capabilities of Graphos. Making different shades is very easy with the new

Thursday, April 25, 2013

DataBasin: advanced SObject describe

I enhanced DataBasin object's describe. First, I do parse the RecordTypeInfo now, but that was the easy part. returns only the record type ID and name, but programmatically, this is not very useful. The important bit would be the Developer Name of each record type.

I enhanced the results by querying automatically the RecordType table, extracting the Developer Name, matching it through the RT Id and merging back the results, so that the resulting DBSObject has a complete Record Type information, totally transparent.

Sunday, April 21, 2013

Simplifying GWorkspace

I am streamlining GNUstep's Workspace. For many years it had a mode for spatial navigation, inspired essentially from Mac's finder and by GNOME. I personally never felt that it fits well in OpenStep's paradigm. MacOS X incorporated it for legacy reasons of Mac Classic, becasue Apple (sadly) wrote a new Finder instead of using OS's Workspace.
Spatial is good, but I think having a manager which incorporates both philosophies not.

Thus I removed spatial navigation from GWorkspace. Some loyal users perhaps will mourn it, but I want to remember that GWorkspace is just one possible application to implement NSWorkspace, anybody can write a replacement. In fact, I have already plans to write an alternative version, but this will be material for other blog posts.

Monday, April 08, 2013

FTP 0.4

FTP 0.4, the ftp client of the GNUstep Application project, has been released.

This is release has a couple of new features which should make usage a bit cleaner as well as many bug fixes and portability issues. I would recommend the upgrade. Among the many small changes:

  • Reopening connections without restarting FTP is fixed, there were corner cases where this didn't work
  • Better progress report, also for file listings. Indeterminate progress if size is unknown.
  • 64bit and portability fixes. Smaller fixes about corner cases with empty selections and empty files and interface locking.
  • When disconnecting, the remote connection gets cleared.
  • More minor but annoying bugs, like problems with large selections on Cocoa. 

FTP running on NetBSD, Sleek theme applied

Thursday, April 04, 2013

Graphos 0.4

Graphos 0.4 is out!

  • The Text editor now uses the standard font panel 
  • selection improved
  • mouse constraints for boxes and circles
  • undo for pasteboard operations
  • many bug fixes
  • 64bit fixes
Some shapes fun

Tuesday, March 26, 2013

GWorkspace 0.9.2

 pleased to announce the new release of the GNUstep Workspace application.
This is mainly a bug fix, stability and improvement release.
  • updated to current APIs and changes to NSUInteger, NSInteger and CGFloat
  • thanks to the above, improved 64bit support
  • improved BSD support
  • improved localizations and capability to localize better in the future
  • Fix logout timer
  • improved handling of Recycler and other daemons on logout
  • MDKit and MDFinder improvements, although problems on some setups remain
  • TabbedShelf crash fixes
  • memory leaks fixed as detected by the clang static analyzer
Thanks to the many who tested and contributed fixes, first of all Sebastian Reitenbach.

GWorkspace with the Sleek theme

Sunday, March 24, 2013

DataBasin 0.6

DataBasin 0.6 released!
  • Support "." as Semi-Join
  • Select Identify works now with multiple columns (all in AND as condition)
  • Support LIMIT clause in Select Identify
  • Improved Exception catching and display for Select Identify
  • Object Inspector supports selection of items
  • Log window with selectable log level
  • Progress and estimated completion time displayed in Log
  • Remember logins
  • internal API improvement
  • vast 64bit and portability improvements
  • Support count and aggregate queries
Select Identify is now vastly improved. Supporting multiple columns and LIMIT, coupled together with the other improvements of this release, makes it an invaluable tool during support and maintenance of a Salesforce org. How else could you check the status of a lot of objects, say Cases or Accounts?
The object inspector is always handy too.

DataBasin allows you to work with much easier and also from your favourite free OS  using GNUstep like any BSD or GNU/Linux or at need on Solaris or Macintosh.

Many thanks to my colleagues, Claudio and Paolo amongst them, for finding bugs and testing the 9 internal beta releases!

BatMon 0.7

Battery Monitor 0.7 is now available from GAP.
Improved BSD support has been improved, Support for linux on powermac has been added.

Tuesday, March 12, 2013

Cynthiune 1.0.0

Cynthiune 1.0.0 has been released, the Music Player for GNUstep. This is the first of GAP after Wolfgang handed over the source code.

Improved stability, portability, support for big-endian processors. Ported to Windows and Macintosh. Memory leaks and bug fixes. This is definitely a recommended upgrade. Thanks to Wolfgang for the code and Sebastian and Philippe for the long hacking sessions!

Tuesday, March 05, 2013

GNUstep on FreeBSD

I thought it would be fun to share how well GNUstep runs these days. FreeBSD now is a first-quality platform! Stable and not second to Linux at all. NetBSD is close to it too. I try hard that all application maintained by me are not "Linux centric" as most of today's desktops are!


 First a clean desktop. Just the workspace and a terminal. Icon display in a viewer, miller column browser (my favourite) in the other. Transparent dock on the right, showing some running apps and some not.
Battery Monitor in the background and as AppIcon! Now perfectly running on FreeBSD!

IN the development screenshot, we can just admire ProjectCenter with the build panel and a detached editor window. In the background, a GWorkspace file viewer in "details" mode.

Friday, March 01, 2013

BatMon on FreeBSD

I just have improved GNUstep's Battery Monitor support for FreeBSD. It now handles the High state, that is the state where the battery is present and charged and not charging. Furthermore the cases of Missing batteries or a battery in Critical low state are now handled much better.
Check out CVS or wait for the upcoming release!