For those of us who prefer to open TeamSpeak3 through the terminal (because of reasons). You might enjoy the changes I made to ts3client_runscript.sh (as an extension, I don’t actually change the existing script).
I have the personal preference of placing TeamSpeak3 under /opt/teamspeak3/
, but in doing so I realised adding this directory to my PATH results in all kinds of things ‘leaking’ into the shell’s aliases (which we really do not care about).
To fix this, I created the dir: /opt/teamspeak3/bin/
, copied said runscript into it and changed it into the following:
/opt/teamspeak3/bin/ts3
#!/bin/bash
cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
#If the bundled openssl is used, the app needs to find out where the CA certs
#are located. This needs to be done with the help of openssl installed on the
#system, before we include "." in the LD_LIBRARY_PATH.
#First test if the bundled libssl is used
#If bundeled libssl is used and SSL_CERT_FILE and SSL_CERT_DIR are not already set.
TS3_PATH="/opt/teamspeak3/"
if [ -f "${TS3_PATH}/libssl.so.1.0.0" -a -x "$(command -v openssl)" -a -z "${SSL_CERT_FILE+x}" -a -z "${SSL_CERT_DIR+x}" ]
then
#Set them to sane defaults.
#Get ssl dir according to system openssl
OPENSSL_DIR="$(openssl version -d | grep -Po '(?<=\").*(?=\")')"
#Is cert.pem located there?
if [ -f "${OPENSSL_DIR}/cert.pem" ]
then
#Use this file
export SSL_CERT_FILE="${OPENSSL_DIR}/cert.pem"
#Is certs dir located there?
elif [ -d "${OPENSSL_DIR}/certs" ]
then
#Use this dir
export SSL_CERT_DIR="${OPENSSL_DIR}/certs"
else
#An unknown configuration was found. Or openssl/ca certificates were not
#installed
echo "Could not find CA certificates location"
exit 3
fi
fi
export KDEDIRS=
export KDEDIR=
export QTDIR="${TS3_PATH}"
export QT_PLUGIN_PATH="${TS3_PATH}"
export LD_LIBRARY_PATH="${TS3_PATH}:${LD_LIBRARY_PATH}"
# Enable logging to stdout when '--log' is provided
ENABLE_STDOUT_LOG=0
if [ -n "${1+x}" ] && [ "${1}" == "--log" ]; then
ENABLE_STDOUT_LOG=1
fi
if [ -e "${TS3_PATH}/ts3client_linux_x86" ]; then
if [ "${ENABLE_STDOUT_LOG}" -eq "0" ]; then
sh -c "${TS3_PATH}/ts3client_linux_x86" $@ &> /dev/null &
else
sh -c "${TS3_PATH}/ts3client_linux_x86" $@
fi
else
if [ "${ENABLE_STDOUT_LOG}" -eq "0" ]; then
sh -c "${TS3_PATH}/ts3client_linux_amd64" $@ &> /dev/null &
else
sh -c "${TS3_PATH}/ts3client_linux_amd64" $@
fi
fi
What this allows you to do, once /opt/teamspeak3/bin
is added to PATH, is run TeamSpeak from the terminal, where it doesn’t ‘eat up your terminal’ - or have the program running in the terminal for as long as the process is active - and it lets you not care about the logs which are spit out to stdout.
To run TeamSpeak: ts3
To run TeamSpeak with logs in stdout (aka normal behaviour): ts3 --log
If it’s useful to anyone, great! If not, oh well.
Quick edit: if you have a preference to place (run) scripts under, don’t be afraid to place it there.
The paths to binaries are corrected to not use a relative path from where the script is, but the absolute path specified @ line 11 (a.k.a. please change TS3_PATH="/opt/teamspeak3/"
to wherever you placed TeamSpeak3).