Vala - Documentation
Contents
Documentation
We're still working on documenting the whole language. The current draft can be found at http://www.vala-project.org/doc/vala/
There is also a more complete but less checked draft in the wiki at Manual. This version covers most of the language and is heavily annotated, but may contain mistakes.
Valadoc Online API Documentation - Browse packages and classes
Tutorials
If you want some tips before start hacking in Vala, take a tutorial and see what you can do with this.
GTK+ Kick Start Tutorial for Vala (Screencast)
The Vala Guide (A work in progress.)
Note that you need to install some common development tools and libraries - as described here - to be able to use vala.
If you find any mistakes in the tutorials please feel free to correct them.
Genie
Genie is another programming language supported by the Vala compiler with a syntax closer to Python.
Bindings
Bindings Overview - Vala bindings and their maintainers.
External Bindings - Bindings that are not or not yet distributed with Vala can be added to this page.
Vala and GObject Introspection - write in Vala and use from Ruby, Python, Lua, JavaScript and other languages.
Other Resources
Vala Journal - A periodic summary of what is going on around the Vala programming language
GNOME Journal article: Writing Multimedia Applications with Vala
Synchronization in Vala - Yorba blog posting
Interfaces in Vala - Yorba blog posting
Current Status
Sample Code
If you have trouble compiling an example try the latest release of Vala. Some distributions ship with older versions of Vala which may lack some features. Also make sure that the respective libraries are installed along with their header files (e.g. *-devel packages on RedHat/Fedora/SuSE, *-dev packages on Debian/Ubuntu).
- Language Feature and Introductory Samples
- Basics: Collections, Files, I/O, Networking, IPC
Gee Samples (Collections: lists, sets, maps, iterables)
GIO Samples (Input/Output, file operations)
GIO Compression Sample (Inflating/deflating files)
GIO Settings Sample (Application settings)
GIO Networking Sample (Network socket communication)
Soup Sample (HTTP client / server)
D-Bus Basic Client/Server Samples (Inter-process communication)
D-Bus Client Samples (some "real world" D-Bus client examples)
Async Method Samples (using Vala's special syntax for async methods)
- GUI Programming
GTK+ Samples (GUI toolkit)
GDL Sample (Docking widgets)
Mx Samples (MeeGo netbook UX toolkit)
WebKit Sample (Embeddable web browser engine)
StatusIcon Sample (Showing icons in the systray/notification area)
- Multimedia and Graphics
GStreamer Samples (Multimedia: Audio, Video)
Cairo Sample (2D vector graphics)
Clutter Sample (Animation framework)
Pango Sample (Font rendering)
Poppler Sample (PDF rendering)
SDL Sample (Full screen graphics and game programming)
OpenGL Samples (2D and 3D graphics)
PulseAudio Samples (Audio playback)
- GNOME Platform
Gnome-Desktop and GMenu Sample (Inspecting the application menu)
- GLib Samples
MarkupParser Sample (Parsing simple XML files)
Plugin Sample (Loading modules at runtime)
Threading Samples (Concurrency and Synchronization)
- Database Access
- Other
Curses Sample (Terminal control library)
GSL Samples (Numerical calculations)
Loudmouth Sample (Jabber instant messaging)
Lua Sample (Scripting)
Tiff Sample (Image loading/saving)
Shared Library Sample and how to call Vala code using GObject introspection
Deprecated Samples (Examples using deprecated libraries such as GNOME 2 panel applets)
More code samples on http://code.valaide.org/
Unofficial vala tutorials on http://www.ohloh.net/p/vala-tutorials
Projects Developed in Vala
Vala Specific
Gee - Collection Library
Valadoc - Documentation generator for generating API documentation from Vala source code.
Valadate - Unit Testing Framework
gtkaml - An Application Markup Language for GTK+/Vala.
Vala Benchmarks - Compare Vala versus others languages à la http://shootout.alioth.debian.org/.
libmodulo - Dependency Injection / Inversion of Control
Sampala - A sample Vala application demonstrating Autotools and i18n
Valag - Vala Graphviz code tree and control flow graph generator
ValaSwig - Vapi to Swig interface translator to create bindings for python, perl, ruby,.. from a vapi description.
Maja - Vala to Javascript compiler.
Applications / Applets / Other Projects
Abraca - A GTK+ XMMS2 client.
AllTray - A program for docking software to the system tray/notification area.
Blitzen - An application server that let you write web applications in Vala using a GTK-like API.
Caméléon - Easy file converter.
Catalina - A library which provides on the fly storage for your GObjects.
Cheese - Cheese is an application that takes photos and videos from your webcam.
Commandeer - A sysadmin tool to lock the desktop while a command runs.
Cornucopia - Freesmartphone.org services middleware for mobile devices (2nd incarnation).
Cronopete - A backup utility, which aims to be a clone of Apple's Time Machine.
dconf editor - The dconf configuration editor
Déjà Dup - A backup utility.
Diodon - GTK+ clipboard manager.
DSync - Directory Sync - simple rsync frontend for Maemo and GNOME
DVB Daemon - Daemon to setup your DVB devices, record and watch TV shows and browse EPG.
Ease - Presentation authoring tool for the GNOME desktop.
elementary OS - Vala is the language of choice for elementary OS.
Epris music player - A D-Bus service and command line client to listen to music. Unlike xmms2 or mpd, it uses GStreamer and D-Bus.
Fillmore - A multitrack audio recorder/editor based on GStreamer and Gnonlin.
Final Page - A tool to reorganize, split and merge PDF documents.
Folks - A library that aggregates people from multiple sources to create metacontacts.
geary - An email client application.
glChess - Chess game
Global Menu - A globally-shared menu bar for GNOME.
Gnome Encfs Manager - A manager and mounter for EncFS stashes.
Gnome media applet - A GNOME applet to simply mount/umount removable media.
Gnome Pie - A visual application launcher for the Gnome Desktop.
GNOME Scan - A scan library for GNOME.
gnome-format - A simple formatting tool.
GtkMateView - A syntax highlighting text editing widget.
Gwibber - Microblogging client
Hum - A lightweight music player built on DBus, Tracker, and GStreamer.
i4uc - An IDE for micro-controllers.
LaTeXila - An integrated LaTeX environment.
lekhonee-gnome - A desktop client for Wordpress.
libvfcgi - FastCGI library for GObject/Vala.
Lingo - A dictionary application.
Listaller - A distro-agnostic application management and software installation tool based on PackageKit.
Lombard - A video editor based on GStreamer and Gnonlin.
Lucruri - Todo list and note taking application.
Marlin - The sexiest fish in the large sea of file-browsers
Meiga - Light and easy content server for your desktop.
Mipsdis - MIPS32 disassembler for stripped ELF (without section tables)
moserial - A serial terminal for the GNOME desktop.
MPRIS Applet - MPRIS client panel applet/plugin for GNOME and Xfce.
Multiplication Puzzle - A puzzle game.
Mutiara - A motif designer based on fractals.
OMAP Media Apps - GStreamer and GTK+ based applications for the OMAP platform, written in Genie.
Paldo Installer - Installer for the Paldo Linux Distro.
Pasang Emas - Traditional board game of Brunei.
PDF Presenter Console - A Keynote like multi monitor "Presenter Console" using PDF as input.
People Project - Aims at providing an unified access to contacts for desktop applications.
Pino - A Twitter client.
Plank - The world's simplest dock.
Postler - ultra simple desktop mail client
Presence - A bi-directional audio/video transmission tool.
radare - Multi-architecture assembly code graph in Vala-Cairo.
RhythmPnP - Rhythmbox Universal Plug'N'Play Media Renderer Plugin
Rygel - A UPnP MediaServer for GNOME (Mobile).
Scratchpad - Spatial text editor for the GNOME desktop.
Shishen Sho Mahjongg for Gtk and Maemo - A board game similar to Mahjong.
Shotwell - A photo organizer.
Simple Scan - Scanner application
Spek - An acoustic spectrum analyser.
Steadyflow - A simple download manager.
Switchboard - Modular desktop settings hub.
Synapse - A semantic file launcher
systemd - Graphical frontend for the systemd system and service manager.
Tuntun - A panel applet to control the OpenVPN daemon.
Unity - A lightweight netbook interface for Ubuntu.
Unity Greeter - Login theme for Unity
Vala - The Vala compiler itself is written in Vala.
ValaTerm - A lightweight terminal emulator.
Vala Terminal - A lightweight terminal based on VTE.
Valence - A simple PDF viewer.
Vinagre - A VNC Client for the GNOME Desktop. Parts of Vinagre is written in Vala.
Watray - A general purpose IDE.
Xfmpc - A small MPD client.
Xfce4 Notes Plugin - A quick-to-scribble notes application.
Xfce4 Stopwatch Plugin - A plugin for the panel that keeps track of elapsed time
Xnoise - A media player.
vala-vapis - A collection of unofficial vapis and example files (0.1 released)
Valum - Web framework for Vala. Inspired by sinatra and allows lua scripting.
gst-plugins-cl - An OpenCL plugin for gstreamer written in vala.