A small desktop video player example application implemented in Objective-C and built with GNUstep/Gorm.
This repository contains the source, interface definition, and build files for a simple VideoPlayer demo app. It's intended as an example or starting point for building GNUStep/Cocoa-style desktop apps that present a GUI (designed with Gorm) and provide basic video playback functionality.
- Objective-C source for app controller and main entry point (
AppController.h/.m,VideoPlayer_main.m). - Gorm UI resources in
Resources/VideoPlayer.gorm(interface builder files generated by Gorm). - GNUstep-style build using the included
GNUmakefile. - Closing the video window stops video and audio playback and clears the time and position controls. Opening another video reuses the window and preserves volume and mute settings.
- GNUstep toolchain (gnustep-make, gnustep-base, gnustep-gui). On macOS you can install GNUstep via Homebrew or your package manager.
- A working video backend / codecs on your system. Playback relies on whatever multimedia frameworks are available to the platform; if some formats fail you may need to install additional codec support (ffmpeg, GStreamer, etc.).
- Install GNUstep (follow the official instructions at https://www.gnustep.org/).
- Source the GNUstep environment script from your installation so make knows where to find GNUstep makefiles. Common locations include:
# Example
. /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh- Build the project:
make- Run the app. Depending on the makefile and platform this repository may build an application bundle (e.g.
VideoPlayer.app) or a runnable binary. Try one of:
# If an .app bundle was created
gopen ./VideoPlayer.app
# Or run the binary produced by the build (if present)
./VideoPlayer.app/VideoPlayerIf make fails, inspect the GNUmakefile output for missing GNUstep dependencies or incorrect GNUstep environment setup.
Run make check to run the playback tests (requires Clang, FFmpeg with libx264, Xvfb, and a working audio output). The tests check repeated video changes with audio and silent movies, playback controls, closing and reopening the video window, and stopping a slow file reader before reusing its decoder. A failed test causes make check to fail.
Video changes reuse the existing movie view to avoid overlapping audio backends and preserve control connections, volume, and mute settings.
AppController.h/AppController.m— main Objective-C class that manages the user interface and player logic.VideoPlayer_main.m— application entry point (main).Resources/VideoPlayer.gorm/— Gorm (Interface Builder) files describing windows and UI objects.VideoPlayerInfo.plist— application info property list.GNUmakefile,GNUmakefile.preamble,GNUmakefile.postamble— GNUstep build files used bymake.VideoPlayer.pcproj/— ProjectCenter project metadata (optional, for editing in ProjectCenter).
- "Undefined symbols" or missing headers during build: ensure you sourced the correct
GNUstep.shand installedgnustep-make,gnustep-baseandgnustep-gui. - App launches but video won't play: confirm your system has appropriate codecs. Try installing
ffmpegor a GStreamer backend if available for your platform. - If the UI doesn't appear correctly, open
Resources/VideoPlayer.gormwith Gorm or inspectAppController.mto see how UI objects are connected.
Small fixes, documentation updates, and bug reports are welcome. If you add features please document build/runtime requirements and update this README.
This repository does not include a license file. Add a LICENSE or LICENSE.md to clarify usage and contribution terms.