Misplaced Pages

GNUstep

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
(Redirected from WindowMaker) Open source widget toolkit and application development tools
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "GNUstep" – news · newspapers · books · scholar · JSTOR (January 2010) (Learn how and when to remove this message)
This article is in list format but may read better as prose. You can help by converting this article, if appropriate. Editing help is available. (January 2012)
This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources.
Find sources: "GNUstep" – news · newspapers · books · scholar · JSTOR (February 2011) (Learn how and when to remove this message)
(Learn how and when to remove this message)
GNUstep
Window Maker and a variety of applications were developed with the GNUstep libraries, including a gomoku game, calculator, and TextEdit.
Developer(s)GNUstep Developers
Stable releasemake 2.9.2, base 1.30.0, gui 0.31.1, back 0.31.0 / June 6, 2024; 6 months ago (2024-06-06)
Preview releaseon the GitHub software repository
Repository
Written inObjective-C
Operating systemCross-platform
TypeWidget toolkit
LicenseGNU General Public License for the applications
GNU Lesser General Public License for the libraries.
Websitegnustep.org

GNUstep is a free software implementation of the Cocoa (formerly OpenStep) Objective-C frameworks, widget toolkit, and application development tools for Unix-like operating systems and Microsoft Windows. It is part of the GNU Project.

GNUstep features a cross-platform, object-oriented IDE. Apart from the default Objective-C interface, GNUstep also has bindings for Java, Ruby, GNU Guile and Scheme. The GNUstep developers track some additions to Apple's Cocoa to remain compatible. The roots of the GNUstep application interface are the same as the roots of Cocoa: NeXTSTEP and OpenStep. GNUstep thus predates Cocoa, which emerged when Apple acquired NeXT's technology and incorporated it into the development of the original Mac OS X, while GNUstep was initially an effort by GNU developers to replicate the technically ambitious NeXTSTEP's programmer-friendly features.

History

GNUstep began when Paul Kunz and others at Stanford Linear Accelerator Center wanted to port HippoDraw from NeXTSTEP to another platform. Instead of rewriting HippoDraw from scratch and reusing only the application design, they decided to rewrite the NeXTSTEP object layer on which the application depended. This was the first version of libobjcX. It enabled them to port HippoDraw to Unix systems running the X Window System without changing a single line of their application source. After the OpenStep specification was released to the public in 1994, they decided to write a new objcX which would adhere to the new APIs. The software would become known as "GNUstep".

Software architecture

Software components of the Linux desktop include the display server, graphics control element libraries, and graphical shells.

The Foundation Kit provides basic classes such as wrapper classes and data structure classes. The Application Kit provides classes oriented around graphical user interface capabilities. GNUstep contains a set of graphical control elements written in the Objective-C programming language.

The graphical user interface (GUI) of GNUMail is composed of graphics control elements. GNUMail has to interact with the windowing system, e.g. X11 or Wayland, and its graphical user interface has to be rendered. GNUstep's backend provides a small set of functions used by the user interface library to interface to the actual windowing system. It also has a rendering engine which emulates common Postscript functions. The package gnustep-back provides the following backends:

  • cairo – default backend using the Cairo 2D graphics library.
  • winlib – default backend on Microsoft Windows systems. Cairo and Windows API variants.
  • art – old (deprecated) backend on unix-like systems. Uses the vector-based PostScript-like 2D graphics library Libart.
  • xlib – old (deprecated) X11 backend.

GNUstep inherits some design principles proposed in OPENSTEP (GNUstep predates Cocoa, but Cocoa is based on OPENSTEP) as well as the Objective-C language.

In addition to the Objective-C interface, some small projects under the GNUstep umbrella implement other APIs from Apple:

  • The Boron library aims to implement the Carbon API. It is very incomplete.
  • The CoreBase library is designed to be compatible with Core Foundation. It is not complete enough for the Base (Foundation Kit) component to simply be a wrapper around it.
  • The QuartzCore library implements Core Animation APIs. The Opal library implements Quartz 2D.

As of February 2020, there are no projects that build the Swift programming language against the GNUstep Objective-C environment.

Applications

Here are some examples of applications written for or ported to GNUstep.

See also: Category:Software that uses GNUstep

Original

Ported from NeXTSTEP, OPENSTEP, or macOS

Forks of GNUstep

See also

References

  1. "GNUstep Developer Tools - RIGS". www.gnustep.org. Retrieved 10 April 2018.
  2. GScheme Archived 2005-12-18 at the Wayback Machine
  3. "GNUstep History". gnustep.made-it.com. Retrieved 10 April 2018.
  4. "Window Maker Live: Cool Retro Look, Even Cooler Performance". LinuxInsider. August 28, 2017.
  5. "The best old-school Linux window managers that still hold up". ZDNET. 1 October 2024.
  6. "GNUstep Objective-C Runtime 2.0". GitHub. Note: Microsoft's WinObjC project contains a friendly fork of this library that includes a work around for the incremental linking issue.

External links

GNU Project
History
Licenses
Software
Contributors
Other topics
List of widget toolkits
Low-level platform-specific
On AmigaOS
On Classic Mac OS, macOS
On Windows
On Unix,
under X11
On BeOS, Haiku
On Android
CLI
Low Level Cross-platform
CLI
C
Java
High-level, platform-specific
On AmigaOS
On Classic Mac OS, macOS
Object Pascal
Objective-C, Swift
C++
CLI
On Windows
CLI
C++
Object Pascal
On Unix,
under X11
On Android
High-level, cross-platform
C
C++
Objective-C
CLI
Adobe Flash
Go
Haskell
Java
JavaScript
Common Lisp
Lua
Pascal
Object Pascal
Perl
PHP
Python
Ruby
Tcl
XML
shell
Dart
Software in the Public Interest
People
Projects
Categories: