mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-06-16 16:33:55 +02:00
Update yabridgectl documentation
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
Yet Another way to use Windows VST plugins on Linux. Yabridge seamlessly
|
Yet Another way to use Windows VST plugins on Linux. Yabridge seamlessly
|
||||||
supports running both 64-bit Windows VST2 plugins as well as 32-bit Windows VST2
|
supports running both 64-bit Windows VST2 plugins as well as 32-bit Windows VST2
|
||||||
plugins in a 64-bit Linux VST host, with optional support for inter-plugin
|
plugins in a 64-bit Linux VST host, with optional support for inter-plugin
|
||||||
communication through [plugin groups](#Plugin-groups). This project aims to be
|
communication through [plugin groups](#plugin-groups). This project aims to be
|
||||||
as transparent as possible in order to achieve the best possible plugin
|
as transparent as possible in order to achieve the best possible plugin
|
||||||
compatibility while also staying easy to debug and maintain.
|
compatibility while also staying easy to debug and maintain.
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ copy-based installation will work for all hosts.
|
|||||||
This is the recommended way to use yabridge if you're using Bitwig Studio or any
|
This is the recommended way to use yabridge if you're using Bitwig Studio or any
|
||||||
other VST host that supports _invididually sandboxed plugins_. If you use Bitwig
|
other VST host that supports _invididually sandboxed plugins_. If you use Bitwig
|
||||||
Studio and you do not want to use the '_Individually_' plugin hosting mode, then
|
Studio and you do not want to use the '_Individually_' plugin hosting mode, then
|
||||||
you should follow the instructions from the [copying](#Copying) section below
|
you should follow the instructions from the [copying](#copying) section below
|
||||||
instead. For this installation method you can either use the prebuilt binaries
|
instead. For this installation method you can either use the prebuilt binaries
|
||||||
from the [GitHub releases](https://github.com/robbert-vdh/yabridge/releases)
|
from the [GitHub releases](https://github.com/robbert-vdh/yabridge/releases)
|
||||||
section, or you can build yabridge directly from source. If you use the prebuilt
|
section, or you can build yabridge directly from source. If you use the prebuilt
|
||||||
@@ -277,7 +277,7 @@ include:
|
|||||||
when the window gets dragged offscreen on the top and left dies of the screen.
|
when the window gets dragged offscreen on the top and left dies of the screen.
|
||||||
- Plugins like **FabFilter Pro-Q 3** that can share data between different
|
- Plugins like **FabFilter Pro-Q 3** that can share data between different
|
||||||
instances of the same plugin plugins have to be hosted within a single process
|
instances of the same plugin plugins have to be hosted within a single process
|
||||||
for that functionality to work. See the [plugin groups](#Plugin-groups)
|
for that functionality to work. See the [plugin groups](#plugin-groups)
|
||||||
section for instructions on how to set this up.
|
section for instructions on how to set this up.
|
||||||
|
|
||||||
Aside from that, these are some known caveats:
|
Aside from that, these are some known caveats:
|
||||||
@@ -344,7 +344,7 @@ ninja -C build
|
|||||||
```
|
```
|
||||||
|
|
||||||
After you've finished building you can follow the instructions under the
|
After you've finished building you can follow the instructions under the
|
||||||
[usage](#Usage) section on how to set up yabridge.
|
[usage](#usage) section on how to set up yabridge.
|
||||||
|
|
||||||
<sup>
|
<sup>
|
||||||
*The versions of GCC and Boost that ship with Ubuntu 18.04 by default are too
|
*The versions of GCC and Boost that ship with Ubuntu 18.04 by default are too
|
||||||
|
|||||||
+32
-26
@@ -13,11 +13,11 @@ from anywhere. All of the information below can also be found through
|
|||||||
|
|
||||||
### Yabridge path
|
### Yabridge path
|
||||||
|
|
||||||
Yabrdgectl will need to know where it can find `libyabridge.so`. By default it
|
Yabridgectl will need to know where it can find `libyabridge.so`. By default it
|
||||||
will look for it in both `~/.local/share/yabridge` (the recommended installation
|
will search for it in both `~/.local/share/yabridge` (the recommended
|
||||||
directory when using the prebuilt binaries) and in `/usr/lib`. You can use the
|
installation directory when using the prebuilt binaries) and in `/usr/lib`. You
|
||||||
command below to override this behaviour and to use a custom installation
|
can use the command below to override this behaviour and to use a custom
|
||||||
directory instead.
|
installation directory instead.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
yabridgectl set --path=<path/to/directory/containing/yabridge/files>
|
yabridgectl set --path=<path/to/directory/containing/yabridge/files>
|
||||||
@@ -25,10 +25,12 @@ yabridgectl set --path=<path/to/directory/containing/yabridge/files>
|
|||||||
|
|
||||||
### Installation methods
|
### Installation methods
|
||||||
|
|
||||||
By default, yabridgectl will use the copy-based installation method for yabridge
|
Yabridge can be set up using either copies or symlinks. By default, yabridgectl
|
||||||
since this installation method works with any VST host. If you are using a DAW
|
will use the copy-based installation method since this will work with any VST
|
||||||
that supports individually sandboxed plugins such as Bitwig Studio, then you can
|
host. If you are using a DAW that supports individually sandboxed plugins such
|
||||||
choose between using copies and symlinks using the command below.
|
as Bitwig Studio, then you can choose between using copies and symlinks using
|
||||||
|
the command below. Make sure to rerun `yabridgectl sync` after changing this
|
||||||
|
setting.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
yabridgectl set --method=<copy|symlink>
|
yabridgectl set --method=<copy|symlink>
|
||||||
@@ -36,43 +38,47 @@ yabridgectl set --method=<copy|symlink>
|
|||||||
|
|
||||||
### Managing directories
|
### Managing directories
|
||||||
|
|
||||||
Yabridgectl manage Windows VST plugin install locations for you. To add, remove
|
Yabridgectl can manage multiple Windows VST plugin install locations for you. To
|
||||||
and list directories, or to list the plugins currently installed inside one of
|
add, remove and list directories, you can use the commands below. The status
|
||||||
those directories, you can use the command below.
|
command will show you yabridgectl's current settings and the installation status
|
||||||
|
for all of your plugins.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# Add a location containing plugins
|
# Add a directory containing plugins
|
||||||
# For instance, use the below command for the most common VST2 plugin directory
|
# Use the command from the next line to add the most common VST2 plugin directory
|
||||||
# yabridgectl add "$HOME/.wine/drive_c/Program Files/Steinberg/VstPlugins"
|
# yabridgectl add "$HOME/.wine/drive_c/Program Files/Steinberg/VstPlugins"
|
||||||
yabridgectl add <path/to/plugins>
|
yabridgectl add <path/to/plugins>
|
||||||
# Remove a plugin location, this will ask you if you want to remove any leftover yabridge files
|
# Remove a plugin location, this will ask you if you want to remove any leftover files from yabridge
|
||||||
yabridgectl rm <path/to/plugins>
|
yabridgectl rm <path/to/plugins>
|
||||||
# List the current plugin locations
|
# List the current plugin locations
|
||||||
yabridgectl list
|
yabridgectl list
|
||||||
# Show the current settings and the installation status for all plugins found
|
# Show the current settings and the installation status for all of your plugins
|
||||||
yabridgectl status
|
yabridgectl status
|
||||||
```
|
```
|
||||||
|
|
||||||
### Installing and updating
|
### Installing and updating
|
||||||
|
|
||||||
Finally you can tell yabridgectl to set up or update yabridge for all of your
|
Lastly you can tell yabridgectl to set up or update yabridge for all of your
|
||||||
plugins at once using the commands below. By default yabridgectl will warn you
|
plugins at once using the commands below. Yabridgectl will warn you if it finds
|
||||||
if it finds leftover `.so` files, but it will only delete those when ran using
|
unrelated `.so` files that may have been left over after uninstalling a plugin.
|
||||||
the `--prune` option.
|
You can rerun the sync command with the `--prune` option to delete those files.
|
||||||
|
If you are using the default copy-based installation method, it will also verify
|
||||||
|
that your search `PATH` has been set up correctly so you can get up and running
|
||||||
|
faster.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# Set up copies or symlinks of yabridge for all plugins under the watched directories
|
# Set up yabridge for all plugins found under the plugin locations
|
||||||
yabridgectl sync
|
yabridgectl sync
|
||||||
# Set up yabridge, and also remove any '.so' still leftover after removing a plugin
|
# Set up yabridge, and also remove any leftover .so files
|
||||||
yabridgectl sync --prune
|
yabridgectl sync --prune
|
||||||
```
|
```
|
||||||
|
|
||||||
## Alternatives
|
## Alternatives
|
||||||
|
|
||||||
If you want to script your own installation behaviour and don't feel like using
|
If you want to script your own installation behaviour and don't feel like using
|
||||||
yabridgectl, then you could use one of the below bash snippets as a base. This
|
yabridgectl, then you could use one of the below bash snippets instead. This
|
||||||
approach is slightly less robust and does not do any problem detection or status
|
approach is slightly less robust and does not perform any problem detection or
|
||||||
reporting, but it will get you started.
|
status reporting, but it will get you started.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# For use with symlinks
|
# For use with symlinks
|
||||||
@@ -94,7 +100,7 @@ find -L "$plugin_dir" -type f -iname '*.dll' -print0 |
|
|||||||
xargs -0 -n1 cp "$yabridge_home/libyabridge.so"
|
xargs -0 -n1 cp "$yabridge_home/libyabridge.so"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Building
|
## Building from source
|
||||||
|
|
||||||
After installing [Rust](https://rustup.rs/), simply run the command below to
|
After installing [Rust](https://rustup.rs/), simply run the command below to
|
||||||
compile and run:
|
compile and run:
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ pub fn remove_directory(config: &mut Config, path: &Path) -> Result<()> {
|
|||||||
let orphan_files = files::index_so_files(path);
|
let orphan_files = files::index_so_files(path);
|
||||||
if !orphan_files.is_empty() {
|
if !orphan_files.is_empty() {
|
||||||
println!(
|
println!(
|
||||||
"Warning: Found {} leftover '.so' files still in this directory:",
|
"Warning: Found {} leftover .so files still in this directory:",
|
||||||
orphan_files.len()
|
orphan_files.len()
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -221,10 +221,10 @@ pub fn do_sync(config: &Config, prune: bool, verbose: bool) -> Result<()> {
|
|||||||
// tries to load them
|
// tries to load them
|
||||||
if !orphan_so_files.is_empty() {
|
if !orphan_so_files.is_empty() {
|
||||||
if prune {
|
if prune {
|
||||||
println!("Removing {} leftover '.so' files:", orphan_so_files.len());
|
println!("Removing {} leftover .so files:", orphan_so_files.len());
|
||||||
} else {
|
} else {
|
||||||
println!(
|
println!(
|
||||||
"Found {} leftover '.so' files, rerun with the '--prune' option to remove them:",
|
"Found {} leftover .so files, rerun with the '--prune' option to remove them:",
|
||||||
orphan_so_files.len()
|
orphan_so_files.len()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -243,7 +243,7 @@ pub fn do_sync(config: &Config, prune: bool, verbose: bool) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
println!(
|
println!(
|
||||||
"Finished setting up {} plugins using {}, skipped {} non-plugin '.dll' files",
|
"Finished setting up {} plugins using {}, skipped {} non-plugin .dll files",
|
||||||
num_installed,
|
num_installed,
|
||||||
config.method.plural_name(),
|
config.method.plural_name(),
|
||||||
num_skipped_files
|
num_skipped_files
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ fn find_files(directory: &Path) -> (Vec<PathBuf>, Vec<FoundFile>) {
|
|||||||
.follow_links(true)
|
.follow_links(true)
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter_map(|e| e.ok())
|
.filter_map(|e| e.ok())
|
||||||
.filter(|x| !x.file_type().is_dir())
|
.filter(|e| !e.file_type().is_dir())
|
||||||
.enumerate()
|
.enumerate()
|
||||||
{
|
{
|
||||||
// This is a bit of an odd warning, but I can see it happening that someone adds their
|
// This is a bit of an odd warning, but I can see it happening that someone adds their
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ mod config;
|
|||||||
mod files;
|
mod files;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
// TODO: Reward parts of the readme
|
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
let mut config = Config::read()?;
|
let mut config = Config::read()?;
|
||||||
|
|
||||||
@@ -106,7 +104,7 @@ fn main() -> Result<()> {
|
|||||||
Arg::with_name("prune")
|
Arg::with_name("prune")
|
||||||
.short('p')
|
.short('p')
|
||||||
.long("prune")
|
.long("prune")
|
||||||
.about("Remove unrelated or leftover '.so' files"),
|
.about("Remove unrelated or leftover .so files"),
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("verbose")
|
Arg::with_name("verbose")
|
||||||
|
|||||||
Reference in New Issue
Block a user