@@ -46,6 +46,12 @@ While NSM can start and stop any program it only becomes convenient if clients s | |||
implement support. This enables saving and hiding the GUI, amongst other features. | |||
Documentation and tutorials for software-developers will be added at a later date. | |||
## Documentation and Manual | |||
See the generated website installed in your systems SHARE dir or docs/out/index.html from this | |||
repository. Alternatively you can read the online version on our github page. All are the same | |||
files. We also provide a set of manpages for each executable (see below). | |||
## Fork and License | |||
This is a fork of non-session-manager, by Jonathan Moore Liles <male@tuxfamily.net> http://non.tuxfamily.org/ | |||
which was released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. | |||
@@ -53,11 +59,20 @@ which was released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. | |||
All files, except nsm.h kept in this fork were GPL "version 2 of the License, or (at your | |||
option) any later version." | |||
`nsm.h` is licensed under the ISCL. | |||
`nsm.h` is licensed under the ISC License. | |||
New-Session-Manager changed the license to GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007. | |||
See file COPYING | |||
Documentation in docs/ is licensed Creative Commons CC-By-Sa. | |||
It consist of mostly generated files and snippet files which do not have a license header for | |||
technical reasons. | |||
All original documentation source files are CC-By-Sa Version v4.0 (see file docs/src/LICENSE), | |||
the source file docs/src/api/index.adoc is a derived work from NON-Session-Managers API file which | |||
is licensed CC-By-Sa v2.5. Therefore our derived API document is also CC-By-Sa v2.5 | |||
(see files docs/src/api/readme.txt and docs/src/api/LICENSE) | |||
## Build | |||
The build system is meson. | |||
@@ -442,8 +442,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b | |||
<div class="details"> | |||
<span id="author" class="author">Jonathan Moore Liles</span><br> | |||
<span id="email" class="email"><<a href="mailto:male@tuxfamily.org">male@tuxfamily.org</a>></span><br> | |||
<span id="revnumber">version 1.2,</span> | |||
<span id="revdate">2013-04-06</span> | |||
<span id="revnumber">version 1.2</span> | |||
</div> | |||
<div id="toc" class="toc"> | |||
<div id="toctitle">Table of Contents</div> | |||
@@ -1453,7 +1452,7 @@ of which might respond to the message by updating their own tempo maps.</p> | |||
<div id="footer"> | |||
<div id="footer-text"> | |||
Version 1.2<br> | |||
Last updated 2020-07-06 22:15:39 +0200 | |||
Last updated 2020-07-07 02:52:30 +0200 | |||
</div> | |||
</div> | |||
</body> |
@@ -556,7 +556,7 @@ Documentation and tutorials for software-developers will be added at a later dat | |||
<div id="footer"> | |||
<div id="footer-text"> | |||
Version 1.4<br> | |||
Last updated 2020-07-06 22:15:39 +0200 | |||
Last updated 2020-07-07 02:52:30 +0200 | |||
</div> | |||
</div> | |||
</body> |
@@ -0,0 +1,430 @@ | |||
from: https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt | |||
Attribution-ShareAlike 4.0 International | |||
======================================================================= | |||
Creative Commons Corporation ("Creative Commons") is not a law firm and | |||
does not provide legal services or legal advice. Distribution of | |||
Creative Commons public licenses does not create a lawyer-client or | |||
other relationship. Creative Commons makes its licenses and related | |||
information available on an "as-is" basis. Creative Commons gives no | |||
warranties regarding its licenses, any material licensed under their | |||
terms and conditions, or any related information. Creative Commons | |||
disclaims all liability for damages resulting from their use to the | |||
fullest extent possible. | |||
Using Creative Commons Public Licenses | |||
Creative Commons public licenses provide a standard set of terms and | |||
conditions that creators and other rights holders may use to share | |||
original works of authorship and other material subject to copyright | |||
and certain other rights specified in the public license below. The | |||
following considerations are for informational purposes only, are not | |||
exhaustive, and do not form part of our licenses. | |||
Considerations for licensors: Our public licenses are | |||
intended for use by those authorized to give the public | |||
permission to use material in ways otherwise restricted by | |||
copyright and certain other rights. Our licenses are | |||
irrevocable. Licensors should read and understand the terms | |||
and conditions of the license they choose before applying it. | |||
Licensors should also secure all rights necessary before | |||
applying our licenses so that the public can reuse the | |||
material as expected. Licensors should clearly mark any | |||
material not subject to the license. This includes other CC- | |||
licensed material, or material used under an exception or | |||
limitation to copyright. More considerations for licensors: | |||
wiki.creativecommons.org/Considerations_for_licensors | |||
Considerations for the public: By using one of our public | |||
licenses, a licensor grants the public permission to use the | |||
licensed material under specified terms and conditions. If | |||
the licensor's permission is not necessary for any reason--for | |||
example, because of any applicable exception or limitation to | |||
copyright--then that use is not regulated by the license. Our | |||
licenses grant only permissions under copyright and certain | |||
other rights that a licensor has authority to grant. Use of | |||
the licensed material may still be restricted for other | |||
reasons, including because others have copyright or other | |||
rights in the material. A licensor may make special requests, | |||
such as asking that all changes be marked or described. | |||
Although not required by our licenses, you are encouraged to | |||
respect those requests where reasonable. More considerations | |||
for the public: | |||
wiki.creativecommons.org/Considerations_for_licensees | |||
======================================================================= | |||
Creative Commons Attribution-ShareAlike 4.0 International Public | |||
License | |||
By exercising the Licensed Rights (defined below), You accept and agree | |||
to be bound by the terms and conditions of this Creative Commons | |||
Attribution-ShareAlike 4.0 International Public License ("Public | |||
License"). To the extent this Public License may be interpreted as a | |||
contract, You are granted the Licensed Rights in consideration of Your | |||
acceptance of these terms and conditions, and the Licensor grants You | |||
such rights in consideration of benefits the Licensor receives from | |||
making the Licensed Material available under these terms and | |||
conditions. | |||
Section 1 -- Definitions. | |||
a. Adapted Material means material subject to Copyright and Similar | |||
Rights that is derived from or based upon the Licensed Material | |||
and in which the Licensed Material is translated, altered, | |||
arranged, transformed, or otherwise modified in a manner requiring | |||
permission under the Copyright and Similar Rights held by the | |||
Licensor. For purposes of this Public License, where the Licensed | |||
Material is a musical work, performance, or sound recording, | |||
Adapted Material is always produced where the Licensed Material is | |||
synched in timed relation with a moving image. | |||
b. Adapter's License means the license You apply to Your Copyright | |||
and Similar Rights in Your contributions to Adapted Material in | |||
accordance with the terms and conditions of this Public License. | |||
c. BY-SA Compatible License means a license listed at | |||
creativecommons.org/compatiblelicenses, approved by Creative | |||
Commons as essentially the equivalent of this Public License. | |||
d. Copyright and Similar Rights means copyright and/or similar rights | |||
closely related to copyright including, without limitation, | |||
performance, broadcast, sound recording, and Sui Generis Database | |||
Rights, without regard to how the rights are labeled or | |||
categorized. For purposes of this Public License, the rights | |||
specified in Section 2(b)(1)-(2) are not Copyright and Similar | |||
Rights. | |||
e. Effective Technological Measures means those measures that, in the | |||
absence of proper authority, may not be circumvented under laws | |||
fulfilling obligations under Article 11 of the WIPO Copyright | |||
Treaty adopted on December 20, 1996, and/or similar international | |||
agreements. | |||
f. Exceptions and Limitations means fair use, fair dealing, and/or | |||
any other exception or limitation to Copyright and Similar Rights | |||
that applies to Your use of the Licensed Material. | |||
g. License Elements means the license attributes listed in the name | |||
of a Creative Commons Public License. The License Elements of this | |||
Public License are Attribution and ShareAlike. | |||
h. Licensed Material means the artistic or literary work, database, | |||
or other material to which the Licensor applied this Public | |||
License. | |||
i. Licensed Rights means the rights granted to You subject to the | |||
terms and conditions of this Public License, which are limited to | |||
all Copyright and Similar Rights that apply to Your use of the | |||
Licensed Material and that the Licensor has authority to license. | |||
j. Licensor means the individual(s) or entity(ies) granting rights | |||
under this Public License. | |||
k. Share means to provide material to the public by any means or | |||
process that requires permission under the Licensed Rights, such | |||
as reproduction, public display, public performance, distribution, | |||
dissemination, communication, or importation, and to make material | |||
available to the public including in ways that members of the | |||
public may access the material from a place and at a time | |||
individually chosen by them. | |||
l. Sui Generis Database Rights means rights other than copyright | |||
resulting from Directive 96/9/EC of the European Parliament and of | |||
the Council of 11 March 1996 on the legal protection of databases, | |||
as amended and/or succeeded, as well as other essentially | |||
equivalent rights anywhere in the world. | |||
m. You means the individual or entity exercising the Licensed Rights | |||
under this Public License. Your has a corresponding meaning. | |||
Section 2 -- Scope. | |||
a. License grant. | |||
1. Subject to the terms and conditions of this Public License, | |||
the Licensor hereby grants You a worldwide, royalty-free, | |||
non-sublicensable, non-exclusive, irrevocable license to | |||
exercise the Licensed Rights in the Licensed Material to: | |||
a. reproduce and Share the Licensed Material, in whole or | |||
in part; and | |||
b. produce, reproduce, and Share Adapted Material. | |||
2. Exceptions and Limitations. For the avoidance of doubt, where | |||
Exceptions and Limitations apply to Your use, this Public | |||
License does not apply, and You do not need to comply with | |||
its terms and conditions. | |||
3. Term. The term of this Public License is specified in Section | |||
6(a). | |||
4. Media and formats; technical modifications allowed. The | |||
Licensor authorizes You to exercise the Licensed Rights in | |||
all media and formats whether now known or hereafter created, | |||
and to make technical modifications necessary to do so. The | |||
Licensor waives and/or agrees not to assert any right or | |||
authority to forbid You from making technical modifications | |||
necessary to exercise the Licensed Rights, including | |||
technical modifications necessary to circumvent Effective | |||
Technological Measures. For purposes of this Public License, | |||
simply making modifications authorized by this Section 2(a) | |||
(4) never produces Adapted Material. | |||
5. Downstream recipients. | |||
a. Offer from the Licensor -- Licensed Material. Every | |||
recipient of the Licensed Material automatically | |||
receives an offer from the Licensor to exercise the | |||
Licensed Rights under the terms and conditions of this | |||
Public License. | |||
b. Additional offer from the Licensor -- Adapted Material. | |||
Every recipient of Adapted Material from You | |||
automatically receives an offer from the Licensor to | |||
exercise the Licensed Rights in the Adapted Material | |||
under the conditions of the Adapter's License You apply. | |||
c. No downstream restrictions. You may not offer or impose | |||
any additional or different terms or conditions on, or | |||
apply any Effective Technological Measures to, the | |||
Licensed Material if doing so restricts exercise of the | |||
Licensed Rights by any recipient of the Licensed | |||
Material. | |||
6. No endorsement. Nothing in this Public License constitutes or | |||
may be construed as permission to assert or imply that You | |||
are, or that Your use of the Licensed Material is, connected | |||
with, or sponsored, endorsed, or granted official status by, | |||
the Licensor or others designated to receive attribution as | |||
provided in Section 3(a)(1)(A)(i). | |||
b. Other rights. | |||
1. Moral rights, such as the right of integrity, are not | |||
licensed under this Public License, nor are publicity, | |||
privacy, and/or other similar personality rights; however, to | |||
the extent possible, the Licensor waives and/or agrees not to | |||
assert any such rights held by the Licensor to the limited | |||
extent necessary to allow You to exercise the Licensed | |||
Rights, but not otherwise. | |||
2. Patent and trademark rights are not licensed under this | |||
Public License. | |||
3. To the extent possible, the Licensor waives any right to | |||
collect royalties from You for the exercise of the Licensed | |||
Rights, whether directly or through a collecting society | |||
under any voluntary or waivable statutory or compulsory | |||
licensing scheme. In all other cases the Licensor expressly | |||
reserves any right to collect such royalties. | |||
Section 3 -- License Conditions. | |||
Your exercise of the Licensed Rights is expressly made subject to the | |||
following conditions. | |||
a. Attribution. | |||
1. If You Share the Licensed Material (including in modified | |||
form), You must: | |||
a. retain the following if it is supplied by the Licensor | |||
with the Licensed Material: | |||
i. identification of the creator(s) of the Licensed | |||
Material and any others designated to receive | |||
attribution, in any reasonable manner requested by | |||
the Licensor (including by pseudonym if | |||
designated); | |||
ii. a copyright notice; | |||
iii. a notice that refers to this Public License; | |||
iv. a notice that refers to the disclaimer of | |||
warranties; | |||
v. a URI or hyperlink to the Licensed Material to the | |||
extent reasonably practicable; | |||
b. indicate if You modified the Licensed Material and | |||
retain an indication of any previous modifications; and | |||
c. indicate the Licensed Material is licensed under this | |||
Public License, and include the text of, or the URI or | |||
hyperlink to, this Public License. | |||
2. You may satisfy the conditions in Section 3(a)(1) in any | |||
reasonable manner based on the medium, means, and context in | |||
which You Share the Licensed Material. For example, it may be | |||
reasonable to satisfy the conditions by providing a URI or | |||
hyperlink to a resource that includes the required | |||
information. | |||
3. If requested by the Licensor, You must remove any of the | |||
information required by Section 3(a)(1)(A) to the extent | |||
reasonably practicable. | |||
b. ShareAlike. | |||
In addition to the conditions in Section 3(a), if You Share | |||
Adapted Material You produce, the following conditions also apply. | |||
1. The Adapter's License You apply must be a Creative Commons | |||
license with the same License Elements, this version or | |||
later, or a BY-SA Compatible License. | |||
2. You must include the text of, or the URI or hyperlink to, the | |||
Adapter's License You apply. You may satisfy this condition | |||
in any reasonable manner based on the medium, means, and | |||
context in which You Share Adapted Material. | |||
3. You may not offer or impose any additional or different terms | |||
or conditions on, or apply any Effective Technological | |||
Measures to, Adapted Material that restrict exercise of the | |||
rights granted under the Adapter's License You apply. | |||
Section 4 -- Sui Generis Database Rights. | |||
Where the Licensed Rights include Sui Generis Database Rights that | |||
apply to Your use of the Licensed Material: | |||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right | |||
to extract, reuse, reproduce, and Share all or a substantial | |||
portion of the contents of the database; | |||
b. if You include all or a substantial portion of the database | |||
contents in a database in which You have Sui Generis Database | |||
Rights, then the database in which You have Sui Generis Database | |||
Rights (but not its individual contents) is Adapted Material, | |||
including for purposes of Section 3(b); and | |||
c. You must comply with the conditions in Section 3(a) if You Share | |||
all or a substantial portion of the contents of the database. | |||
For the avoidance of doubt, this Section 4 supplements and does not | |||
replace Your obligations under this Public License where the Licensed | |||
Rights include other Copyright and Similar Rights. | |||
Section 5 -- Disclaimer of Warranties and Limitation of Liability. | |||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE | |||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS | |||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF | |||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, | |||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, | |||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR | |||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, | |||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT | |||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT | |||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. | |||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE | |||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, | |||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, | |||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, | |||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR | |||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN | |||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR | |||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR | |||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. | |||
c. The disclaimer of warranties and limitation of liability provided | |||
above shall be interpreted in a manner that, to the extent | |||
possible, most closely approximates an absolute disclaimer and | |||
waiver of all liability. | |||
Section 6 -- Term and Termination. | |||
a. This Public License applies for the term of the Copyright and | |||
Similar Rights licensed here. However, if You fail to comply with | |||
this Public License, then Your rights under this Public License | |||
terminate automatically. | |||
b. Where Your right to use the Licensed Material has terminated under | |||
Section 6(a), it reinstates: | |||
1. automatically as of the date the violation is cured, provided | |||
it is cured within 30 days of Your discovery of the | |||
violation; or | |||
2. upon express reinstatement by the Licensor. | |||
For the avoidance of doubt, this Section 6(b) does not affect any | |||
right the Licensor may have to seek remedies for Your violations | |||
of this Public License. | |||
c. For the avoidance of doubt, the Licensor may also offer the | |||
Licensed Material under separate terms or conditions or stop | |||
distributing the Licensed Material at any time; however, doing so | |||
will not terminate this Public License. | |||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public | |||
License. | |||
Section 7 -- Other Terms and Conditions. | |||
a. The Licensor shall not be bound by any additional or different | |||
terms or conditions communicated by You unless expressly agreed. | |||
b. Any arrangements, understandings, or agreements regarding the | |||
Licensed Material not stated herein are separate from and | |||
independent of the terms and conditions of this Public License. | |||
Section 8 -- Interpretation. | |||
a. For the avoidance of doubt, this Public License does not, and | |||
shall not be interpreted to, reduce, limit, restrict, or impose | |||
conditions on any use of the Licensed Material that could lawfully | |||
be made without permission under this Public License. | |||
b. To the extent possible, if any provision of this Public License is | |||
deemed unenforceable, it shall be automatically reformed to the | |||
minimum extent necessary to make it enforceable. If the provision | |||
cannot be reformed, it shall be severed from this Public License | |||
without affecting the enforceability of the remaining terms and | |||
conditions. | |||
c. No term or condition of this Public License will be waived and no | |||
failure to comply consented to unless expressly agreed to by the | |||
Licensor. | |||
d. Nothing in this Public License constitutes or may be interpreted | |||
as a limitation upon, or waiver of, any privileges and immunities | |||
that apply to the Licensor or You, including from the legal | |||
processes of any jurisdiction or authority. | |||
======================================================================= | |||
Creative Commons is not a party to its public | |||
licenses. Notwithstanding, Creative Commons may elect to apply one of | |||
its public licenses to material it publishes and in those instances | |||
will be considered the “Licensor.” The text of the Creative Commons | |||
public licenses is dedicated to the public domain under the CC0 Public | |||
Domain Dedication. Except for the limited purpose of indicating that | |||
material is shared under a Creative Commons public license or as | |||
otherwise permitted by the Creative Commons policies published at | |||
creativecommons.org/policies, Creative Commons does not authorize the | |||
use of the trademark "Creative Commons" or any other trademark or logo | |||
of Creative Commons without its prior written consent including, | |||
without limitation, in connection with any unauthorized modifications | |||
to any of its public licenses or any other arrangements, | |||
understandings, or agreements concerning use of licensed material. For | |||
the avoidance of doubt, this paragraph does not form part of the | |||
public licenses. | |||
Creative Commons may be contacted at creativecommons.org. | |||
@@ -1,6 +1,5 @@ | |||
#!/bin/sh | |||
#The documentation is built statically and does not belong to the normal build process. | |||
#Updating is part of the development process, not compiling or packaging. | |||
#Run this before a release, or any time you want to update the docs or the README. | |||
@@ -8,10 +7,9 @@ | |||
#This script takes common snippets of information and updates or generates source info files from | |||
#them. | |||
# parse src/nsmd.cpp for API version, insert into /docs/src/api/index.adoc | |||
# parse /CHANGELOG first line for package version, insert into /meson.build and /docs/src/index.adoc | |||
# parse src/nsmd.cpp for package version, insert into /meson.build and /docs/src/index.adoc | |||
# generate /README.md (shares text with manual index) | |||
# generate /docs/src/index.adoc (shares text with readme) | |||
# generate manpages (need all kind of information) | |||
# generate manpages | |||
# convert all .adoc files to html in /docs/ (This enables github to directly present this dir as website) | |||
# | |||
#We do _not_ change the copyright date in files license-headers. | |||
@@ -23,11 +21,14 @@ set -u #Trace unset variables as an error. | |||
#Change pwd to root dir | |||
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) | |||
cd "$parent_path"/../.. | |||
[ -f "CHANGELOG" ] || exit 1 #assert correct dir | |||
[ -f "CHANGELOG" ] || ( echo "not in the root dir"; exit 1 ) #assert correct dir | |||
[ -f "build/nsmd" ] || ( echo "no build/ dir with binaries"; exit 1 ) #assert build was made, for manpages | |||
#Gather data | |||
ROOT=$(pwd) #save for later | |||
VERSION=$(head -n 1 "CHANGELOG") | |||
VERSION=$(grep "define VERSION_STRING" "src/nsmd.cpp" | cut -d ' ' -f 3) #Get version as "1.4" string | |||
VERSION="${VERSION%\"}" #Remove " | |||
VERSION="${VERSION#\"}" #Remove " | |||
_MAJORAPI=$(grep "define NSM_API_VERSION_MAJOR" "src/nsmd.cpp" | cut -d ' ' -f 3) | |||
_MINORAPI=$(grep "define NSM_API_VERSION_MINOR" "src/nsmd.cpp" | cut -d ' ' -f 3) | |||
@@ -37,6 +38,7 @@ APIVERSION=$_MAJORAPI"."$_MINORAPI | |||
echo "Root: $ROOT" | |||
echo "Version: $VERSION" | |||
echo "API Version: $APIVERSION" | |||
echo "Please make sure that your meson build dir is up to date for manpage generation" | |||
read -p "Is parsed data correct? Continue by writing files? [y|n] " -n 1 -r | |||
if [[ ! $REPLY =~ ^[Yy]$ ]] | |||
then | |||
@@ -45,23 +47,42 @@ then | |||
exit 1 | |||
fi | |||
echo | |||
echo | |||
#Package Version Number | |||
echo "Update meson.build version number" | |||
cd "$ROOT" | |||
sed -i "/^version :.*/c\version : '$VERSION'," meson.build #Find the version line and replace with entire new line | |||
echo "Update docs to programs version number" | |||
cd "$ROOT/docs/src" | |||
sed -i '/^\:revnumber.*/c\:revnumber: '$VERSION index.adoc #Find the revnumber line and replace with entire new line | |||
#API Version Number | |||
echo "Update API document to API version number" | |||
cd "$ROOT/docs/src/api" | |||
sed -i '/^\:revnumber.*/c\:revnumber: '$APIVERSION index.adoc #Find the revnumber line and replace with entire new line | |||
#Generate README.md | |||
echo "Generate README from snippets" | |||
cd "$ROOT/docs/src" | |||
cat "readme-00.md" "readme-01.md" "readme-02.md" > "$ROOT/README.md" | |||
#Generate website and documentation with Asciidoctor | |||
cd "$ROOT/docs" | |||
echo "Generate website and documentation with Asciidoctor using README snippets" | |||
echo " We generate directly into docs/ and not into e.g. docs/out because github can read docs/ directly." | |||
cd "$ROOT/docs/" | |||
mkdir -p "api" | |||
asciidoctor src/index.adoc -o index.html | |||
asciidoctor src/api/index.adoc -o api/index.html | |||
echo "Generate all manpages" | |||
cd "$ROOT/docs/src" #We tested earlier that a build-dir exists | |||
help2man ../../build/nsmd --version-string="nsmd Version $VERSION" --no-info --include manpage-common.h2m > nsmd.1 | |||
help2man ../../build/nsm-legacy-gui --version-string="nsm-legacy-gui Version $VERSION" --no-info --include manpage-common.h2m > nsm-legacy-gui.1 | |||
help2man ../../build/nsm-proxy --version-string="nsm-proxy Version $VERSION" --no-info --include manpage-common.h2m > nsm-proxy.1 | |||
help2man ../../build/nsm-proxy-gui --version-string="nsm-proxy-gui Version $VERSION" --no-info --include manpage-common.h2m > nsm-proxy-gui.1 | |||
help2man ../../build/jackpatch --version-string="jackpatch Version $VERSION" --no-info --include manpage-common.h2m > jackpatch.1 | |||
echo | |||
echo "Finished. You need to commit your changes to git manually" |
@@ -0,0 +1,30 @@ | |||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
.TH JACKPATCH "1" "July 2020" "jackpatch Version 1.4" "User Commands" | |||
.SH NAME | |||
jackpatch \- manual page for jackpatch Version 1.4 | |||
.SH DESCRIPTION | |||
jackpatch \- Remember the JACK Audio Connection Kit Graph in NSM | |||
.PP | |||
It is a module for the 'New Session Manager' and only communicates | |||
over OSC in an NSM\-Session and has no standalone functionality. | |||
.SS "Usage:" | |||
.IP | |||
jackpatch \fB\-\-help\fR | |||
.SH OPTIONS | |||
.TP | |||
\fB\-\-help\fR | |||
Show this screen | |||
.SH "REPORTING BUGS" | |||
https://github.com/linuxaudio/new-session-manager/issues | |||
.SH COPYRIGHT | |||
up to 2020: | |||
Jonathan Moore Liles https://non.tuxfamily.org/ | |||
from 2020: | |||
https://github.com/linuxaudio/new-session-manager | |||
.SH "SEE ALSO" | |||
The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
For example: | |||
xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
The documentation can also be found online https://github.com/linuxaudio/new-session-manager |
@@ -0,0 +1,24 @@ | |||
[name] | |||
jackpatch - JACK Audio Connection Kit environment saver for the "New Session Manager" | |||
[usage] | |||
jackapatch is a module for "New Session Manager". | |||
It only communicates over OSC in an NSM-Session and has no standalone functionality. | |||
[Reporting bugs] | |||
https://github.com/linuxaudio/new-session-manager/issues | |||
[copyright] | |||
up to 2020: | |||
Jonathan Moore Liles https://non.tuxfamily.org/ | |||
from 2020: | |||
https://github.com/linuxaudio/new-session-manager | |||
[see also] | |||
The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
For example: | |||
xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
The documentation can also be found online https://github.com/linuxaudio/new-session-manager |
@@ -0,0 +1,17 @@ | |||
[Reporting bugs] | |||
https://github.com/linuxaudio/new-session-manager/issues | |||
[copyright] | |||
up to 2020: | |||
Jonathan Moore Liles https://non.tuxfamily.org/ | |||
from 2020: | |||
https://github.com/linuxaudio/new-session-manager | |||
[see also] | |||
The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
For example: | |||
xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
The documentation can also be found online https://github.com/linuxaudio/new-session-manager |
@@ -0,0 +1,36 @@ | |||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
.TH NSM-LEGACY-GUI "1" "July 2020" "nsm-legacy-gui Version 1.4" "User Commands" | |||
.SH NAME | |||
nsm-legacy-gui \- manual page for nsm-legacy-gui Version 1.4 | |||
.SH DESCRIPTION | |||
legacy\-gui \- FLTK GUI for the 'New Session Manager' | |||
.SS "Usage:" | |||
.IP | |||
legacy\-gui | |||
legacy\-gui \fB\-\-help\fR | |||
.SH OPTIONS | |||
.TP | |||
\fB\-\-help\fR | |||
Show this screen | |||
.TP | |||
\fB\-\-nsm\-url\fR url | |||
Connect to a running nsmd [Example: osc.udp://mycomputer.localdomain:38356/]. | |||
.TP | |||
\fB\-\-\fR | |||
Everything after \fB\-\-\fR will be given to nsmd as server options. See nsmd \fB\-\-help\fR . | |||
.PP | |||
For backwards compatibility this executable also exist as symlink 'non\-session_manager | |||
.SH "REPORTING BUGS" | |||
https://github.com/linuxaudio/new-session-manager/issues | |||
.SH COPYRIGHT | |||
up to 2020: | |||
Jonathan Moore Liles https://non.tuxfamily.org/ | |||
from 2020: | |||
https://github.com/linuxaudio/new-session-manager | |||
.SH "SEE ALSO" | |||
The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
For example: | |||
xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
The documentation can also be found online https://github.com/linuxaudio/new-session-manager |
@@ -0,0 +1,34 @@ | |||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
.TH NSM-PROXY-GUI "1" "July 2020" "nsm-proxy-gui Version 1.4" "User Commands" | |||
.SH NAME | |||
nsm-proxy-gui \- manual page for nsm-proxy-gui Version 1.4 | |||
.SH DESCRIPTION | |||
nsm\-proxy\-gui \- GUI for nsm\-proxy, a wrapper for executables without direct NSM\-Support. | |||
.SS "Usage:" | |||
.IP | |||
nsm\-proxy\-gui \fB\-\-help\fR | |||
nsm\-proxy\-gui \fB\-\-connect\-to\fR | |||
.SH OPTIONS | |||
.TP | |||
\fB\-\-help\fR | |||
Show this screen | |||
.TP | |||
\fB\-\-connect\-to\fR | |||
Connect to running nsm\-proxy | |||
.PP | |||
nsmd\-proxy\-gui is usually not called by the user directly, | |||
but autostarted when nsm\-proxy is added to a session (through a GUI). | |||
.SH "REPORTING BUGS" | |||
https://github.com/linuxaudio/new-session-manager/issues | |||
.SH COPYRIGHT | |||
up to 2020: | |||
Jonathan Moore Liles https://non.tuxfamily.org/ | |||
from 2020: | |||
https://github.com/linuxaudio/new-session-manager | |||
.SH "SEE ALSO" | |||
The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
For example: | |||
xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
The documentation can also be found online https://github.com/linuxaudio/new-session-manager |
@@ -0,0 +1,30 @@ | |||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
.TH NSM-PROXY "1" "July 2020" "nsm-proxy Version 1.4" "User Commands" | |||
.SH NAME | |||
nsm-proxy \- manual page for nsm-proxy Version 1.4 | |||
.SH DESCRIPTION | |||
nsm\-proxy \- Wrapper for executables without direct NSM\-Support. | |||
.PP | |||
It is a module for the 'New Session Manager' and only communicates | |||
over OSC in an NSM\-Session and has no standalone functionality. | |||
.SS "Usage:" | |||
.IP | |||
nsm\-proxy \fB\-\-help\fR | |||
.SH OPTIONS | |||
.TP | |||
\fB\-\-help\fR | |||
Show this screen | |||
.SH "REPORTING BUGS" | |||
https://github.com/linuxaudio/new-session-manager/issues | |||
.SH COPYRIGHT | |||
up to 2020: | |||
Jonathan Moore Liles https://non.tuxfamily.org/ | |||
from 2020: | |||
https://github.com/linuxaudio/new-session-manager | |||
.SH "SEE ALSO" | |||
The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
For example: | |||
xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
The documentation can also be found online https://github.com/linuxaudio/new-session-manager |
@@ -0,0 +1,50 @@ | |||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15. | |||
.TH NSMD "1" "July 2020" "nsmd Version 1.4" "User Commands" | |||
.SH NAME | |||
nsmd \- manual page for nsmd Version 1.4 | |||
.SH DESCRIPTION | |||
nsmd \- Daemon and server for the 'New Session Manager' | |||
.SS "Usage:" | |||
.IP | |||
nsmd | |||
nsmd \fB\-\-help\fR | |||
nsmd \fB\-\-version\fR | |||
.SH OPTIONS | |||
.TP | |||
\fB\-\-help\fR | |||
Show this screen | |||
.TP | |||
\fB\-\-version\fR | |||
Show version | |||
.TP | |||
\fB\-\-osc\-port\fR portnum | |||
OSC port number [Default: provided by system]. | |||
.TP | |||
\fB\-\-session\-root\fR path | |||
Base path for sessions [Default: \fI\,~/NSM\/\fP Sessions]. | |||
.TP | |||
\fB\-\-load\-session\fR name | |||
Load existing session [Example: "My Song"]. | |||
.TP | |||
\fB\-\-gui\-url\fR url | |||
Connect to running legacy\-gui [Example: osc.udp://mycomputer.localdomain:38356/]. | |||
.TP | |||
\fB\-\-detach\fR | |||
Detach from console. | |||
.PP | |||
nsmd can be run headless with existing sessions. To create new ones it is recommended to use a GUI | |||
such as nsm\-legacy\-gui (included) or Argodejo (separate package) | |||
.SH "REPORTING BUGS" | |||
https://github.com/linuxaudio/new-session-manager/issues | |||
.SH COPYRIGHT | |||
up to 2020: | |||
Jonathan Moore Liles https://non.tuxfamily.org/ | |||
from 2020: | |||
https://github.com/linuxaudio/new-session-manager | |||
.SH "SEE ALSO" | |||
The full documentation for NSM is maintained as html site in your systems doc-dir. | |||
For example: | |||
xdg-open file:///usr/share/doc/new-session-manager/index.html | |||
The documentation can also be found online https://github.com/linuxaudio/new-session-manager |
@@ -1,4 +1,10 @@ | |||
## Documentation and Manual | |||
See the generated website installed in your systems SHARE dir or docs/out/index.html from this | |||
repository. Alternatively you can read the online version on our github page. All are the same | |||
files. We also provide a set of manpages for each executable (see below). | |||
## Fork and License | |||
This is a fork of non-session-manager, by Jonathan Moore Liles <male@tuxfamily.net> http://non.tuxfamily.org/ | |||
which was released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. | |||
@@ -6,11 +12,20 @@ which was released under the GNU GENERAL PUBLIC LICENSE Version 2, June 1991. | |||
All files, except nsm.h kept in this fork were GPL "version 2 of the License, or (at your | |||
option) any later version." | |||
`nsm.h` is licensed under the ISCL. | |||
`nsm.h` is licensed under the ISC License. | |||
New-Session-Manager changed the license to GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007. | |||
See file COPYING | |||
Documentation in docs/ is licensed Creative Commons CC-By-Sa. | |||
It consist of mostly generated files and snippet files which do not have a license header for | |||
technical reasons. | |||
All original documentation source files are CC-By-Sa Version v4.0 (see file docs/src/LICENSE), | |||
the source file docs/src/api/index.adoc is a derived work from NON-Session-Managers API file which | |||
is licensed CC-By-Sa v2.5. Therefore our derived API document is also CC-By-Sa v2.5 | |||
(see files docs/src/api/readme.txt and docs/src/api/LICENSE) | |||
## Build | |||
The build system is meson. | |||
@@ -1,7 +0,0 @@ | |||
Hallo Welt | |||
Lol Rolf | |||
== Cool Cool | |||
Cool |
@@ -17,7 +17,16 @@ | |||
# along with New-Session-Manager. If not, see <https://www.gnu.org/licenses/>. | |||
############################################################################## | |||
project('new-session-manager', 'c', 'cpp', version : '1.4', license : 'GPLv3') | |||
#Please keep the version number in a separate line so we can automatically update it. | |||
#Also keep it at the beginning of the line and leave spaces around the colon. | |||
#It's source is in src/nsmd.cpp #DEFINE VERSION_STRING | |||
project( | |||
'new-session-manager', | |||
'c', 'cpp', | |||
version : '1.4', | |||
license : 'GPLv3', | |||
) | |||
############## | |||
#Dependencies | |||
@@ -96,6 +105,11 @@ if get_option('nsm-legacy-gui') | |||
) | |||
install_data('src/org.linuxaudio.nsm-legacy-gui.desktop', install_dir : get_option('datadir') / 'applications') | |||
install_data('docs/index.html', install_dir : get_option('datadir') / 'doc/new-session-manager') | |||
install_data('docs/api/index.html', install_dir : get_option('datadir') / 'doc/new-session-manager/api') | |||
install_data('CHANGELOG', install_dir : get_option('datadir') / 'doc/new-session-manager') | |||
install_data('README.md', install_dir : get_option('datadir') / 'doc/new-session-manager') | |||
install_man(['docs/src/nsmd.1', 'docs/src/nsm-proxy.1', 'docs/src/nsm-proxy-gui.1', 'docs/src/nsm-legacy-gui.1', 'docs/src/jackpatch.1', ]) | |||
meson.add_install_script('sh', '-c', | |||
'ln -sf nsm-legacy-gui ${DESTDIR}@0@/@1@/non-session-manager'.format( | |||
@@ -45,6 +45,7 @@ | |||
#include <errno.h> | |||
#include <stdlib.h> | |||
#include <jack/jack.h> | |||
#include <getopt.h> | |||
#include <lo/lo.h> | |||
@@ -756,7 +757,40 @@ port_registration_callback( jack_port_id_t id, int reg, void *arg ) | |||
int | |||
main ( int argc, char **argv ) | |||
{ | |||
/* get_args( argc, argv ); */ | |||
//Command line parameters | |||
static struct option long_options[] = | |||
{ | |||
{ "help", no_argument, 0, 'h' }, | |||
{ 0, 0, 0, 0 } | |||
}; | |||
int option_index = 0; | |||
int c = 0; | |||
while ( ( c = getopt_long_only( argc, argv, "", long_options, &option_index ) ) != -1 ) | |||
{ | |||
switch ( c ) | |||
{ | |||
case 'h': | |||
{ | |||
const char *usage = | |||
"jackpatch - Remember the JACK Audio Connection Kit Graph in NSM\n\n" | |||
"It is a module for the 'New Session Manager' and only communicates\n" | |||
"over OSC in an NSM-Session and has no standalone functionality.\n" | |||
"\n" | |||
"Usage:\n" | |||
" jackpatch --help\n" | |||
"\n" | |||
"Options:\n" | |||
" --help Show this screen\n" | |||
""; | |||
printf ( usage ); | |||
exit(0); | |||
break; | |||
} | |||
} | |||
} | |||
jack_status_t status; | |||
@@ -1348,7 +1348,22 @@ main (int argc, char **argv ) | |||
break; | |||
} | |||
case 'h': | |||
printf( "Usage: %s [--nsm-url...] [-- server options ]\n\n", argv[0] ); | |||
//Print usage message according to POSIX.1-2017 | |||
const char *usage = | |||
"legacy-gui - FLTK GUI for the 'New Session Manager'\n\n" | |||
"Usage:\n" | |||
" legacy-gui\n" | |||
" legacy-gui --help\n" | |||
"\n" | |||
"Options:\n" | |||
" --help Show this screen\n" | |||
" --nsm-url url Connect to a running nsmd [Example: osc.udp://mycomputer.localdomain:38356/].\n" | |||
" -- Everything after -- will be given to nsmd as server options. See nsmd --help .\n" | |||
"\n" | |||
"For backwards compatibility this executable also exist as symlink 'non-session_manager\n" | |||
"\n" | |||
""; | |||
printf ( usage ); | |||
exit(0); | |||
break; | |||
} | |||
@@ -35,6 +35,8 @@ | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include <getopt.h> | |||
lo_server losrv; | |||
lo_address nsmp_addr; | |||
@@ -171,9 +173,9 @@ void | |||
handle_save_signal ( Fl_Widget *o, void *v ) | |||
{ | |||
int sig = 0; | |||
const char* picked = ui->save_signal_choice->mvalue()->label(); | |||
if ( !strcmp( picked, "SIGUSR1" ) ) | |||
sig = SIGUSR1; | |||
else if ( !strcmp( picked, "SIGUSR2" ) ) | |||
@@ -189,9 +191,9 @@ void | |||
handle_stop_signal ( Fl_Widget *o, void *v ) | |||
{ | |||
int sig = SIGTERM; | |||
const char* picked = ui->stop_signal_choice->mvalue()->label(); | |||
if ( !strcmp( picked, "SIGTERM" ) ) | |||
sig = SIGTERM; | |||
else if ( !strcmp( picked, "SIGINT" ) ) | |||
@@ -250,28 +252,71 @@ check_error ( void *v ) | |||
o->show(); | |||
} | |||
free(client_error); | |||
client_error = NULL; | |||
} | |||
Fl::repeat_timeout( 0.5f, check_error, v ); | |||
} | |||
int | |||
main ( int argc, char **argv ) | |||
{ | |||
if ( argc != 3 ) | |||
//Command line parameters | |||
const char * gui_url = NULL; | |||
static struct option long_options[] = | |||
{ | |||
fprintf( stderr, "Usage: %s --connect-to url\n", argv[0] ); | |||
return 1; | |||
{ "connect-to", required_argument, 0, 'u' }, | |||
{ "help", no_argument, 0, 'h' }, | |||
{ 0, 0, 0, 0 } | |||
}; | |||
int option_index = 0; | |||
int c = 0; | |||
while ( ( c = getopt_long_only( argc, argv, "", long_options, &option_index ) ) != -1 ) | |||
{ | |||
switch ( c ) | |||
{ | |||
case 'u': | |||
{ | |||
gui_url = optarg; | |||
break; | |||
} | |||
case 'h': | |||
{ | |||
const char *usage = | |||
"nsm-proxy-gui - GUI for nsm-proxy, a wrapper for executables without direct NSM-Support.\n\n" | |||
"Usage:\n" | |||
" nsm-proxy-gui --help\n" | |||
" nsm-proxy-gui --connect-to\n" | |||
"\n" | |||
"Options:\n" | |||
" --help Show this screen\n" | |||
" --connect-to Connect to running nsm-proxy\n" | |||
"\n\n" | |||
"nsmd-proxy-gui is usually not called by the user directly,\n" | |||
"but autostarted when nsm-proxy is added to a session (through a GUI).\n" | |||
""; | |||
printf ( usage ); | |||
exit(0); | |||
break; | |||
} | |||
} | |||
} | |||
if ( gui_url == NULL ) | |||
exit(1); | |||
init_osc( NULL ); | |||
nsmp_addr = lo_address_new_from_url( argv[2] ); | |||
nsmp_addr = lo_address_new_from_url( gui_url ); | |||
printf( "Connecting to nsm-proxy at: %s\n", argv[2] ); | |||
if ( ! nsmp_addr ) | |||
exit(1); | |||
printf( "Connecting to nsm-proxy at: %s\n", gui_url ); | |||
ui = new NSM_Proxy_UI; | |||
@@ -280,7 +325,7 @@ main ( int argc, char **argv ) | |||
connect_ui(); | |||
lo_send_from( nsmp_addr, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/update", "" ); | |||
w->show(); | |||
Fl::lock(); | |||
@@ -40,6 +40,7 @@ | |||
#include <sys/signalfd.h> | |||
#include <sys/stat.h> | |||
#include <sys/wait.h> | |||
#include <getopt.h> | |||
static lo_server losrv; | |||
static lo_address nsm_addr; | |||
@@ -149,7 +150,7 @@ public: | |||
if ( ! (pid = fork()) ) | |||
{ | |||
MESSAGE( "Launching %s\n", _executable ); | |||
// char *args[] = { strdup( executable ), NULL }; | |||
char *cmd; | |||
@@ -160,13 +161,13 @@ public: | |||
asprintf( &cmd, "exec %s >error.log 2>&1", _executable ); | |||
char *args[] = { strdup("/bin/sh"), strdup( "-c" ), cmd, NULL }; | |||
setenv( "NSM_CLIENT_ID", nsm_client_id, 1 ); | |||
setenv( "NSM_SESSION_NAME", nsm_display_name, 1 ); | |||
if ( _config_file ) | |||
setenv( "CONFIG_FILE", _config_file, 1 ); | |||
unsetenv( "NSM_URL" ); | |||
if ( -1 == execvp( "/bin/sh", args ) ) | |||
{ | |||
WARNING( "Error starting process: %s", strerror( errno ) ); | |||
@@ -188,7 +189,7 @@ public: | |||
{ | |||
_stop_signal = s; | |||
} | |||
void label ( const char *s ) | |||
{ | |||
if ( _label ) | |||
@@ -208,14 +209,14 @@ public: | |||
bool dump ( const char *path ) | |||
{ | |||
{ | |||
char *fname; | |||
asprintf( &fname, "%s/%s", path, CONFIG_FILE_NAME ); | |||
FILE *fp = fopen( fname, "w" ); | |||
free( fname ); | |||
if ( !fp ) | |||
{ | |||
WARNING( "Error opening file for saving: %s", strerror( errno ) ); | |||
@@ -234,7 +235,7 @@ public: | |||
fprintf( fp, "save signal\n\t%i\n", _save_signal ); | |||
fprintf( fp, "stop signal\n\t%i\n", _stop_signal ); | |||
if ( _label && strlen(_label) ) | |||
fprintf( fp, "label\n\t%s\n", _label ); | |||
@@ -255,13 +256,13 @@ public: | |||
char *name; | |||
char *value; | |||
MESSAGE( "Loading file config \"%s\"", path ); | |||
MESSAGE( "Loading file config \"%s\"", path ); | |||
while ( 2 == fscanf( fp, "%m[^\n]\n\t%m[^\n]\n", &name, &value ) ) | |||
{ | |||
DMESSAGE( "%s=%s", name, value ); | |||
if ( !strcmp( name, "executable" ) ) | |||
_executable = value; | |||
else if (!strcmp( name, "arguments" ) ) | |||
@@ -383,10 +384,10 @@ osc_announce_reply ( const char *path, const char *types, lo_arg **argv, int arg | |||
return -1; | |||
printf( "Successfully registered. NSM says: %s", &argv[1]->s ); | |||
nsm_is_active = 1; | |||
nsm_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ) ); | |||
return 0; | |||
} | |||
@@ -417,19 +418,19 @@ show_gui ( void ) | |||
char executable[] = "nsm-proxy-gui"; | |||
MESSAGE( "Launching %s\n", executable ); | |||
char *url = lo_server_get_url( losrv ); | |||
char *args[] = { executable, strdup( "--connect-to" ), url, NULL }; | |||
if ( -1 == execvp( executable, args ) ) | |||
{ | |||
WARNING( "Error starting process: %s", strerror( errno ) ); | |||
exit(1); | |||
} | |||
} | |||
gui_pid = pid; | |||
lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_shown", "" ); | |||
@@ -492,7 +493,7 @@ osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_mess | |||
mkdir( new_path, 0777 ); | |||
chdir( new_path ); | |||
asprintf( &new_filename, "%s/%s", new_path, CONFIG_FILE_NAME ); | |||
struct stat st; | |||
@@ -517,7 +518,7 @@ osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_mess | |||
if ( project_file ) | |||
free( project_file ); | |||
project_file = strdup( new_path ); | |||
// new_filename; | |||
@@ -546,7 +547,7 @@ int | |||
osc_save_signal ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) | |||
{ | |||
nsm_proxy->save_signal( argv[0]->i ); | |||
return 0; | |||
} | |||
@@ -554,7 +555,7 @@ int | |||
osc_stop_signal ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) | |||
{ | |||
nsm_proxy->stop_signal( argv[0]->i ); | |||
return 0; | |||
} | |||
@@ -567,7 +568,7 @@ osc_start ( const char *path, const char *types, lo_arg **argv, int argc, lo_mes | |||
{ | |||
hide_gui(); | |||
} | |||
return 0; | |||
} | |||
@@ -575,7 +576,7 @@ int | |||
osc_kill ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) | |||
{ | |||
nsm_proxy->kill(); | |||
return 0; | |||
} | |||
@@ -662,9 +663,9 @@ void handle_sigchld ( ) | |||
int status; | |||
pid_t pid = waitpid(-1, &status, WNOHANG); | |||
if (pid <= 0) | |||
if (pid <= 0) | |||
break; | |||
if ( pid == gui_pid ) | |||
{ | |||
lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" ); | |||
@@ -725,6 +726,40 @@ main ( int argc, char **argv ) | |||
signal_fd = signalfd( -1, &mask, SFD_NONBLOCK ); | |||
//Command line parameters | |||
static struct option long_options[] = | |||
{ | |||
{ "help", no_argument, 0, 'h' }, | |||
{ 0, 0, 0, 0 } | |||
}; | |||
int option_index = 0; | |||
int c = 0; | |||
while ( ( c = getopt_long_only( argc, argv, "", long_options, &option_index ) ) != -1 ) | |||
{ | |||
switch ( c ) | |||
{ | |||
case 'h': | |||
{ | |||
const char *usage = | |||
"nsm-proxy - Wrapper for executables without direct NSM-Support.\n\n" | |||
"It is a module for the 'New Session Manager' and only communicates\n" | |||
"over OSC in an NSM-Session and has no standalone functionality.\n" | |||
"\n" | |||
"Usage:\n" | |||
" nsm-proxy --help\n" | |||
"\n" | |||
"Options:\n" | |||
" --help Show this screen\n" | |||
""; | |||
printf ( usage ); | |||
exit(0); | |||
break; | |||
} | |||
} | |||
} | |||
nsm_proxy = new NSM_Proxy(); | |||
init_osc( NULL ); | |||
@@ -748,16 +783,16 @@ main ( int argc, char **argv ) | |||
for ( ;; ) | |||
{ | |||
ssize_t s = read(signal_fd, &fdsi, sizeof(struct signalfd_siginfo)); | |||
if (s == sizeof(struct signalfd_siginfo)) | |||
{ | |||
if (fdsi.ssi_signo == SIGCHLD) | |||
handle_sigchld(); | |||
} | |||
lo_server_recv_noblock( losrv, 500 ); | |||
if ( die_now ) | |||
die(); | |||
} | |||
} | |||
} |
@@ -69,6 +69,7 @@ static char *session_root; | |||
#define NSM_API_VERSION_MAJOR 1 | |||
#define NSM_API_VERSION_MINOR 2 | |||
#define VERSION_STRING "1.4" | |||
#define ERR_OK 0 | |||
#define ERR_GENERAL_ERROR -1 | |||
@@ -2432,17 +2433,17 @@ int main(int argc, char *argv[]) | |||
load_session = optarg; | |||
break; | |||
case 'v': | |||
printf( "%s 1.4\n", argv[0] ); | |||
printf( "%s " VERSION_STRING "\n", argv[0] ); | |||
exit(0); | |||
break; | |||
case 'h': | |||
//Print usage message according to POSIX.1-2017 | |||
const char *usage = | |||
"%s\n\n" | |||
"nsmd - Daemon and server for the 'New Session Manager'\n\n" | |||
"Usage:\n" | |||
" %s\n" | |||
" %s --help\n" | |||
" %s --version\n" | |||
" nsmd\n" | |||
" nsmd --help\n" | |||
" nsmd --version\n" | |||
"\n" | |||
"Options:\n" | |||
" --help Show this screen\n" | |||
@@ -2452,8 +2453,11 @@ int main(int argc, char *argv[]) | |||
" --load-session name Load existing session [Example: \"My Song\"].\n" | |||
" --gui-url url Connect to running legacy-gui [Example: osc.udp://mycomputer.localdomain:38356/].\n" | |||
" --detach Detach from console.\n" | |||
"\n\n" | |||
"nsmd can be run headless with existing sessions. To create new ones it is recommended to use a GUI\n" | |||
"such as nsm-legacy-gui (included) or Argodejo (separate package)\n" | |||
""; | |||
printf ( usage, argv[0], argv[0], argv[0], argv[0] ); | |||
printf ( usage ); | |||
exit(0); | |||
break; | |||
} | |||