LinuxCommandLibrary

genie

Run Windows executables inside a Linux environment

TLDR

Initialize the bottle (run once, at start)

$ genie [[-i|--initialize]]
copy

Run a login shell inside the bottle
$ genie [[-s|--shell]]
copy

Run a specified command inside the bottle
$ genie [[-c|--command]] [command]
copy

SYNOPSIS

genie [OPTION...] [FILE.gs]

PARAMETERS

-h, --help
    Display help message and exit

--version
    Output version information

-o, --output=NAME
    Specify output file or directory name

-p, --profile=PROFILE
    Use profile: debug, release, or default

--target=TARGET
    Target backend: gobject or ccode

--vapi=NAME
    Generate VAPI file for Vala bindings

--gir=NAME
    Generate GIR file for GObject Introspection

--pkg=NAME
    Add external package dependency

--cc=CC
    Specify C compiler command

-g
    Enable debug symbols

-O
    Optimize generated code

--keep
    Keep temporary C files

--thread
    Enable threading support

--cflags=FLAGS
    Additional C compiler flags

--ldflags=FLAGS
    Additional linker flags

DESCRIPTION

Genie is a friendly programming language designed for the GNOME ecosystem, offering a clean syntax inspired by Python and Ruby while compiling to efficient C code. The genie command serves as the primary compiler for Genie source files with .gs extension.

It enables developers to build applications, libraries, and GObject-introspected code with automatic memory management via reference counting, generics, lambdas, and seamless C/GObject integration. Genie shares the Vala parser backend, ensuring high compatibility with GNOME libraries.

Key strengths include readability, rapid development, and zero runtime overhead. Compile and run interactively or produce binaries/libraries. Supports profiles like debug or release, custom targets, and VAPI/GIR generation for introspection.

Ideal for desktop apps, it's lightweight yet powerful, bridging scripting ease with systems performance. Install via package managers (e.g., apt install genie).

CAVEATS

Genie requires the genie package; not pre-installed on most distros.
Limited ecosystem compared to C++/Python; potential parser bugs in complex code.
Depends on Vala/libgee for full GObject support.

BASIC USAGE

genie hello.gs
Compiles and executes hello.gs immediately.

genie -o myapp hello.gs
Produces executable myapp.

SHEBANG SCRIPTS

Make scripts executable with #!/usr/bin/env genie as first line.
Run directly: ./script.gs

HISTORY

Created by Yamakuzure in 2009 as a Vala alternative with flexible syntax. Uses Vala 0.7+ parser. Actively maintained in Debian/Fedora repos; version 1.0+ stabilized syntax and GObject features around 2015.

SEE ALSO

valac(1), pkg-config(1), gcc(1), gdb(1)

Copied to clipboard