Skip to content

Commit

Permalink
merge conflict
Browse files Browse the repository at this point in the history
  • Loading branch information
dromer committed Apr 29, 2022
2 parents a828d71 + b2fcde5 commit 909a7d4
Show file tree
Hide file tree
Showing 107 changed files with 5,122 additions and 1,183 deletions.
380 changes: 322 additions & 58 deletions .github/workflows/build.yml

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@
bin/
build/
documentation.pdf
utils/inno/resources.iss
utils/inno/version.iss
23 changes: 16 additions & 7 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
url = https://gitlab.com/sonusdept/sonusmodular.git
[submodule "plugins/Mog"]
path = plugins/Mog
url = https://github.com/CardinalModules/Mog-VCV.git
url = https://github.com/JustMog/Mog-VCV.git
[submodule "plugins/ChowDSP"]
path = plugins/ChowDSP
url = https://github.com/jatinchowdhury18/ChowDSP-VCV.git
Expand Down Expand Up @@ -130,9 +130,6 @@
[submodule "plugins/Autinn"]
path = plugins/Autinn
url = https://github.com/NikolaiVChr/Autinn.git
[submodule "plugins/substation-opensource"]
path = plugins/substation-opensource
url = https://gitlab.com/falktx/substation-opensource.git
[submodule "plugins/MockbaModular"]
path = plugins/MockbaModular
url = https://github.com/MockbaTheBorg/MockbaModular.git
Expand Down Expand Up @@ -169,9 +166,6 @@
[submodule "plugins/PathSet"]
path = plugins/PathSet
url = https://github.com/patheros/PathSetModules.git
[submodule "plugins/Dintree"]
path = plugins/Dintree
url = https://github.com/hires/Dintree-Virtual.git
[submodule "plugins/Algoritmarte"]
path = plugins/Algoritmarte
url = https://github.com/algoritmarte/AlgoritmarteVCVPlugin.git
Expand All @@ -184,6 +178,21 @@
[submodule "plugins/nonlinearcircuits"]
path = plugins/nonlinearcircuits
url = https://github.com/mhetrick/nonlinearcircuits.git
[submodule "plugins/voxglitch"]
path = plugins/voxglitch
url = https://github.com/clone45/voxglitch.git
[submodule "plugins/ArableInstruments"]
path = plugins/ArableInstruments
url = https://github.com/CardinalModules/ArableInstruments.git
[submodule "plugins/Fundamental"]
path = plugins/Fundamental
url = https://github.com/CardinalModules/Fundamental.git
[submodule "plugins/unless_modules"]
path = plugins/unless_modules
url = https://gitlab.com/unlessgames/unless_modules.git
[submodule "plugins/PinkTrombone"]
path = plugins/PinkTrombone
url = https://github.com/VegaDeftwing/PinkTromboneVCV.git
[submodule "plugins/StarlingVia"]
path = plugins/StarlingVia
url = https://github.com/starlingcode/Via-for-Rack.git
35 changes: 16 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# also set in:
# src/CardinalCommon.cpp `CARDINAL_VERSION`
# src/CardinalPlugin.cpp `getVersion`
VERSION = 22.02
VERSION = 22.04

# --------------------------------------------------------------
# Import base definitions
Expand Down Expand Up @@ -57,6 +57,15 @@ endif
CARLA_EXTRA_ARGS += USING_JUCE=false
CARLA_EXTRA_ARGS += USING_JUCE_GUI_EXTRA=false

# --------------------------------------------------------------
# DGL config

DGL_EXTRA_ARGS = \
NVG_DISABLE_SKIPPING_WHITESPACE=true \
NVG_FONT_TEXTURE_FLAGS=NVG_IMAGE_NEAREST \
USE_NANOVG_FBO=true \
WINDOWS_ICON_ID=401

# --------------------------------------------------------------
# Check for system-wide dependencies

Expand Down Expand Up @@ -196,7 +205,7 @@ endif

dgl:
ifneq ($(HEADLESS),true)
$(MAKE) -C dpf/dgl opengl NVG_DISABLE_SKIPPING_WHITESPACE=true NVG_FONT_TEXTURE_FLAGS=NVG_IMAGE_NEAREST USE_NANOVG_FBO=true
$(MAKE) -C dpf/dgl opengl $(DGL_EXTRA_ARGS)
endif

