aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--colors.sh98
-rw-r--r--gitconfig/mitch (renamed from gitconfig)0
-rw-r--r--login_conf6
-rw-r--r--mkshrc3
-rw-r--r--openvpn.conf293
-rw-r--r--openvpn_client.conf123
-rw-r--r--pacman.conf102
-rw-r--r--php-pkgs53
-rwxr-xr-xstrip_openvpn_cfg.sh2
-rw-r--r--tmx.sh55
10 files changed, 57 insertions, 678 deletions
diff --git a/colors.sh b/colors.sh
deleted file mode 100644
index e5322e1..0000000
--- a/colors.sh
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/bin/bash
-#https://gist.githubusercontent.com/HaleTom/89ffe32783f89f403bba96bd7bcd1263/raw/e50a28ec54188d2413518788de6c6367ffcea4f7/print256colours.sh
-
-# Tom Hale, 2016. MIT Licence.
-# Print out 256 colours, with each number printed in its corresponding colour
-# See http://askubuntu.com/questions/821157/print-a-256-color-test-pattern-in-the-terminal/821163#821163
-
-set -eu # Fail on errors or undeclared variables
-
-printable_colours=256
-
-# Return a colour that contrasts with the given colour
-# Bash only does integer division, so keep it integral
-function contrast_colour {
- local r g b luminance
- colour="$1"
-
- if (( colour < 16 )); then # Initial 16 ANSI colours
- (( colour == 0 )) && printf "15" || printf "0"
- return
- fi
-
- # Greyscale # rgb_R = rgb_G = rgb_B = (number - 232) * 10 + 8
- if (( colour > 231 )); then # Greyscale ramp
- (( colour < 244 )) && printf "15" || printf "0"
- return
- fi
-
- # All other colours:
- # 6x6x6 colour cube = 16 + 36*R + 6*G + B # Where RGB are [0..5]
- # See http://stackoverflow.com/a/27165165/5353461
-
- # r=$(( (colour-16) / 36 ))
- g=$(( ((colour-16) % 36) / 6 ))
- # b=$(( (colour-16) % 6 ))
-
- # If luminance is bright, print number in black, white otherwise.
- # Green contributes 587/1000 to human perceived luminance - ITU R-REC-BT.601
- (( g > 2)) && printf "0" || printf "15"
- return
-
- # Uncomment the below for more precise luminance calculations
-
- # # Calculate percieved brightness
- # # See https://www.w3.org/TR/AERT#color-contrast
- # # and http://www.itu.int/rec/R-REC-BT.601
- # # Luminance is in range 0..5000 as each value is 0..5
- # luminance=$(( (r * 299) + (g * 587) + (b * 114) ))
- # (( $luminance > 2500 )) && printf "0" || printf "15"
-}
-
-# Print a coloured block with the number of that colour
-function print_colour {
- local colour="$1" contrast
- contrast=$(contrast_colour "$1")
- printf "\e[48;5;%sm" "$colour" # Start block of colour
- printf "\e[38;5;%sm%3d" "$contrast" "$colour" # In contrast, print number
- printf "\e[0m " # Reset colour
-}
-
-# Starting at $1, print a run of $2 colours
-function print_run {
- local i
- for (( i = "$1"; i < "$1" + "$2" && i < printable_colours; i++ )) do
- print_colour "$i"
- done
- printf " "
-}
-
-# Print blocks of colours
-function print_blocks {
- local start="$1" i
- local end="$2" # inclusive
- local block_cols="$3"
- local block_rows="$4"
- local blocks_per_line="$5"
- local block_length=$((block_cols * block_rows))
-
- # Print sets of blocks
- for (( i = start; i <= end; i += (blocks_per_line-1) * block_length )) do
- printf "\n" # Space before each set of blocks
- # For each block row
- for (( row = 0; row < block_rows; row++ )) do
- # Print block columns for all blocks on the line
- for (( block = 0; block < blocks_per_line; block++ )) do
- print_run $(( i + (block * block_length) )) "$block_cols"
- done
- (( i += block_cols )) # Prepare to print the next row
- printf "\n"
- done
- done
-}
-
-print_run 0 16 # The first 16 colours are spread over the whole spectrum
-printf "\n"
-print_blocks 16 231 6 6 3 # 6x6x6 colour cube between 16 and 231 inclusive
-print_blocks 232 255 12 2 1 # Not 50, but 24 Shades of Grey
-
diff --git a/gitconfig b/gitconfig/mitch
index d5663ce..d5663ce 100644
--- a/gitconfig
+++ b/gitconfig/mitch
diff --git a/login_conf b/login_conf
deleted file mode 100644
index c3b651d..0000000
--- a/login_conf
+++ /dev/null
@@ -1,6 +0,0 @@
-# Use UTF-8... why this isn't default is a little
-# bit beyond me.
-me:\
- :charset=UTF-8:\
- :lang=en_US.UTF-8:\
- :setenv=LC_COLLATE=C:
diff --git a/mkshrc b/mkshrc
index 45386f6..7b5170e 100644
--- a/mkshrc
+++ b/mkshrc
@@ -347,7 +347,8 @@ updatetmuxconf() {
fi
}
updategitconf() {
- pulldotfile "gitconfig"
+ file="gitconfig/$1"
+ pull -u "${UPDATE_URL}${file}" -f "$HOME/.gitconfig"
}
updateshell() {
pulldotfile "mkshrc"
diff --git a/openvpn.conf b/openvpn.conf
deleted file mode 100644
index e242bb0..0000000
--- a/openvpn.conf
+++ /dev/null
@@ -1,293 +0,0 @@
-#################################################
-# Sample OpenVPN 2.0 config file for #
-# multi-client server. #
-# #
-# This file is for the server side #
-# of a many-clients one-server #
-# OpenVPN configuration. #
-# #
-# OpenVPN also supports #
-# single-machine single-machine #
-# configurations (See the Examples page #
-# on the web site for more info). #
-# #
-# This config should work on Windows #
-# or Linux/BSD systems. Remember on #
-# Windows to quote pathnames and use #
-# double backslashes, e.g.: #
-# "C:\\Program Files\\OpenVPN\\config\\foo.key" #
-# #
-# Comments are preceded with '#' or ';' #
-#################################################
-
-# Which local IP address should OpenVPN
-# listen on? (optional)
-;local a.b.c.d
-
-# Which TCP/UDP port should OpenVPN listen on?
-# If you want to run multiple OpenVPN instances
-# on the same machine, use a different port
-# number for each one. You will need to
-# open up this port on your firewall.
-port 1194
-
-# TCP or UDP server?
-;proto tcp
-proto udp
-
-# "dev tun" will create a routed IP tunnel,
-# "dev tap" will create an ethernet tunnel.
-# Use "dev tap0" if you are ethernet bridging
-# and have precreated a tap0 virtual interface
-# and bridged it with your ethernet interface.
-# If you want to control access policies
-# over the VPN, you must create firewall
-# rules for the the TUN/TAP interface.
-# On non-Windows systems, you can give
-# an explicit unit number, such as tun0.
-# On Windows, use "dev-node" for this.
-# On most systems, the VPN will not function
-# unless you partially or fully disable
-# the firewall for the TUN/TAP interface.
-dev tap0
-; dev tun0
-
-# Windows needs the TAP-Windows adapter name
-# from the Network Connections panel if you
-# have more than one. On XP SP2 or higher,
-# you may need to selectively disable the
-# Windows firewall for the TAP adapter.
-# Non-Windows systems usually don't need this.
-;dev-node MyTap
-
-# SSL/TLS root certificate (ca), certificate
-# (cert), and private key (key). Each client
-# and the server must have their own cert and
-# key file. The server and all clients will
-# use the same ca file.
-#
-# See the "easy-rsa" directory for a series
-# of scripts for generating RSA certificates
-# and private keys. Remember to use
-# a unique Common Name for the server
-# and each of the client certificates.
-#
-# Any X509 key management system can be used.
-# OpenVPN can also use a PKCS #12 formatted key file
-# (see "pkcs12" directive in man page).
-ca root.crt
-cert riedstra.us.crt
-key riedstra.us.key # This file should be kept secret
-
-# Diffie hellman parameters.
-# Generate your own with:
-# openssl dhparam -out dh1024.pem 1024
-# Substitute 2048 for 1024 if you are using
-# 2048 bit keys.
-dh dh4096.pem
-
-# Configure server mode and supply a VPN subnet
-# for OpenVPN to draw client addresses from.
-# The server will take 10.8.0.1 for itself,
-# the rest will be made available to clients.
-# Each client will be able to reach the server
-# on 10.8.0.1. Comment this line out if you are
-# ethernet bridging. See the man page for more info.
-server 10.8.0.0 255.255.255.0
-server-ipv6 fc00:baad:a55:1:1::/64
-
-# Maintain a record of client virtual IP address
-# associations in this file. If OpenVPN goes down or
-# is restarted, reconnecting clients can be assigned
-# the same virtual IP address from the pool that was
-# previously assigned.
-ifconfig-pool-persist ipp.txt
-
-# Configure server mode for ethernet bridging.
-# You must first use your OS's bridging capability
-# to bridge the TAP interface with the ethernet
-# NIC interface. Then you must manually set the
-# IP/netmask on the bridge interface, here we
-# assume 10.8.0.4/255.255.255.0. Finally we
-# must set aside an IP range in this subnet
-# (start=10.8.0.50 end=10.8.0.100) to allocate
-# to connecting clients. Leave this line commented
-# out unless you are ethernet bridging.
-;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
-
-# Push routes to the client to allow it
-# to reach other private subnets behind
-# the server. Remember that these
-# private subnets will also need
-# to know to route the OpenVPN client
-# address pool (10.8.0.0/255.255.255.0)
-# back to the OpenVPN server.
-;push "route 192.168.10.0 255.255.255.0"
-;push "route 192.168.20.0 255.255.255.0"
-push "route-ipv6 2000::/3"
-
-# To assign specific IP addresses to specific
-# clients or if a connecting client has a private
-# subnet behind it that should also have VPN access,
-# use the subdirectory "ccd" for client-specific
-# configuration files (see man page for more info).
-
-# EXAMPLE: Suppose the client
-# having the certificate common name "Thelonious"
-# also has a small subnet behind his connecting
-# machine, such as 192.168.40.128/255.255.255.248.
-# First, uncomment out these lines:
-;client-config-dir ccd
-;route 192.168.40.128 255.255.255.248
-# Then create a file ccd/Thelonious with this line:
-# iroute 192.168.40.128 255.255.255.248
-# This will allow Thelonious' private subnet to
-# access the VPN. This example will only work
-# if you are routing, not bridging, i.e. you are
-# using "dev tun" and "server" directives.
-
-# EXAMPLE: Suppose you want to give
-# Thelonious a fixed VPN IP address of 10.9.0.1.
-# First uncomment out these lines:
-;client-config-dir ccd
-;route 10.9.0.0 255.255.255.252
-# Then add this line to ccd/Thelonious:
-# ifconfig-push 10.9.0.1 10.9.0.2
-
-# Suppose that you want to enable different
-# firewall access policies for different groups
-# of clients. There are two methods:
-# (1) Run multiple OpenVPN daemons, one for each
-# group, and firewall the TUN/TAP interface
-# for each group/daemon appropriately.
-# (2) (Advanced) Create a script to dynamically
-# modify the firewall in response to access
-# from different clients. See man
-# page for more info on learn-address script.
-;learn-address ./script
-
-# If enabled, this directive will configure
-# all clients to redirect their default
-# network gateway through the VPN, causing
-# all IP traffic such as web browsing and
-# and DNS lookups to go through the VPN
-# (The OpenVPN server machine may need to NAT
-# the TUN/TAP interface to the internet in
-# order for this to work properly).
-# CAVEAT: May break client's network config if
-# client's local DHCP server packets get routed
-# through the tunnel. Solution: make sure
-# client's local DHCP server is reachable via
-# a more specific route than the default route
-# of 0.0.0.0/0.0.0.0.
-;push "redirect-gateway"
-
-# Certain Windows-specific network settings
-# can be pushed to clients, such as DNS
-# or WINS server addresses. CAVEAT:
-# http://openvpn.net/faq.html#dhcpcaveats
-;push "dhcp-option DNS 10.8.0.1"
-;push "dhcp-option WINS 10.8.0.1"
-
-# Uncomment this directive to allow different
-# clients to be able to "see" each other.
-# By default, clients will only see the server.
-# To force clients to only see the server, you
-# will also need to appropriately firewall the
-# server's TUN/TAP interface.
-client-to-client
-
-# Uncomment this directive if multiple clients
-# might connect with the same certificate/key
-# files or common names. This is recommended
-# only for testing purposes. For production use,
-# each client should have its own certificate/key
-# pair.
-#
-# IF YOU HAVE NOT GENERATED INDIVIDUAL
-# CERTIFICATE/KEY PAIRS FOR EACH CLIENT,
-# EACH HAVING ITS OWN UNIQUE "COMMON NAME",
-# UNCOMMENT THIS LINE OUT.
-; duplicate-cn
-
-# The keepalive directive causes ping-like
-# messages to be sent back and forth over
-# the link so that each side knows when
-# the other side has gone down.
-# Ping every 10 seconds, assume that remote
-# peer is down if no ping received during
-# a 120 second time period.
-keepalive 10 60
-
-# For extra security beyond that provided
-# by SSL/TLS, create an "HMAC firewall"
-# to help block DoS attacks and UDP port flooding.
-#
-# Generate with:
-# openvpn --genkey --secret ta.key
-#
-# The server and each client must have
-# a copy of this key.
-# The second parameter should be '0'
-# on the server and '1' on the clients.
-;tls-auth ta.key 0 # This file is secret
-
-# Select a cryptographic cipher.
-# This config item must be copied to
-# the client config file as well.
-;cipher BF-CBC # Blowfish (default)
-;cipher AES-128-CBC # AES
-;cipher DES-EDE3-CBC # Triple-DES
-
-# Enable compression on the VPN link.
-# If you enable it here, you must also
-# enable it in the client config file.
-; comp-lzo
-
-# The maximum number of concurrently connected
-# clients we want to allow.
-;max-clients 100
-
-# It's a good idea to reduce the OpenVPN
-# daemon's privileges after initialization.
-#
-# You can uncomment this out on
-# non-Windows systems.
-;user nobody
-;group nobody
-
-# The persist options will try to avoid
-# accessing certain resources on restart
-# that may no longer be accessible because
-# of the privilege downgrade.
-persist-key
-persist-tun
-
-# Output a short status file showing
-# current connections, truncated
-# and rewritten every minute.
-status openvpn-status.log
-
-# By default, log messages will go to the syslog (or
-# on Windows, if running as a service, they will go to
-# the "\Program Files\OpenVPN\log" directory).
-# Use log or log-append to override this default.
-# "log" will truncate the log file on OpenVPN startup,
-# while "log-append" will append to it. Use one
-# or the other (but not both).
-log openvpn.log
-;log-append openvpn.log
-
-# Set the appropriate level of log
-# file verbosity.
-#
-# 0 is silent, except for fatal errors
-# 4 is reasonable for general usage
-# 5 and 6 can help to debug connection problems
-# 9 is extremely verbose
-verb 3
-
-# Silence repeating messages. At most 20
-# sequential messages of the same message
-# category will be output to the log.
-mute 20
diff --git a/openvpn_client.conf b/openvpn_client.conf
deleted file mode 100644
index 447743c..0000000
--- a/openvpn_client.conf
+++ /dev/null
@@ -1,123 +0,0 @@
-##############################################
-# Sample client-side OpenVPN 2.0 config file #
-# for connecting to multi-client server. #
-# #
-# This configuration can be used by multiple #
-# clients, however each client should have #
-# its own cert and key files. #
-# #
-# On Windows, you might want to rename this #
-# file so it has a .ovpn extension #
-##############################################
-
-# Specify that we are a client and that we
-# will be pulling certain config file directives
-# from the server.
-client
-
-# Use the same setting as you are using on
-# the server.
-# On most systems, the VPN will not function
-# unless you partially or fully disable
-# the firewall for the TUN/TAP interface.
-dev tap0
-; dev tun0
-
-# Windows needs the TAP-Windows adapter name
-# from the Network Connections panel
-# if you have more than one. On XP SP2,
-# you may need to disable the firewall
-# for the TAP adapter.
-;dev-node MyTap
-
-# Are we connecting to a TCP or
-# UDP server? Use the same setting as
-# on the server.
-;proto tcp
-proto udp
-
-# The hostname/IP and port of the server.
-# You can have multiple remote entries
-# to load balance between the servers.
-remote riedstra.us 1194
-;remote my-server-2 1194
-
-# Choose a random host from the remote
-# list for load-balancing. Otherwise
-# try hosts in the order specified.
-;remote-random
-
-# Keep trying indefinitely to resolve the
-# host name of the OpenVPN server. Very useful
-# on machines which are not permanently connected
-# to the internet such as laptops.
-resolv-retry infinite
-
-# Most clients don't need to bind to
-# a specific local port number.
-nobind
-
-# Downgrade privileges after initialization (non-Windows only)
-;user nobody
-;group nobody
-
-# Try to preserve some state across restarts.
-persist-key
-persist-tun
-
-# If you are connecting through an
-# HTTP proxy to reach the actual OpenVPN
-# server, put the proxy server/IP and
-# port number here. See the man page
-# if your proxy server requires
-# authentication.
-;http-proxy-retry # retry on connection failures
-;http-proxy [proxy server] [proxy port #]
-
-# Wireless networks often produce a lot
-# of duplicate packets. Set this flag
-# to silence duplicate packet warnings.
-;mute-replay-warnings
-
-# SSL/TLS parms.
-# See the server config file for more
-# description. It's best to use
-# a separate .crt/.key file pair
-# for each client. A single ca
-# file can be used for all clients.
-ca root.crt
-cert openvpn-vertex.crt
-key openvpn-vertex.key
-
-# Verify server certificate by checking
-# that the certicate has the nsCertType
-# field set to "server". This is an
-# important precaution to protect against
-# a potential attack discussed here:
-# http://openvpn.net/howto.html#mitm
-#
-# To use this feature, you will need to generate
-# your server certificates with the nsCertType
-# field set to "server". The build-key-server
-# script in the easy-rsa folder will do this.
-;ns-cert-type server
-
-# If a tls-auth key is used on the server
-# then every client must also have the key.
-;tls-auth ta.key 1
-
-# Select a cryptographic cipher.
-# If the cipher option is used on the server
-# then you must also specify it here.
-;cipher x
-
-# Enable compression on the VPN link.
-# Don't enable this unless it is also
-# enabled in the server config file.
-; comp-lzo
-
-# Set log file verbosity.
-verb 3
-
-# Silence repeating messages
-;mute 20
diff --git a/pacman.conf b/pacman.conf
deleted file mode 100644
index d924522..0000000
--- a/pacman.conf
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-# /etc/pacman.conf
-#
-# See the pacman.conf(5) manpage for option and repository directives
-
-#
-# GENERAL OPTIONS
-#
-[options]
-# The following paths are commented out with their default values listed.
-# If you wish to use different paths, uncomment and update the paths.
-#RootDir = /
-#DBPath = /var/lib/pacman/
-#CacheDir = /var/cache/pacman/pkg/
-#LogFile = /var/log/pacman.log
-#GPGDir = /etc/pacman.d/gnupg/
-HoldPkg = pacman glibc
-#XferCommand = /usr/bin/curl -C - -f %u > %o
-#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
-#CleanMethod = KeepInstalled
-#UseDelta = 0.7
-Architecture = auto
-
-# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
-#IgnorePkg =
-#IgnoreGroup =
-
-#NoUpgrade =
-#NoExtract =
-
-# Misc options
-#UseSyslog
-#Color
-#TotalDownload
-CheckSpace
-#VerbosePkgLists
-
-# By default, pacman accepts packages signed by keys that its local keyring
-# trusts (see pacman-key and its man page), as well as unsigned packages.
-SigLevel = Required DatabaseOptional
-LocalFileSigLevel = Optional
-#RemoteFileSigLevel = Required
-
-# NOTE: You must run `pacman-key --init` before first using pacman; the local
-# keyring can then be populated with the keys of all official Arch Linux
-# packagers with `pacman-key --populate archlinux`.
-
-#
-# REPOSITORIES
-# - can be defined here or included from another file
-# - pacman will search repositories in the order defined here
-# - local/custom mirrors can be added here or in separate files
-# - repositories listed first will take precedence when packages
-# have identical names, regardless of version number
-# - URLs will have $repo replaced by the name of the current repo
-# - URLs will have $arch replaced by the name of the architecture
-#
-# Repository entries are of the format:
-# [repo-name]
-# Server = ServerName
-# Include = IncludePath
-#
-# The header [repo-name] is crucial - it must be present and
-# uncommented to enable the repo.
-#
-
-# The testing repositories are disabled by default. To enable, uncomment the
-# repo name header and Include lines. You can add preferred servers immediately
-# after the header, and they will be used before the default mirrors.
-
-#[testing]
-#Include = /etc/pacman.d/mirrorlist
-
-[core]
-Server = http://mirror.rygel.us/archlinux/$repo/os/$arch
-# Include = /etc/pacman.d/mirrorlist
-
-[extra]
-Server = http://mirror.rygel.us/archlinux/$repo/os/$arch
-# Include = /etc/pacman.d/mirrorlist
-
-#[community-testing]
-#Include = /etc/pacman.d/mirrorlist
-
-[community]
-Server = http://mirror.rygel.us/archlinux/$repo/os/$arch
-# Include = /etc/pacman.d/mirrorlist
-
-# If you want to run 32 bit applications on your x86_64 system,
-# enable the multilib repositories as required here.
-
-#[multilib-testing]
-#Include = /etc/pacman.d/mirrorlist
-
-#[multilib]
-#Include = /etc/pacman.d/mirrorlist
-
-# An example of a custom package repository. See the pacman manpage for
-# tips on creating your own repositories.
-#[custom]
-#SigLevel = Optional TrustAll
-#Server = file:///home/custompkgs
diff --git a/php-pkgs b/php-pkgs
deleted file mode 100644
index 58cc808..0000000
--- a/php-pkgs
+++ /dev/null
@@ -1,53 +0,0 @@
-php56
-php56-bcmath
-php56-bz2
-php56-calendar
-php56-ctype
-php56-curl
-php56-dom
-php56-exif
-php56-extensions
-php56-fileinfo
-php56-filter
-php56-ftp
-php56-gd
-php56-gettext
-php56-gmp
-php56-hash
-php56-iconv
-php56-imap
-php56-json
-php56-mbstring
-php56-mcrypt
-php56-mysql
-php56-mysqli
-php56-opcache
-php56-openssl
-php56-pdo
-php56-pdo_dblib
-php56-pdo_mysql
-php56-pdo_pgsql
-php56-pdo_sqlite
-php56-phar
-php56-posix
-php56-pspell
-php56-readline
-php56-session
-php56-simplexml
-php56-soap
-php56-sockets
-php56-sqlite3
-php56-sybase_ct
-php56-sysvmsg
-php56-sysvsem
-php56-sysvshm
-php56-tidy
-php56-tokenizer
-php56-wddx
-php56-xml
-php56-xmlreader
-php56-xmlrpc
-php56-xmlwriter
-php56-xsl
-php56-zip
-php56-zlib
diff --git a/strip_openvpn_cfg.sh b/strip_openvpn_cfg.sh
deleted file mode 100755
index be70273..0000000
--- a/strip_openvpn_cfg.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-cat $@ | sed -re'/^(;|#)/d' -e'/^$/d'
diff --git a/tmx.sh b/tmx.sh
new file mode 100644
index 0000000..0d66c27
--- /dev/null
+++ b/tmx.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+# Modified further by Mitchell Riedstra to be compatible with /bin/sh
+
+#
+# Modified TMUX start script from:
+# http://forums.gentoo.org/viewtopic-t-836006-start-0.html
+#
+# Store it to `~/bin/tmx` and issue `chmod +x`.
+#
+
+# Works because bash automatically trims by assigning to variables and by
+# passing arguments
+trim() { echo $1; }
+
+if [ -z "$1" ]; then
+ echo "Specify session name as the first argument"
+ exit
+fi
+
+# Only because I often issue `ls` to this script by accident
+if [ "$1" == "ls" ]; then
+ tmux ls
+ exit
+fi
+
+base_session="$1"
+# This actually works without the trim() on all systems except OSX
+tmux_nb=$(trim `tmux ls | grep "^$base_session" | wc -l`)
+if [ "$tmux_nb" == "0" ]; then
+ echo "Launching tmux base session $base_session ..."
+ tmux new-session -s $base_session
+else
+ # Make sure we are not already in a tmux session
+ if [ -z "$TMUX" ]; then
+ # Kill defunct sessions first
+ old_sessions=$(tmux ls 2>/dev/null | egrep "^[0-9]{14}.*[0-9]+\)$" | cut -f 1 -d:)
+ for old_session_id in $old_sessions; do
+ tmux kill-session -t $old_session_id
+ done
+
+ echo "Launching copy of base session $base_session ..."
+ # Session is is date and time to prevent conflict
+ session_id=`date +%Y%m%d%H%M%S`
+ # Create a new session (without attaching it) and link to base session
+ # to share windows
+ tmux new-session -d -t $base_session -s $session_id
+ # Create a new window in that session
+ #tmux new-window
+ # Attach to the new session
+ tmux attach-session -t $session_id
+ # When we detach from it, kill the session
+ tmux kill-session -t $session_id
+ fi
+fi