Chapter 3: Understanding the Vala Language and Programming with Vala on Ubuntu

Chapter 3: Understanding the Vala Language and Programming with Vala on Ubuntu in Visual Studio Code

3.1 Introduction

In this chapter, we will delve into the Vala programming language, a powerful tool designed for the GNOME desktop environment. We will explore its syntax, features, and how it integrates with GTK 3.0+ for creating desktop applications. Additionally, we will discuss how to effectively use Vala in Visual Studio Code on Ubuntu, providing you with the skills to start your journey in Vala programming.

3.2 What is Vala?

Vala is a modern programming language that aims to bring together the high-level convenience of languages like Java and C# with the performance and control of C. Designed specifically for GNOME, Vala has a syntax similar to C#, but it compiles to C, making it inherently fast and efficient.

Key Features of Vala:

Object-Oriented: Vala is fundamentally object-oriented, supporting features like inheritance, interfaces, and polymorphism.

Memory Management: Vala uses the GObject system for reference counting, freeing developers from manual memory management without the overhead of a garbage collector.

C Integration: Vala is designed to interoperate seamlessly with C libraries, especially GObject-based libraries like GTK.

Modern Constructs: Vala includes modern language constructs like lambda expressions, signals, and properties.

3.3 Setting Up Vala in Visual Studio Code

You've already set up your Ubuntu environment for Vala development in Visual Studio Code in the previous chapter. Now, let's understand how to make the best use of this setup for Vala programming.

IntelliSense and Autocompletion

The Vala Code extension in VS Code provides IntelliSense, making it easier to write code with automatic suggestions and documentation.

As you type, VS Code will suggest methods, properties, and more, significantly speeding up your coding process.

Code Snippets

Use code snippets to quickly scaffold common code structures in Vala, like classes, methods, or control structures.

Type a snippet prefix (like class) and press Tab to expand it into a template.


While Vala doesn’t have direct debugging support in VS Code, you can debug the generated C code.

Set up a C debugging environment in VS Code to step through the compiled code.

3.4 Writing Your First Vala Program

Let's create a basic Vala program to understand its syntax and features:

Create a New Vala File

In VS Code, create a new file and save it as sample.vala.

Basic Vala Program Structure

Write a simple program, such as a "Hello World" example:

void main() {

  print("Hello, World!\n");


Compile and Run

Use the build task set up in the previous chapter to compile this program.

Run the executable in the terminal to see the output.

3.5 Exploring Vala Syntax

Vala’s syntax is similar to C#, making it familiar to many programmers. Here are some key aspects:

Classes and Objects: Vala is object-oriented. You can define classes, create objects, and use inheritance.

Signals and Properties: Signals are a way of implementing the Observer pattern. Properties in Vala can have default, custom getters and setters.

Generics: Vala supports generics, allowing you to create classes and methods with placeholder types.

Lambdas and Closures: Vala supports lambda expressions and closures, making it easier to write concise code for callbacks and event handlers.

3.6 Integrating Vala with GTK 3.0+

Vala works seamlessly with GTK 3.0+, allowing you to build GUI applications effectively:

Creating Windows and Widgets: Use Vala to instantiate GTK windows, buttons, labels, and other widgets.

Event Handling: Connect signals to widget events, such as button clicks or window close actions.

Styling and Theming: Utilize GTK’s theming capabilities to style your applications.

3.7 Conclusion

This chapter provided an overview of the Vala programming language and how to use it in Visual Studio Code on Ubuntu. With its modern syntax, object-oriented features, and seamless integration with GTK 3.0+, Vala is an excellent choice for developing GNOME desktop applications. The subsequent chapters will dive deeper into building complex applications with Vala and GTK 3.0+.

This chapter introduces the reader to the Vala language, emphasizing its integration with GTK 3.0+ and usage in a practical development environment like Visual Studio Code on Ubuntu. The focus is on giving readers a solid foundation to start experimenting and building with Vala