#!/usr/bin/env bash
set -euo pipefail
# Sets up the Fishtank camera grid like:
# | Living room | Kitchen | Laundry room |
# | Bedroom 1 | Bedroom 2 | Bedroom 3 | Bedroom 4 |
# | Garage | Hallway (downstairs) | Hallway (upstairs) |
# Double click to focus a view. Press M to toggle mute. Starts all of the feeds muted by default.
# Uses compressor to make the feeds more audible.
# Run this on a workspace that doesn't have anything else on it.
MPV_OPTS=("--mute" "--no-terminal" '--af=lavfi="acompressor=mode=upward"')
get_url_for_area() {
case "$AREA" in
living-room)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiIwZGYwYTNjYmFkNTJhN2EyZWNhYThmNTdlNjNjNTAzMyIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.POqr8zX8m9AiJDFurk2jNEK_Zh8zVy8JY4-6JyhJEILkFAp7sLL_1hoAiymwxnavMppoiGF3SGYuW9etw-r-by6Fa1kOlOyGw_Z4VwthozuBBLX-f_-itcMn775Zkp05ntNjm4IqeOUl9BftJzHPsf-PRHhbcGoxnv5IKtyFcU7K41YEoK7iSiHYQHJMTawXkpj0ih0ijNMyn8a6H91JRDA2SLAdKHlZWkeHK-WBmo9ow7M9ohUb3qeo7B-DprTRSRMt_puh37ZwCWuTrSJzZAS2tv8JpGz7HS5xmGfMN7us2Om7hA-Lw9EJZg9afFur0Cpjz2QE35QMH9-5H2_45A;;
kitchen)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiIyYjc4YWMzNWViYTI0ODBiN2RiZDRmOWVkODY2OTk3YSIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.h4vDur5wwsMTykMfDWfGCmG9_7dVurspHOk3PsLPm3MgELbEVa2lIC8nmugaVNWRXPXPxMo3hog2o068P5pBdCie3S_8kdthgEI8uW99jr3ubsAkUyTWCa1htv5ohQKey43JPsdRVZ86fBoO2r4hRf0aoHVRDxpxcX3xtQNUWKfooxtHH_3gh3kKmPOt9J7TvDP071PsMqXCpEmENsDakkJGDwSXhOjwj0U6M9XtmG3fqkFfcK9-ym11cV-7j3EgBJCRkfXTkiMoLZfdX-uiI3jitR8VwfmdvbhrsyeWCerHWfgvkp_VIXu_nxm892aQVIK_vH9J6MKUNBCSvAFnrA;;
laundry-room)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiI5ZjVkNmE0ZDliODM4NDAyNzQ0YThjOTY1MjliNmVlMiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.tTq_nVdBm45GOKE7fdq4auR4nTTAKhnHLU3MQ4o_m9mwd1WxVIXOpco5rcZRwOijXJjLHQHsnN5IS3qp5CYB9PXGC677LvEe3IaP8xss7hDj7SFDqBQjHjbM51RcGC87NWQ_N5rpQWHmwgJfWp9BytASJoQ13Ggi8wZ2Q_kcnnxvi0kITbJ6HS3GV_-Pr1O9xY_cAxwgKMd-K8j481nGoqhPQJTta41FEr_r-Thwh0zuCZAjIbm5gCVdBaR2waNtAop4chQK1jBev6AErEFFjYolNExv5NEmtfk0MQ87dZ6Sj1ANKKhn4glJXubyMpkb_dOP9RYMkwaZSRHHB7GCHg;;
bedroom-1)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiI5MzRmM2UyYjU4NTM0MTZjNGU5MDJiYzE0YzY1NjNhZSIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.BFctrcbbfD2IxMssSoo3AM7NkRo-sknpRZsP6UvSdNw1I-n6OCg5CoeSCqS1ThGGmBFzU7JpAWrspi-4Qj2JdtjfP6oxIGNPG1iGrDOjontxBUuEQMABC06O95nrH_JC8cOWj5Ikpr19kzuiJJQoklzp-AvOB_8UheuD48kgGUyFV8rLCg74wFfZqiq8Ha4I0rhI79Ez65t7IXXKMGSfsF3wrduliXgFI1Eh_J5U-ZkqkOhjR25XqoEChnD2VRlm492pJ9qSj9lpQGDJ0rgXQdd-lpqUMhOV5RIaRHB1jNbZyXft78Jhg-Ipr0h_f0ZiCGlRzsL6nckBsbpGFGmQ4A;;
bedroom-2)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiIyZWI2N2U2NzQ4NjYyZGUyMmQ5ZmI2MTY3YmVhNDg5NyIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.Y2_n61ORiqCtMHX688wPzR5bn8O7ub4cCCTg--8m_6Gw84bECXLnIbxsfhHxlFHiJn0dj-g91_4VIMK01LseT-IKXDkK728qkcOqg05_CqifoQKEwJ8pnjGPifo_cV81dY7PZwcC2yzkFwlVIPkhTzKARqOnS-qIpfd138p0ld-ZsUnW_uNBa3Jz3mzqEkN7PQ83xCuNuvDl6rVIr_qSK-Je2_P0UnC9BEvFi0T7mOxSoFZYvEPlgGeJD70MgjkQFenqYQ3EBtdTg3zzvEcnitIQ_DA58OOTnXRMrzjaHaRHYxRmSmPeHox3PzeGBlJCSwHXPH_bobHmUZg_Sn-V9w;;
bedroom-3)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiI0NjQ3ODQ1YjQ1NmRjMjQ5ZWUwMzBiY2E0Njk2ZThjYyIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.mWKE0iygBkMhQ83IlNwJODiOEiKWc56XT8dBbQQhI86jD0lZh2LzSLLwoBk03_C5-N1cTRZoc-dE8cZE_VMAKHkXidpQWSsje1H7sy2gptCWPCqgK0N0dkXSNQEDXGw8Ev5qhc_wWj77Jqn2K61glolP9WlntOl4WAfwMT1onIWMZUpIXEA_HdfcxRmudXPKYRjnFjdmWcc_9GUy3hoYM7lu_9y8XWDoM4XXDYLtBfd584q4TTQaNZ01qvwXp8ldxWwcGYv9ZMnpyjWIKMZXjCfDMAp25pUhorpriwim3nog7hCBxbKboJBsvimmCmHR04ztxMEcaUPBRqkHZsV-eA;;
bedroom-4)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiJlZDRhOTdiMzc3OTliNDZiMjc2NDU0NDFiMzM0MjU2ZiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.EKxY0YDp92r-hexJ21ld3cHS_rRXcuqMS4B92SRdFskP-Me81ctdVDH5GpRCAG3kjakpvTW7gmGEjNoEIqC0Rh5z1iankyomxo_LtSY3ckCd6qvFElVmpFCI0ovoDs2M48s2MaRRkUyA4aYLXAGH77GzhQoS-PsHX6DMTgH1RhzGb7lgl-aKaXaKqC-4jeRuNDBcP8Uw_XGTLzmeFD62y4DyRTqNzUjsMQJGkIA-cSmsAhZtdN_aX9t4v09hKjSfAXA2xVPv0mX4hyCXOtIG7rGFfmjWDxOceJRwpdZnRd0-bBPUvx4mXDKO-6u_aEMgjp_V3PU90YeRGDRRKLKZSQ;;
garage)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiI5Y2Q2ZWMyZGVkM2U5MDY1NmFkZTc1NzE5ODgxMmZmYiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.OVl9WCOPMo9BOzlmiUHjmAPIUyZ2ElJX0GmbXK1Yk7XPooVc1xQWp2fEnPbvADj4RhDVb_ymj4EANqT1Zm_E_BmwOvV0ln0ICnsdWjcTMjpEpHHCws-AEvVI3bt0R57VCbQTFcdhBAla4ef5duhlMxVkqx_HRi45fL00tePHxgkbsMwUZYfMvXlmqx7EjKSdmLFmcai8elDzHoT-PsTfwS6pihytz3p8glDAO3PpGRDS78rZ33B8O-GriBqfvLBWljDxCXRlZzBdOpbGHFk3uG-jns5SjSPsp9jG6gWyGZmWDOhYEBMR0ExsYw5tWgUT-be5fdl01HM6-ZXcKyni7w;;
hallway-upstairs)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiIwNDdiODVjOTIyYTUyOWFiNDBiNmRjNWU3MmMzMWVmNCIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.gS0IT6cqVM0YauvCVjLLwX_o8MrS4W_3anxTEhNJJUmwBJQMxgA5Rc5ySKlNI87j8FgEU7P95x-Iu2_vlXLrjVazVpB5UNNkVNY10SK7oX7lK4uypFpGb1UU6Plx2Q2tjSQ3YHQ57BRlxwzRn_U-Vl2b0kProOW3Pq-CykKBPQaviLhy7gFl9m4tX0BQsFZMDpVglDgsFrp0aC-k4-rcZuqqKy1NjD9JD_GIK_dpfhWQmPuEaV-j0LtPvh8huKK5UgC_lhH-1QC_tKoI0tiWCyo07GoLC8be6WSYzlHOqh1txqOWQPA84DSN1A7Ash79nuEyRkpPhJzvypXIeU8GGw;;
hallway-downstairs)
echo eyJhbGciOiJSUzI1NiIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5In0.eyJzdWIiOiJhZDI1ODU1NWYyNDU4NDA2ZTZkZDc0OGQ1OGNkMWI4YyIsImtpZCI6ImYwNDVlYjBjNDUzN2FkMWZlMWM5Yjk4NzNhOGZjNGQ5IiwiZXhwIjoxNjgyNDcwMzU2fQ.nBtBsVtuzftIrNORkUL__5SvBhfslaVJSu1Vjm-FWdqwUBfDAadVoRVymd7HtI-4mmkijnh7uVzTeTP2PACuxhUQE17B7DOExVr3IFUqrABrx266YxyWfjLyO2dYh6t_FkEJDecIuW2ov1hV2M4zABNwUFniNwKFNs70C8K9eaClU5ZTcYjlw81ZD0_CxgdaLeRhqvVIBvcUoe3_rKX2qIY2_hWVHqbnpV_Or9kk6ngbBNQ-1rLD6WAcm9WMl_34Sc633dOyGob8df0z2faapABISpiPS_VI0PNublNbiT_klxgbnFoto7tkbNvReZsUDpDEtDkMa3Xx_O4q9vjpPw;;
esac
}
get_video_link() {
echo "https://customer-jwh6wms36w6479b4.cloudflarestream.com/$(get_url_for_area "$1")/manifest/video.m3u8?parentOrigin=https://www.fishtank.live"
}
spawn_video_in_background() {
AREA="$1"
mpv "${MPV_OPTS[@]}" --x11-name="fishtank-$AREA" "$(get_video_link "$AREA")" &
}
do_for_area() {
AREA="$1"
shift
i3-msg "[instance=fishtank-$AREA]" "$@"
}
# Living area
spawn_video_in_background living-room
spawn_video_in_background kitchen
spawn_video_in_background laundry-room
# Bedrooms
spawn_video_in_background bedroom-1
spawn_video_in_background bedroom-2
spawn_video_in_background bedroom-3
spawn_video_in_background bedroom-4
# Garage & Hallway
spawn_video_in_background garage
spawn_video_in_background hallway-upstairs
spawn_video_in_background hallway-downstairs
# Wait for videos to load in
sleep 10
# Stuff everything into a vertical layout
do_for_area living-room focus
i3-msg split vertical
i3-msg mark the-tank
do_for_area garage move window to mark the-tank
do_for_area bedroom-1 move window to mark the-tank
# Living room, kitchen and laundry room feeds at the top
do_for_area living-room focus
i3-msg split horizontal
i3-msg mark the-tank-living-area
do_for_area laundry-room move window to mark the-tank-living-area
do_for_area kitchen move window to mark the-tank-living-area
# Bedrooms in the middle
do_for_area bedroom-1 focus
i3-msg split horizontal
i3-msg mark the-tank-bedrooms
do_for_area bedroom-4 move window to mark the-tank-bedrooms
do_for_area bedroom-3 move window to mark the-tank-bedrooms
do_for_area bedroom-2 move window to mark the-tank-bedrooms
# Garage and hallway at the bottom
do_for_area garage focus
i3-msg split horizontal
i3-msg mark the-tank-misc
do_for_area hallway-upstairs move window to mark the-tank-misc
do_for_area hallway-downstairs move window to mark the-tank-misc
# vim: ts=2 sw=2 et