plugins: deps
Expand Down Expand Up @@ -255,8 +264,7 @@ install:
install -d $(DESTDIR)$(PREFIX)/lib/lv2/Cardinal.lv2
install -d $(DESTDIR)$(PREFIX)/lib/lv2/CardinalFX.lv2
install -d $(DESTDIR)$(PREFIX)/lib/lv2/CardinalSynth.lv2
install -d $(DESTDIR)$(PREFIX)/lib/vst/CardinalFX.vst
install -d $(DESTDIR)$(PREFIX)/lib/vst/CardinalSynth.vst
install -d $(DESTDIR)$(PREFIX)/lib/vst/Cardinal.vst
ifeq ($(VST3_SUPPORTED),true)
install -d $(DESTDIR)$(PREFIX)/lib/vst3/Cardinal.vst3/Contents
install -d $(DESTDIR)$(PREFIX)/lib/vst3/CardinalFX.vst3/Contents
Expand All @@ -269,8 +277,7 @@ endif
install -m 644 bin/CardinalFX.lv2/*.* $(DESTDIR)$(PREFIX)/lib/lv2/CardinalFX.lv2/
install -m 644 bin/CardinalSynth.lv2/*.* $(DESTDIR)$(PREFIX)/lib/lv2/CardinalSynth.lv2/

install -m 644 bin/CardinalFX.vst/*.* $(DESTDIR)$(PREFIX)/lib/vst/CardinalFX.vst/
install -m 644 bin/CardinalSynth.vst/*.* $(DESTDIR)$(PREFIX)/lib/vst/CardinalSynth.vst/
install -m 644 bin/Cardinal.vst/*.* $(DESTDIR)$(PREFIX)/lib/vst/Cardinal.vst/

ifeq ($(VST3_SUPPORTED),true)
cp -rL bin/Cardinal.vst3/Contents/*-* $(DESTDIR)$(PREFIX)/lib/vst3/Cardinal.vst3/Contents/
Expand All @@ -284,19 +291,6 @@ endif
install -m 644 README.md $(DESTDIR)$(PREFIX)/share/doc/cardinal/
install -m 644 docs/*.md docs/*.png $(DESTDIR)$(PREFIX)/share/doc/cardinal/docs/

ln -sf $(PREFIX)/share/cardinal $(DESTDIR)$(PREFIX)/lib/lv2/Cardinal.lv2/resources
ln -sf $(PREFIX)/share/cardinal $(DESTDIR)$(PREFIX)/lib/lv2/CardinalFX.lv2/resources
ln -sf $(PREFIX)/share/cardinal $(DESTDIR)$(PREFIX)/lib/lv2/CardinalSynth.lv2/resources

ln -sf $(PREFIX)/share/cardinal $(DESTDIR)$(PREFIX)/lib/vst/CardinalFX.vst/resources
ln -sf $(PREFIX)/share/cardinal $(DESTDIR)$(PREFIX)/lib/vst/CardinalSynth.vst/resources

ifeq ($(VST3_SUPPORTED),true)
ln -sf $(PREFIX)/share/cardinal $(DESTDIR)$(PREFIX)/lib/vst3/Cardinal.vst3/Contents/Resources
ln -sf $(PREFIX)/share/cardinal $(DESTDIR)$(PREFIX)/lib/vst3/CardinalFX.vst3/Contents/Resources
ln -sf $(PREFIX)/share/cardinal $(DESTDIR)$(PREFIX)/lib/vst3/CardinalSynth.vst3/Contents/Resources
endif

# --------------------------------------------------------------
# Tarball step, for releases

Expand Down Expand Up @@ -404,6 +398,9 @@ tarball+deps: download
rm -f ../cardinal+deps-$(VERSION).tar.xz
tar -c --lzma $(TAR_ARGS) -f ../cardinal+deps-$(VERSION).tar.xz .

version:
@echo $(VERSION)

# --------------------------------------------------------------

.PHONY: carla deps plugins
85 changes: 53 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*Cardinal, the Rack!*

Cardinal is a free and open-source virtual modular synthesizer plugin,
available as JACK standalone and LV2, VST2 and VST3 audio plugin for FreeBSD, Linux, macOS and Windows.
available as JACK standalone and AU, LV2, VST2 and VST3 audio plugin for FreeBSD, Linux, macOS and Windows.
It is based on the popular [VCV Rack](https://vcvrack.com/) but with a focus on being a fully self-contained plugin version.

More specifically, this is a [DPF-based](https://github.com/DISTRHO/DPF/)
Expand All @@ -19,10 +19,42 @@ All "Core" modules from Rack have been replaced by Cardinal equivalents, simplif
Cardinal does not load external modules and does not connect to the official Rack library/store.
All VCV branding has been removed (to the best of our knowledge) in order to avoid any trademark issues.

Because it is using DPF, Cardinal already supports LV2 and VST2 with an extra JACK standalone mode for some systems.
The VST3 version is in progress, already part of the build but still experimental.


## Current status

With the exception of a few bugs, Cardinal can be considered stable.
Though currently the following should be noted:

- Keyboard input does not always work in some hosts [#24](https://github.com/DISTRHO/Cardinal/issues/24)
- VST3 support incomplete/experimental [#41](https://github.com/DISTRHO/Cardinal/issues/41)
- Windows 32bit builds do not work well [#80](https://github.com/DISTRHO/Cardinal/issues/80)

### Stable release

Cardinal releases have official builds for Linux, macOS and Windows.
You can find these under https://github.com/DISTRHO/Cardinal/releases.

There are Linux builds for various architectures (armhf, arm64, i686 and x86_64), macOS "universal" (arm64 + intel) and Windows 32 and 64bit builds.
Both macOS and Windows builds have an installer.
Install instructions are available [here](https://github.com/DISTRHO/Cardinal/wiki/Install).

Note: Neither the macOS or Windows builds are signed, so expect warnings saying they are from an "untrusted developer".

### Nightly builds

You can find builds for pretty much any recent Cardinal commit [here](https://github.com/DISTRHO/Cardinal/actions/workflows/build.yml).
Just click on any successful build, and scroll to the bottom to find the builds.
(note the canvas-like area in the middle prevents mouse wheel scrolling)

A GitHub account is required in order to download these builds.

### Building

Basic building instructions are available in [BUILDING.md](docs/BUILDING.md).


## Plugin variants

Cardinal provides 3 plugin variants - "main", Synth and FX.
Expand All @@ -36,7 +68,7 @@ All variants have MIDI input and output support.

This variant provides 8 audio inputs and outputs and 10 CV inputs and outputs.

NOTE: Due to VST2 format not supporting CV ports, this variant is not available for VST2.
NOTE: Due to AU and VST2 formats not supporting CV ports, this variant is not available for those formats.

### Synth

Expand Down Expand Up @@ -70,33 +102,6 @@ But a couple of modules background's have their colors flipped, because damn we

![screenshot](docs/Screenshot_Carla+Ildaeil.png "Screenshot")

## Current status

With the exception of a few bugs, Cardinal can be considered stable.
Though currently the following should be noted:

- Keyboard input does not always work in some hosts [#24](https://github.com/DISTRHO/Cardinal/issues/24)
- VST3 support incomplete/experimental [#41](https://github.com/DISTRHO/Cardinal/issues/41)
- Windows 32bit builds do not work well [#80](https://github.com/DISTRHO/Cardinal/issues/80)

### Current builds

If you want to try this out early, checkout the [GitHub actions tab](https://github.com/DISTRHO/Cardinal/actions/workflows/build.yml).
There is absolutely no warranty, use at your own risk and all that...

Basic building instructions are available in [BUILDING.md](docs/BUILDING.md)

### Community chat

Currently we are all on #cardinal IRC room in irc.libera.chat server.
Come join us in your favorite IRC client or through a Matrix bridge.


## License

Cardinal is licensed under GPLv3+, see [LICENSE](LICENSE) for more details.
An overview of the included code and linked submodules can be seen [here](docs/LICENSES.md#code-license--binary).


## Included modules

Expand All @@ -108,6 +113,7 @@ At the moment the following 3rd-party modules are provided:
- AlgoritmArte
- Amalgamated Harmonics
- Animated Circuits
- Arable Instruments
- Aria Salvatrice
- Audible Instruments
- Autinn
Expand All @@ -119,12 +125,12 @@ At the moment the following 3rd-party modules are provided:
- Catro/Modulo
- cf
- ChowDSP
- Dintree Virtual
- DrumKit
- E-Series
- ExpertSleepers Encoders
- Extratone
- Fehler Fabrik
- Fundamental
- Glue the Giant
- GoodSheperd
- Grande
Expand All @@ -147,15 +153,18 @@ At the moment the following 3rd-party modules are provided:
- MSM
- Nonlinear Circuits
- Orbits
- Parable Instruments
- Path Set
- PinkTrombone
- Prism
- rackwindows
- repelzen
- Sonus Modular
- Starling Via
- stocaudio
- Substation Opensource
- unless_modules
- Valley
- Voxglitch
- ZetaCarinae
- ZZC

Expand Down Expand Up @@ -229,3 +238,15 @@ Cardinal and Rack should be able to co-exist friendly and peacefully, as they cl
It is likely most people will prefer to use Rack Pro for its official support and its big module collection (including commercial ones).

A feature comparison between Cardinal and Rack Pro can be seen [here](docs/DIFFERENCES.md).


## License

Cardinal is licensed under GPLv3+, see [LICENSE](LICENSE) for more details.
An overview of the included code and linked submodules can be seen [here](docs/LICENSES.md#code-license--binary).


## Community chat

Currently we are all on #cardinal IRC room in irc.libera.chat server.
Come join us in your favorite IRC client or through a Matrix bridge.
2 changes: 1 addition & 1 deletion carla
Submodule carla updated 95 files
+9 −9 .github/workflows/build.yml
+8 −3 Makefile.dist.mk
+20 −0 source/Makefile.mk
+118 −118 source/backend/CarlaHost.h
+2 −2 source/backend/CarlaStandalone.cpp
+34 −34 source/backend/CarlaUtils.h
+3 −3 source/backend/Makefile
+3 −1 source/backend/engine/CarlaEngineDummy.cpp
+5 −5 source/backend/engine/CarlaEngineJack.cpp
+4 −4 source/backend/engine/CarlaEngineNative.cpp
+9 −9 source/backend/engine/Makefile
+6 −6 source/backend/plugin/Makefile
+1 −1 source/backend/utils/CachedPlugins.cpp
+1 −3 source/backend/utils/Information.cpp
+3 −3 source/backend/utils/Makefile
+1 −1 source/backend/utils/PipeClient.cpp
+4 −4 source/backend/utils/Windows.cpp
+2 −2 source/bridges-plugin/CarlaBridgeSingleLV2.cpp
+44 −44 source/bridges-plugin/Makefile
+26 −20 source/bridges-ui/Makefile
+11 −11 source/discovery/Makefile
+2 −2 source/frontend/carla_database.py
+2 −2 source/frontend/carla_settings.py
+17 −16 source/includes/CarlaDefines.h
+1 −1 source/includes/CarlaNative.h
+20 −13 source/includes/CarlaNativePlugin.h
+6 −6 source/interposer/Makefile
+7 −7 source/interposer/interposer-jack-x11.cpp
+12 −12 source/interposer/interposer-safe.cpp
+5 −5 source/interposer/interposer-x11.cpp
+35 −35 source/jackbridge/Makefile
+3 −3 source/libjack/Makefile
+10 −10 source/libjack/libjack.cpp
+6 −6 source/libjack/libjack_base.cpp
+14 −14 source/libjack/libjack_callbacks.cpp
+6 −6 source/libjack/libjack_client.cpp
+3 −3 source/libjack/libjack_error.cpp
+9 −8 source/libjack/libjack_latency.cpp
+25 −25 source/libjack/libjack_metadata.cpp
+9 −9 source/libjack/libjack_midi.cpp
+5 −5 source/libjack/libjack_non-callback.cpp
+6 −6 source/libjack/libjack_port-searching.cpp
+30 −30 source/libjack/libjack_ports.cpp
+6 −6 source/libjack/libjack_server-control.cpp
+4 −4 source/libjack/libjack_stats.cpp
+8 −8 source/libjack/libjack_time.cpp
+14 −14 source/libjack/libjack_transport.cpp
+28 −31 source/libjack/ringbuffer.c
+5 −5 source/modules/audio_decoder/Makefile
+7 −7 source/modules/dgl/Makefile
+3 −3 source/modules/hylia/Makefile
+16 −16 source/modules/juce_audio_basics/Makefile
+16 −16 source/modules/juce_audio_devices/Makefile
+16 −16 source/modules/juce_audio_processors/Makefile
+16 −16 source/modules/juce_core/Makefile
+16 −16 source/modules/juce_data_structures/Makefile
+16 −16 source/modules/juce_events/Makefile
+16 −16 source/modules/juce_graphics/Makefile
+16 −16 source/modules/juce_gui_basics/Makefile
+16 −16 source/modules/juce_gui_extra/Makefile
+28 −28 source/modules/lilv/Makefile
+3 −3 source/modules/rtaudio/Makefile
+16 −16 source/modules/rtmempool/Makefile
+3 −3 source/modules/rtmidi/Makefile
+3 −3 source/modules/sfzero/Makefile
+23 −23 source/modules/water/Makefile
+65 −45 source/modules/water/files/File.cpp
+1 −0 source/modules/water/text/CharacterFunctions.h
+17 −0 source/modules/water/text/String.cpp
+5 −0 source/modules/water/text/String.h
+2 −0 source/modules/water/threads/ChildProcess.cpp
+2 −2 source/modules/water/water.cpp
+3 −3 source/modules/zita-resampler/Makefile
+10 −10 source/native-plugins/Makefile
+3 −3 source/native-plugins/audio-file.cpp
+3 −3 source/native-plugins/bigmeter.cpp
+1 −1 source/native-plugins/external
+3 −3 source/native-plugins/midi-file.cpp
+3 −3 source/native-plugins/midi-pattern.cpp
+3 −3 source/native-plugins/notes.cpp
+3 −3 source/native-plugins/xycontroller.cpp
+46 −46 source/plugin/Makefile
+2 −2 source/plugin/carla-host-plugin.cpp
+2 −2 source/plugin/carla-lv2-ui.cpp
+3 −3 source/plugin/carla-lv2.cpp
+2 −2 source/plugin/carla-native-plugin.cpp
+3 −3 source/plugin/carla-vst-export-bridged.cpp
+5 −5 source/plugin/carla-vst-export.cpp
+2 −2 source/rest/Makefile
+2 −2 source/tests/Makefile
+2 −2 source/theme/CarlaStylePlugin.cpp
+16 −16 source/theme/Makefile
+2 −0 source/utils/CarlaLv2Utils.hpp
+6 −0 source/utils/CarlaString.hpp
+5 −3 source/utils/JucePluginWindow.hpp
5 changes: 4 additions & 1 deletion deps/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,10 @@ $(DEP_PATH)/libsamplerate-0.1.9/.stamp-patched:
$(DEP_PATH)/lib/libspeexdsp.a: $(DEP_PATH)/speexdsp-SpeexDSP-1.2rc3/.stamp-patched

$(DEP_PATH)/speexdsp-SpeexDSP-1.2rc3/.stamp-patched:
$(DEP_MAKE) -C $(DEP_PATH) speexdsp-SpeexDSP-1.2rc3
$(DEP_MAKE) -C $(DEP_PATH) speexdsp-SpeexDSP-1.2rc3 \
WGET="wget -c http://downloads.xiph.org/releases/speex/speexdsp-1.2rc3.tar.gz && mv speexdsp-1.2rc3.tar.gz speexdsp-SpeexDSP-1.2rc3.tgz #" \
SHA256SUM="true" \
UNTAR="mkdir -p speexdsp-SpeexDSP-1.2rc3 && tar -x --strip-components=1 --directory=$(DEP_PATH)/speexdsp-SpeexDSP-1.2rc3 -f"
sed -i -e "s/#pragma GCC visibility push/#error we dont want this/" $(DEP_PATH)/speexdsp-SpeexDSP-1.2rc3/configure
touch $@

Expand Down
2 changes: 1 addition & 1 deletion deps/PawPaw
7 changes: 3 additions & 4 deletions docs/DIFFERENCES.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Bellow follows a list of features comparing the official plugin to Cardinal.
| Loads external modules | Yes | No | |
| Supports closed-source modules | Yes | No | |
| Supports physical devices | Yes | No | Audio + MIDI only through the DAW/Host or via JACK in standalone |
| Plugin in AU format | No | Yes | |
| Plugin in LV2 format | No | Yes | |
| Plugin in VST2 format | Yes | Yes | |
| Plugin in VST3 format | No | WIP | |
Expand All @@ -30,24 +31,22 @@ Bellow follows a list of features comparing the official plugin to Cardinal.
| Supports BSD systems | No | Yes | Available as FreeBSD port |
| Synth plugin variant | 16 ins, 16 outs | 2 ins, 2 outs | |
| FX plugin variant | 16 ins, 16 outs | 2 ins, 2 outs | |
| Raw-CV plugin variant | Unsupported | 8 audio IO + 10 CV IO | Available in JACK, LV2 and VST3 formats, not possible in VST2 |
| Raw-CV plugin variant | Unsupported | 8 audio IO + 10 CV IO | Available in JACK, LV2 and VST3 formats, not possible in AU and VST2 |
| Arbitrary parameter automation | Yes | No | Unsupported in Cardinal, tricky to do for many plugin formats at once |
| Integrated plugin host | No, Host payed separately | Yes, using Carla or Ildaeil | |
| Host sync/timing | Using MIDI signals | Using dedicated module | |
| Linux/X11 event handling | Runs on 2nd thread | Runs on main/GUI thread | |
| v1 module compatibility | No | No, but with less restrictions | Module widgets can load resources at any point |
| Online phone-home | Yes | No | Online access is strictly forbidden in Cardinal |
| Proper dark theme | No, only room brightness | Yes | CC-ND respected by leaving files intact, dark mode applied at runtime |
| Proper dark theme | No, only room brightness | Yes | All dark panel variants have explicit permission when required |
| Proper Linux headless mode | No, always requires X11 | Yes | |

Additionally, Cardinal contains the following built-in modules not present in the official plugin or standalone:

* Amalgamated Harmonics
* Aria Salvatrice modules (except Arcane related modules, due to their online requirement)
* Mog (never updated to v2)
* mscHack (never updated to v2)
* rackwindows
* repelzen
* Audio File
* Carla Plugin Host
* Ildaeil Host
Expand Down
23 changes: 8 additions & 15 deletions docs/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,6 @@ But basically we want an open-source plugin version of "Rack Pro",
where we are free to change things as we see fit, work on new features and fix bugs.
This is simply not possible with proprietary software, which is the case of "Rack Pro".

## Where is Fundamental?

There are some artwork license issues that prevent us from using Fundamental exactly as we want.
We could in theory use it as-is, VCV logo and everything, but it looks out of place with Cardinal's general dark mode theme.
The artwork license does not allow modifications, and that VCV logo being present on the panels makes Cardinal's authors unease.
Cardinal is not a VCV product in any way, or endorsed by it. Would be quite bad to give that impression.

Current plan is to redo Fundamental panel graphics in a more liberal license, so it then can be included in Cardinal.
In the mean time, check [this wiki page](https://github.com/DISTRHO/Cardinal/wiki/Fundamental-replacements)
for a list of module replacements for Fundamental stuff.

PS: Don't forget to contribute back as well! ;)

## Can I install extra modules?

No, Cardinal is intentionally a fully self-contained plugin.
Expand Down Expand Up @@ -64,9 +51,15 @@ As a plugin, the state will be saved together with the host/DAW project.
## On BSD/Linux/X11 the menu item "Save As/Export..." does nothing

The save-file dialogs in Cardinal requires a working [xdg-desktop-portal](https://github.com/flatpak/xdg-desktop-portal) DBus implementation from your desktop environment.
Typically your desktop already provides this, if not consider looking for a package to install with "desktop-portal" in the name.
Typically your desktop already provides this, if not consider looking for a package to install with "desktop-portal" in the name.
If you are running a window manager without a "real" desktop environment (like custom X11 or i3 setups),
you will need to manually activate the systemd unit that provides these DBus services, like so:

```
systemctl enable xdg-desktop-portal --user --now
```

The open-file dialogs in Cardinal do not have this restriction, with a fallback in case desktop portal is not available.
Note: The open-file dialogs in Cardinal do not have this restriction, with a fallback in case the desktop portal is not available.

## Why IRC and not Discord?

Expand Down
Loading

0 comments on commit 909a7d4

Please sign in to comment.