Update yabridgectl documentation

This commit is contained in:
Robbert van der Helm
2020-07-17 13:34:55 +02:00
parent b94e68e935
commit 74be0992fd
5 changed files with 42 additions and 38 deletions
+4 -4
View File
@@ -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
View File
@@ -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:
+4 -4
View File
@@ -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
+1 -1
View File
@@ -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
+1 -3
View File
@@ -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")