---
title: Desktop
description: Desktop platforms on which Slint has been tested
---

import { Tabs, TabItem } from '@astrojs/starlight/components';

Generally, Slint runs on Windows, macOS, and popular Linux distributions. The following tables
cover versions that we specifically test. The general objective is to support the operating systems that
are supported by their vendors at the time of a Slint version release.


<Tabs syncKey="dev-platform">
<TabItem label="Windows" icon="seti:windows">

| Operating System | Architecture    |
| ---------------- | --------------- |
| Windows 10       | x86-64          |
| Windows 11       | x86-64, aarch64 |

### Handle the Console Window

When you running an application a console window will show by [default](https://learn.microsoft.com/en-us/cpp/build/reference/subsystem-specify-subsystem?view=msvc-170).

Disable the console by specifying a `WINDOWS` subsystem.

When running the application from the command line, if the subsystem is set to windows it will no longer output stdout. To get it back consider using `FreeConsole()`.

See more details at [#3235](https://github.com/slint-ui/slint/issues/3235)

<Tabs syncKey="dev-language">
<TabItem label="Rust">

Add the code to the top of .rs file which contains `fn main()`:

```rust
#![windows_subsystem = "windows"]
```

Or if you want to keep console output in debug mode:

```rust
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
```
</TabItem>
<TabItem label="C++">


Select the `WINDOWS` subsystem by setting the [`WIN32_EXECUTABLE`](https://cmake.org/cmake/help/latest/prop_tgt/WIN32_EXECUTABLE.html#prop_tgt:WIN32_EXECUTABLE) target property on your executable target:

```cmake
add_executable(my_program ...)
set_property(TARGET my_program APPEND PROPERTY WIN32_EXECUTABLE TRUE)
```

</TabItem>

<TabItem label="Python">
Change the extension of your Python script from `.py` to `.pyw`, the default Python interpreter associated with
Python files will launch without a console window. Alternatively, use `pythonw.exe` instead of `python.exe` to launch
your Python script.
</TabItem>

</Tabs>

### Rust: Stack Overflows

When developing Rust applications on Windows, you might sooner or later observe the program aborting with `STATUS_STACK_OVERFLOW`,
especially in debug builds. This is a known issue that's a combination of a high demand for stack space and MSVC defaulting to
a stack size for the main thread that's significantly smaller compared to other operating systems.

This is fixed by configuring the linker. Create a [`.cargo\config.toml`](https://doc.rust-lang.org/cargo/reference/config.html#configuration)
file in your project (note the `.cargo` sub-directory) with the following contents:

```toml
[target.x86_64-pc-windows-msvc]
# Increase default stack size to avoid running out of stack
# space in debug builds. The size matches Linux's default.
rustflags = ["-C", "link-arg=/STACK:8000000"]
[target.aarch64-pc-windows-msvc]
# Increase default stack size to avoid running out of stack
# space in debug builds. The size matches Linux's default.
rustflags = ["-C", "link-arg=/STACK:8000000"]
```

</TabItem>
<TabItem label="macOS" icon="apple">

| Operating System  | Architecture    |
| ----------------- | --------------- |
| macOS 14 Sonoma   | aarch64 |
| macOS 15 Sequoia  | aarch64 |
| macOS 26          | aarch64 |

</TabItem>
<TabItem label="Linux" icon="linux">


Linux desktop distribution present a diverse landscape, and Slint should run on any of them, provided that they
are using Wayland or X-Windows, glibc, and d-bus. If a Linux distribution provides Long Term Support (LTS),
Slint should run on the most recent LTS or newer, at the time of a Slint version release.
</TabItem>
</Tabs>

## Other Platforms
[Contact us](https://slint.dev/contact) if you want to use Slint on other platforms/versions.
