diff --git a/Makefile b/Makefile index 7610b08..f3ceac0 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,13 @@ SED_PREFIX = $(shell echo $(PREFIX) | sed "s/\//\\\\\\\\\//g") PYUIC = pyuic4 PYRCC = pyrcc4 -py3 +# Detect X11 rules dir +ifeq "$(wildcard /etc/X11/xinit/xinitrc.d/ )" "" + X11_RC_DIR = $(DESTDIR)/etc/X11/Xsession.d/ +else + X11_RC_DIR = $(DESTDIR)/etc/X11/xinit/xinitrc.d/ +endif + all: UI RES CPP @@ -226,6 +233,7 @@ install: install -d $(DESTDIR)$(PREFIX)/share/cadence/pulse2jack/ install -d $(DESTDIR)$(PREFIX)/share/cadence/icons/ install -d $(DESTDIR)$(PREFIX)/share/cadence/templates/ + install -d $(X11_RC_DIR) # Install script files and binaries install -m 755 \ @@ -299,8 +307,11 @@ install: install -m 755 src/*.py $(DESTDIR)$(PREFIX)/share/cadence/src/ install -m 755 c++/carla-backend/*.so $(DESTDIR)$(PREFIX)/lib/carla/ - # Install addtional stuff + # Install addtional stuff for Cadence install -m 644 data/pulse2jack/* $(DESTDIR)$(PREFIX)/share/cadence/pulse2jack/ + install -m 644 data/99cadence-session-start $(X11_RC_DIR) + + # Install addtional stuff for Claudia cp -r data/icons/* $(DESTDIR)$(PREFIX)/share/cadence/icons/ cp -r data/templates/* $(DESTDIR)$(PREFIX)/share/cadence/templates/ @@ -317,7 +328,8 @@ install: $(DESTDIR)$(PREFIX)/bin/claudia \ $(DESTDIR)$(PREFIX)/bin/claudia-launcher \ $(DESTDIR)$(PREFIX)/bin/carla \ - $(DESTDIR)$(PREFIX)/bin/carla-control + $(DESTDIR)$(PREFIX)/bin/carla-control \ + $(X11_RC_DIR)/99cadence-session-start uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/cadence* @@ -346,5 +358,6 @@ uninstall: rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/claudia-launcher.svg rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/carla.svg rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/carla-control.svg + rm -f $(X11_RC_DIR)/99cadence-session-start rm -rf $(DESTDIR)$(PREFIX)/lib/carla/ rm -rf $(DESTDIR)$(PREFIX)/share/cadence/ diff --git a/data/99cadence-session-start b/data/99cadence-session-start new file mode 100644 index 0000000..3fc988b --- /dev/null +++ b/data/99cadence-session-start @@ -0,0 +1,24 @@ +# Cadence Session Startup + +INSTALL_PREFIX="X-PREFIX-X" + +# Export Plugins PATHs +LADSPA_PATH_str=`$INSTALL_PREFIX/bin/cadence-session-start --printLADSPA_PATH` +DSSI_PATH_str=`$INSTALL_PREFIX/bin/cadence-session-start --printDSSI_PATH` +LV2_PATH_str=`$INSTALL_PREFIX/bin/cadence-session-start --printLV2_PATH` +VST_PATH_str=`$INSTALL_PREFIX/bin/cadence-session-start --printVST_PATH` + +export LADSPA_PATH="$LADSPA_PATH_str" +export DSSI_PATH="$DSSI_PATH_str" +export LV2_PATH="$LV2_PATH_str" +export VST_PATH="$VST_PATH_str" + +# Start JACK (or not), according to user settings +CADENCE_SESSION="$INSTALL_PREFIX/bin/cadence-session-start -s" +exec $CADENCE_SESSION & + +unset LADSPA_PATH_str +unset DSSI_PATH_str +unset LV2_PATH_str +unset VST_PATH_str +unset INSTALL_PREFIX diff --git a/data/cadence-session-start b/data/cadence-session-start new file mode 100755 index 0000000..b5eea81 --- /dev/null +++ b/data/cadence-session-start @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f /usr/bin/python3 ]; then + PYTHON=/usr/bin/python3 +else + PYTHON=python +fi + +INSTALL_PREFIX="X-PREFIX-X" +exec $PYTHON $INSTALL_PREFIX/share/cadence/src/cadence_session_start.py "$@" diff --git a/src/cadence_session_start.py b/src/cadence_session_start.py new file mode 100755 index 0000000..47827d7 --- /dev/null +++ b/src/cadence_session_start.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +# Imports (Global) +import dbus, os, sys +from PyQt4.QtCore import QCoreApplication, QProcess, QSettings +from time import sleep + +# Imports (Custom Stuff) +from shared import * + +# Cadence Global Settings +GlobalSettings = QSettings("Cadence", "GlobalSettings") + +DEFAULT_LADSPA_PATH = "/usr/lib/ladspa:/usr/local/lib/ladspa:/usr/lib32/ladspa:"+HOME+"/.ladspa" +DEFAULT_DSSI_PATH = "/usr/lib/dssi:/usr/local/lib/dssi:/usr/lib32/dssi:"+HOME+"/.dssi" +DEFAULT_LV2_PATH = "/usr/lib/lv2:/usr/local/lib/lv2:"+HOME+"/.lv2" +DEFAULT_VST_PATH = "/usr/lib/vst:/usr/local/lib/vst:/usr/lib32/vst:"+HOME+"/.vst" + +# DBus +class DBus(object): + __slots__ = [ + 'bus', + 'a2j', + 'jack' + ] +DBus = DBus() + +# Start JACK, A2J and Pulse, according to user settings +def startSession(): + pass + +def printLADSPA_PATH(): + EXTRA_LADSPA_DIRS = GlobalSettings.value("AudioPlugins/EXTRA_LADSPA_PATH", "", type=str).split(":") + LADSPA_PATH_str = DEFAULT_LADSPA_PATH + + for i in range(len(EXTRA_LADSPA_DIRS)): + if (EXTRA_LADSPA_DIRS[i]): + LADSPA_PATH_str += ":"+EXTRA_LADSPA_DIRS[i] + + print(LADSPA_PATH_str) + +def printDSSI_PATH(): + EXTRA_DSSI_DIRS = GlobalSettings.value("AudioPlugins/EXTRA_DSSI_PATH", "", type=str).split(":") + DSSI_PATH_str = DEFAULT_DSSI_PATH + + for i in range(len(EXTRA_DSSI_DIRS)): + if (EXTRA_DSSI_DIRS[i]): + DSSI_PATH_str += ":"+EXTRA_DSSI_DIRS[i] + + print(DSSI_PATH_str) + +def printLV2_PATH(): + EXTRA_LV2_DIRS = GlobalSettings.value("AudioPlugins/EXTRA_LV2_PATH", "", type=str).split(":") + LV2_PATH_str = DEFAULT_LV2_PATH + + for i in range(len(EXTRA_LV2_DIRS)): + if (EXTRA_LV2_DIRS[i]): + LV2_PATH_str += ":"+EXTRA_LV2_DIRS[i] + + print(LV2_PATH_str) + +def printVST_PATH(): + EXTRA_VST_DIRS = GlobalSettings.value("AudioPlugins/EXTRA_VST_PATH", "", type=str).split(":") + VST_PATH_str = DEFAULT_VST_PATH + + for i in range(len(EXTRA_VST_DIRS)): + if (EXTRA_VST_DIRS[i]): + VST_PATH_str += ":"+EXTRA_VST_DIRS[i] + + print(VST_PATH_str) + +def printArguments(): + print("\t-s|--start \tStart session") + print("") + print("\t-h|--help \tShow this help message") + print("\t-v|--version\tShow version") + +def printError(cmd): + print("Invalid arguments") + print("Run '%s -h' for help" % (cmd)) + +def printHelp(cmd): + print("Usage: %s [cmd]" % (cmd)) + printArguments() + +def printVersion(): + print("Cadence version %s" % (VERSION)) + print("Developed by falkTX and the rest of the KXStudio Team") + +#--------------- main ------------------ +if __name__ == '__main__': + # App initialization + app = QCoreApplication(sys.argv) + app.setApplicationName("Cadence") + app.setApplicationVersion(VERSION) + app.setOrganizationName("Cadence") + + # Check arguments + cmd = sys.argv[0] + + if len(app.arguments()) == 1: + printHelp(cmd) + elif len(app.arguments()) == 2: + arg = app.arguments()[1] + if arg == "--printLADSPA_PATH": + printLADSPA_PATH() + elif arg == "--printDSSI_PATH": + printDSSI_PATH() + elif arg == "--printLV2_PATH": + printLV2_PATH() + elif arg == "--printVST_PATH": + printVST_PATH() + elif arg in ["-s", "--s", "-start", "--start"]: + sys.exit(startSession()) + elif arg in ["-h", "--h", "-help", "--help"]: + printHelp(cmd) + elif arg in ["-v", "--v", "-version", "--version"]: + printVersion() + else: + printError(cmd) + else: + printError(cmd) + + # Exit + sys.exit(0) +