├── .github └── prlint.json ├── .gitignore ├── .gitmodules ├── .pre-commit-config.yaml ├── CODEOWNER ├── LICENSE ├── OpenCV ├── .ipynb_checkpoints │ ├── install_opencv4.1.1_jetson-checkpoint.sh │ └── remove-checkpoint.sh ├── install_opencv4.1.1_jetson.sh └── remove.sh ├── README.md ├── contribute.md ├── set_cuda.sh └── src ├── .hugo_build.lock ├── LICENSE ├── README.md ├── config.toml ├── config └── _default │ ├── markup.toml │ ├── menus │ └── menu.en.toml │ └── params.toml ├── content ├── _index.md ├── docs │ ├── _index.md │ ├── clarity │ │ ├── _index.md │ │ ├── blogging.md │ │ ├── customize.md │ │ ├── features.md │ │ ├── getting-started.md │ │ ├── images.md │ │ ├── syntax-highlighting.md │ │ └── theme-overrides.md │ └── compose │ │ ├── _index.md │ │ ├── customize.md │ │ ├── graphs-charts-tables.md │ │ ├── install-theme.md │ │ ├── mermaid.md │ │ ├── organize-content.md │ │ ├── search.md │ │ ├── shortcodes-example.md │ │ ├── shortcodes.md │ │ └── use-forestry-cms.md ├── posts │ └── .gitkeep ├── projects.csv ├── search.md └── themes.csv ├── go.mod ├── go.sum ├── netlify.toml ├── resources └── _gen │ └── assets │ └── sass │ └── sass │ ├── main.sass_ca26857cefa9076967ab300682271513.content │ └── main.sass_ca26857cefa9076967ab300682271513.json └── static └── images ├── GitHubMarkDark.svg ├── GitHubMarkLight.svg ├── clarity ├── article-toc.png ├── image-figure.png ├── image-inline.png ├── screenshot-darkmode.png ├── screenshot-mobile-darkmode.png ├── screenshot-mobile.png ├── screenshot.png ├── syntax-block.gif ├── tags.png ├── tn-darkmode.png └── tn.png ├── compose-light.svg ├── compose.svg ├── painting.jpg └── scribble.jpg /.github/prlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": [ 3 | { 4 | "pattern": "^(build|ci|docs|feat|fix|perf|refactor|style|test)((.+))?:\\s.+", 5 | "message": "Your title needs to be prefixed with a topic" 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints 2 | .idea 3 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/themes/compose"] 2 | path = src/themes/compose 3 | url = git@github.com:onweru/compose.git 4 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pre-commit/pre-commit-hooks 3 | rev: v4.0.1 4 | hooks: 5 | - id: trailing-whitespace 6 | - id: end-of-file-fixer 7 | - id: check-json 8 | - id: check-yaml 9 | - id: double-quote-string-fixer 10 | -------------------------------------------------------------------------------- /CODEOWNER: -------------------------------------------------------------------------------- 1 | Kevin Yu (@yqlbu) 2 | Shi Kun (@kunish) 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 kevinyu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /OpenCV/.ipynb_checkpoints/install_opencv4.1.1_jetson-checkpoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # License: MIT. See license file in root directory 3 | # Copyright(c) JetsonHacks (2017-2019) 4 | # Modifier(c) Kevin Yu (2020) 5 | 6 | echo -e " 7 | +-------------------------------------------------------+ 8 | @@@ Welcome to OpenCV4.1-Jetson Installation Toolkit @@@@ 9 | | | 10 | | Select your Jetson DevKit Model | 11 | | | 12 | | 1. Jetson-Nano | 13 | | 2. Jetson-TX2 | 14 | | 3. Jetson-Xavier | 15 | | | 16 | +-------------------------------------------------------+ 17 | " 18 | 19 | param (){ 20 | read -p '[BASH] Put your Jetson model # here: ' NUM 21 | if [ "$NUM" == '1' ] || [ "$NUM" == '2' ] || [ "$NUM" == '3' ] 22 | then 23 | echo -e "[BASH] You choose #$NUM." 24 | read -p '[BASH] Do you wish to continue? (y/n) ' VAL 25 | #if y continue, else done 26 | if [ "$VAL" == "y" ] 27 | then 28 | echo -e "[BASH] Installation will start in 3 seconds." 29 | sleep 3 30 | # Jetson Nano 31 | if [ "$NUM" == '1' ]; then 32 | ARCH_BIN=5.3 33 | # Jetson TX2 34 | elif [ "$NUM" == '2' ]; then 35 | ARCH_BIN=6.2 36 | # Jetson AGX Xaviers 37 | elif [ "$NUM" == '3' ]; then 38 | ARCH_BIN=7.2 39 | fi 40 | start 41 | else 42 | echo "[BASH] Installation ends..." 43 | fi 44 | else 45 | echo "[BASH] Please put the right # " 46 | param 47 | fi 48 | } 49 | 50 | start (){ 51 | DOWNLOAD_OPENCV_EXTRAS=NO 52 | WHEREAMI=$PWD 53 | NUM_JOBS=$(nproc) 54 | CLEANUP=true 55 | PACKAGE_OPENCV="-D CPACK_BINARY_DEB=ON" 56 | CMAKE_INSTALL_PREFIX=$INSTALL_DIR 57 | 58 | echo "[BASH] Installation start!" 59 | sleep 2 60 | 61 | # Print out the current configuration 62 | echo "[BASH] Build configuration: " 63 | echo " NVIDIA Jetson Nano" 64 | echo " OpenCV binaries will be installed in: $CMAKE_INSTALL_PREFIX" 65 | echo " OpenCV Source will be installed in: $OPENCV_SOURCE_DIR" 66 | if [ "$PACKAGE_OPENCV" = "" ] ; then 67 | echo " NOT Packaging OpenCV" 68 | else 69 | echo " Packaging OpenCV" 70 | fi 71 | 72 | if [ $DOWNLOAD_OPENCV_EXTRAS == "YES" ] ; then 73 | echo "[BASH] Also downloading opencv_extras" 74 | fi 75 | 76 | # Repository setup 77 | sudo apt-add-repository universe 78 | sudo apt-get update 79 | # Download dependencies for the desired configuration 80 | cd $WHEREAMI 81 | echo "[BASH] Install dependencies ..." 82 | sleep 2 83 | sudo apt-get install -y \ 84 | build-essential \ 85 | cmake \ 86 | libavcodec-dev \ 87 | libavformat-dev \ 88 | libavutil-dev \ 89 | libeigen3-dev \ 90 | libglew-dev \ 91 | libgtk2.0-dev \ 92 | libgtk-3-dev \ 93 | libjpeg-dev \ 94 | libpng-dev \ 95 | libpostproc-dev \ 96 | libswscale-dev \ 97 | libtbb-dev \ 98 | libtiff5-dev \ 99 | libv4l-dev \ 100 | libxvidcore-dev \ 101 | libx264-dev \ 102 | qt5-default \ 103 | zlib1g-dev \ 104 | libwebp-dev \ 105 | pkg-config 106 | 107 | # We will be supporting OpenGL, we need a little magic to help 108 | # https://devtalk.nvidia.com/default/topic/1007290/jetson-tx2/building-opencv-with-opengl-support-/post/5141945/#5141945 109 | cd /usr/local/cuda/include 110 | sudo patch -N cuda_gl_interop.h $WHEREAMI'/patches/OpenGLHeader.patch' 111 | 112 | # Python 2.7 113 | sudo apt-get install -y python-dev python-numpy python-py python-pytest 114 | # Python 3.6 115 | sudo apt-get install -y python3-dev python3-numpy python3-py python3-pytest 116 | 117 | # GStreamer support 118 | sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 119 | 120 | echo "[BASH] Download sources ..." 121 | sleep 2 122 | 123 | cd $OPENCV_SOURCE_DIR 124 | git clone --branch "$OPENCV_VERSION" https://github.com/opencv/opencv.git 125 | git clone --branch "$OPENCV_VERSION" https://github.com/opencv/opencv_contrib.git 126 | 127 | if [ $DOWNLOAD_OPENCV_EXTRAS == "YES" ] ; then 128 | echo "[BASH] Installing opencv_extras" 129 | # This is for the test data 130 | cd $OPENCV_SOURCE_DIR 131 | git clone https://github.com/opencv/opencv_extra.git 132 | cd opencv_extra 133 | git checkout -b v${OPENCV_VERSION} ${OPENCV_VERSION} 134 | fi 135 | 136 | # Patch the Eigen library issue ... 137 | cd $OPENCV_SOURCE_DIR/opencv 138 | sed -i 's/include /include /g' modules/core/include/opencv2/core/private.hpp 139 | 140 | # Create the build directory and start cmake 141 | cd $OPENCV_SOURCE_DIR/opencv 142 | mkdir build 143 | cd build 144 | 145 | echo "[BASH] Build from sources ..." 146 | sleep 2 147 | 148 | echo $PWD 149 | time cmake -D CMAKE_BUILD_TYPE=RELEASE \ 150 | -D CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} \ 151 | -D WITH_CUDA=ON \ 152 | -D CUDA_ARCH_BIN=${ARCH_BIN} \ 153 | -D CUDA_ARCH_PTX="" \ 154 | -D ENABLE_FAST_MATH=ON \ 155 | -D CUDA_FAST_MATH=ON \ 156 | -D WITH_CUBLAS=ON \ 157 | -D WITH_LIBV4L=ON \ 158 | -D WITH_V4L=ON \ 159 | -D WITH_GSTREAMER=ON \ 160 | -D WITH_GSTREAMER_0_10=OFF \ 161 | -D OPENCV_DNN_CUDA=ON \ 162 | -D WITH_QT=ON \ 163 | -D WITH_TBB=ON \ 164 | -D BUILD_opencv_python2=ON \ 165 | -D BUILD_opencv_python3=ON \ 166 | -D BUILD_TESTS=OFF \ 167 | -D BUILD_PERF_TESTS=OFF \ 168 | -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ 169 | $"PACKAGE_OPENCV" \ 170 | ../ 171 | 172 | 173 | if [ $? -eq 0 ] ; then 174 | echo "[BASH] CMake configuration make successful" 175 | else 176 | # Try to make again 177 | echo "[BASH] CMake issues " >&2 178 | echo "[BASH] Please check the configuration being used" 179 | exit 1 180 | fi 181 | 182 | # Consider the MAXN performance mode if using a barrel jack on the Nano 183 | time make -j$NUM_JOBS 184 | if [ $? -eq 0 ] ; then 185 | echo "[BASH] OpenCV make successful" 186 | else 187 | # Try to make again; Sometimes there are issues with the build 188 | # because of lack of resources or concurrency issues 189 | echo "[BASH] Make did not build " >&2 190 | echo "[BASH] Retrying ... " 191 | # Single thread this time 192 | make 193 | if [ $? -eq 0 ] ; then 194 | echo "[BASH] OpenCV make successful" 195 | else 196 | # Try to make again 197 | echo "[BASH] Make did not successfully build" >&2 198 | echo "[BASH] Please fix issues and retry build" 199 | exit 1 200 | fi 201 | fi 202 | 203 | echo "[BASH] Installing ... " 204 | sudo make install 205 | sudo ldconfig 206 | if [ $? -eq 0 ] ; then 207 | echo "[BASH] OpenCV installed in: $CMAKE_INSTALL_PREFIX" 208 | else 209 | echo "[BASH] There was an issue with the final installation" 210 | exit 1 211 | fi 212 | 213 | # If PACKAGE_OPENCV is on, pack 'er up and get ready to go! 214 | # We should still be in the build directory ... 215 | if [ "$PACKAGE_OPENCV" != "" ] ; then 216 | echo "[BASH] Starting Packaging" 217 | sudo ldconfig 218 | time sudo make package -j$NUM_JOBS 219 | if [ $? -eq 0 ] ; then 220 | echo "[BASH] OpenCV make package successful" 221 | else 222 | # Try to make again; Sometimes there are issues with the build 223 | # because of lack of resources or concurrency issues 224 | echo "[BASH] Make package did not build " >&2 225 | echo "[BASH] Retrying ... " 226 | # Single thread this time 227 | sudo make package 228 | if [ $? -eq 0 ] ; then 229 | echo "[BASH] OpenCV make package successful" 230 | else 231 | # Try to make again 232 | echo "[BASH] Make package did not successfully build" >&2 233 | echo "[BASH] Please fix issues and retry build" 234 | exit 1 235 | fi 236 | fi 237 | fi 238 | 239 | # Install Python packages 240 | sudo apt-get install -y libopencv-dev 241 | sudo apt-get install -y libopencv-core-dev 242 | 243 | # check installation 244 | IMPORT_CHECK="$(python3 -c "import cv2 ; print(cv2.__version__)")" 245 | if [[ $IMPORT_CHECK != *$OPENCV_VERSION* ]]; then 246 | echo "[BASH] There was an error loading OpenCV in the Python sanity test." 247 | echo "[BASH] The loaded version does not match the version built here." 248 | echo "[BASH] Please check the installation." 249 | echo "[BASH] The first check should be the PYTHONPATH environment variable." 250 | fi 251 | 252 | echo "[BASH] Installation completed ..." 253 | sleep 2 254 | 255 | } 256 | 257 | # Execute 258 | ARCH_BIN=0 259 | INSTALL_DIR=/usr/local 260 | OPENCV_SOURCE_DIR=$HOME 261 | OPENCV_VERSION=4.1.1 262 | param 263 | 264 | -------------------------------------------------------------------------------- /OpenCV/.ipynb_checkpoints/remove-checkpoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo " -> Purge old opencv installation" 3 | sudo apt-get purge libopencv* 4 | -------------------------------------------------------------------------------- /OpenCV/install_opencv4.1.1_jetson.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # License: MIT. See license file in root directory 3 | # Copyright(c) JetsonHacks (2017-2019) 4 | # Modifier(c) Kevin Yu (2020) 5 | 6 | echo -e " 7 | +-------------------------------------------------------+ 8 | @@@ Welcome to OpenCV4.1-Jetson Installation Toolkit @@@@ 9 | | | 10 | | Select your Jetson DevKit Model | 11 | | | 12 | | 1. Jetson-Nano | 13 | | 2. Jetson-TX2 | 14 | | 3. Jetson-Xavier | 15 | | | 16 | +-------------------------------------------------------+ 17 | " 18 | 19 | param (){ 20 | read -p '[BASH] Put your Jetson model # here: ' NUM 21 | if [ "$NUM" == '1' ] || [ "$NUM" == '2' ] || [ "$NUM" == '3' ] 22 | then 23 | echo -e "[BASH] You choose #$NUM." 24 | read -p '[BASH] Do you wish to continue? (y/n) ' VAL 25 | #if y continue, else done 26 | if [ "$VAL" == "y" ] 27 | then 28 | echo -e "[BASH] Installation will start in 3 seconds." 29 | sleep 3 30 | # Jetson Nano 31 | if [ "$NUM" == '1' ]; then 32 | ARCH_BIN=5.3 33 | # Jetson TX2 34 | elif [ "$NUM" == '2' ]; then 35 | ARCH_BIN=6.2 36 | # Jetson AGX Xaviers 37 | elif [ "$NUM" == '3' ]; then 38 | ARCH_BIN=7.2 39 | fi 40 | start 41 | else 42 | echo "[BASH] Installation ends..." 43 | fi 44 | else 45 | echo "[BASH] Please put the right # " 46 | param 47 | fi 48 | } 49 | 50 | start (){ 51 | DOWNLOAD_OPENCV_EXTRAS=NO 52 | WHEREAMI=$PWD 53 | NUM_JOBS=$(nproc) 54 | CLEANUP=true 55 | PACKAGE_OPENCV="-D CPACK_BINARY_DEB=ON" 56 | CMAKE_INSTALL_PREFIX=$INSTALL_DIR 57 | 58 | echo "[BASH] Installation start!" 59 | sleep 2 60 | 61 | # Print out the current configuration 62 | echo "[BASH] Build configuration: " 63 | echo " NVIDIA Jetson Nano" 64 | echo " OpenCV binaries will be installed in: $CMAKE_INSTALL_PREFIX" 65 | echo " OpenCV Source will be installed in: $OPENCV_SOURCE_DIR" 66 | if [ "$PACKAGE_OPENCV" = "" ] ; then 67 | echo " NOT Packaging OpenCV" 68 | else 69 | echo " Packaging OpenCV" 70 | fi 71 | 72 | if [ $DOWNLOAD_OPENCV_EXTRAS == "YES" ] ; then 73 | echo "[BASH] Also downloading opencv_extras" 74 | fi 75 | 76 | # Repository setup 77 | sudo apt-add-repository universe 78 | sudo apt-get update 79 | # Download dependencies for the desired configuration 80 | cd $WHEREAMI 81 | echo "[BASH] Install dependencies ..." 82 | sleep 2 83 | sudo apt-get install -y \ 84 | build-essential \ 85 | cmake \ 86 | libavcodec-dev \ 87 | libavformat-dev \ 88 | libavutil-dev \ 89 | libeigen3-dev \ 90 | libglew-dev \ 91 | libgtk2.0-dev \ 92 | libgtk-3-dev \ 93 | libjpeg-dev \ 94 | libpng-dev \ 95 | libpostproc-dev \ 96 | libswscale-dev \ 97 | libtbb-dev \ 98 | libtiff5-dev \ 99 | libv4l-dev \ 100 | libxvidcore-dev \ 101 | libx264-dev \ 102 | qt5-default \ 103 | zlib1g-dev \ 104 | libwebp-dev \ 105 | pkg-config 106 | 107 | # We will be supporting OpenGL, we need a little magic to help 108 | # https://devtalk.nvidia.com/default/topic/1007290/jetson-tx2/building-opencv-with-opengl-support-/post/5141945/#5141945 109 | cd /usr/local/cuda/include 110 | sudo patch -N cuda_gl_interop.h $WHEREAMI'/patches/OpenGLHeader.patch' 111 | 112 | # Python 2.7 113 | sudo apt-get install -y python-dev python-numpy python-py python-pytest 114 | # Python 3.6 115 | sudo apt-get install -y python3-dev python3-numpy python3-py python3-pytest 116 | 117 | # GStreamer support 118 | sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 119 | 120 | echo "[BASH] Download sources ..." 121 | sleep 2 122 | 123 | cd $OPENCV_SOURCE_DIR 124 | git clone --branch "$OPENCV_VERSION" https://github.com/opencv/opencv.git 125 | git clone --branch "$OPENCV_VERSION" https://github.com/opencv/opencv_contrib.git 126 | 127 | if [ $DOWNLOAD_OPENCV_EXTRAS == "YES" ] ; then 128 | echo "[BASH] Installing opencv_extras" 129 | # This is for the test data 130 | cd $OPENCV_SOURCE_DIR 131 | git clone https://github.com/opencv/opencv_extra.git 132 | cd opencv_extra 133 | git checkout -b v${OPENCV_VERSION} ${OPENCV_VERSION} 134 | fi 135 | 136 | # Patch the Eigen library issue ... 137 | cd $OPENCV_SOURCE_DIR/opencv 138 | sed -i 's/include /include /g' modules/core/include/opencv2/core/private.hpp 139 | 140 | # Create the build directory and start cmake 141 | cd $OPENCV_SOURCE_DIR/opencv 142 | mkdir build 143 | cd build 144 | 145 | echo "[BASH] Build from sources ..." 146 | sleep 2 147 | 148 | echo $PWD 149 | time cmake -D CMAKE_BUILD_TYPE=RELEASE \ 150 | -D CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} \ 151 | -D WITH_CUDA=ON \ 152 | -D CUDA_ARCH_BIN=${ARCH_BIN} \ 153 | -D CUDA_ARCH_PTX="" \ 154 | -D ENABLE_FAST_MATH=ON \ 155 | -D CUDA_FAST_MATH=ON \ 156 | -D WITH_CUBLAS=ON \ 157 | -D WITH_LIBV4L=ON \ 158 | -D WITH_V4L=ON \ 159 | -D WITH_GSTREAMER=ON \ 160 | -D WITH_GSTREAMER_0_10=OFF \ 161 | -D OPENCV_DNN_CUDA=ON \ 162 | -D WITH_QT=ON \ 163 | -D WITH_TBB=ON \ 164 | -D BUILD_opencv_python2=ON \ 165 | -D BUILD_opencv_python3=ON \ 166 | -D BUILD_TESTS=OFF \ 167 | -D BUILD_PERF_TESTS=OFF \ 168 | -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ 169 | $"PACKAGE_OPENCV" \ 170 | ../ 171 | 172 | 173 | if [ $? -eq 0 ] ; then 174 | echo "[BASH] CMake configuration make successful" 175 | else 176 | # Try to make again 177 | echo "[BASH] CMake issues " >&2 178 | echo "[BASH] Please check the configuration being used" 179 | exit 1 180 | fi 181 | 182 | # Consider the MAXN performance mode if using a barrel jack on the Nano 183 | time make -j$NUM_JOBS 184 | if [ $? -eq 0 ] ; then 185 | echo "[BASH] OpenCV make successful" 186 | else 187 | # Try to make again; Sometimes there are issues with the build 188 | # because of lack of resources or concurrency issues 189 | echo "[BASH] Make did not build " >&2 190 | echo "[BASH] Retrying ... " 191 | # Single thread this time 192 | make 193 | if [ $? -eq 0 ] ; then 194 | echo "[BASH] OpenCV make successful" 195 | else 196 | # Try to make again 197 | echo "[BASH] Make did not successfully build" >&2 198 | echo "[BASH] Please fix issues and retry build" 199 | exit 1 200 | fi 201 | fi 202 | 203 | echo "[BASH] Installing ... " 204 | sudo make install 205 | sudo ldconfig 206 | if [ $? -eq 0 ] ; then 207 | echo "[BASH] OpenCV installed in: $CMAKE_INSTALL_PREFIX" 208 | else 209 | echo "[BASH] There was an issue with the final installation" 210 | exit 1 211 | fi 212 | 213 | # If PACKAGE_OPENCV is on, pack 'er up and get ready to go! 214 | # We should still be in the build directory ... 215 | if [ "$PACKAGE_OPENCV" != "" ] ; then 216 | echo "[BASH] Starting Packaging" 217 | sudo ldconfig 218 | time sudo make package -j$NUM_JOBS 219 | if [ $? -eq 0 ] ; then 220 | echo "[BASH] OpenCV make package successful" 221 | else 222 | # Try to make again; Sometimes there are issues with the build 223 | # because of lack of resources or concurrency issues 224 | echo "[BASH] Make package did not build " >&2 225 | echo "[BASH] Retrying ... " 226 | # Single thread this time 227 | sudo make package 228 | if [ $? -eq 0 ] ; then 229 | echo "[BASH] OpenCV make package successful" 230 | else 231 | # Try to make again 232 | echo "[BASH] Make package did not successfully build" >&2 233 | echo "[BASH] Please fix issues and retry build" 234 | exit 1 235 | fi 236 | fi 237 | fi 238 | 239 | # Install Python packages 240 | sudo apt-get install -y libopencv-dev 241 | sudo apt-get install -y libopencv-core-dev 242 | 243 | # check installation 244 | IMPORT_CHECK="$(python3 -c "import cv2 ; print(cv2.__version__)")" 245 | if [[ $IMPORT_CHECK != *$OPENCV_VERSION* ]]; then 246 | echo "[BASH] There was an error loading OpenCV in the Python sanity test." 247 | echo "[BASH] The loaded version does not match the version built here." 248 | echo "[BASH] Please check the installation." 249 | echo "[BASH] The first check should be the PYTHONPATH environment variable." 250 | fi 251 | 252 | echo "[BASH] Installation completed ..." 253 | sleep 2 254 | 255 | } 256 | 257 | # Execute 258 | ARCH_BIN=0 259 | INSTALL_DIR=/usr/local 260 | OPENCV_SOURCE_DIR=$HOME 261 | OPENCV_VERSION=4.1.1 262 | param 263 | 264 | -------------------------------------------------------------------------------- /OpenCV/remove.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo " -> Purge old opencv installation" 3 | sudo apt-get purge libopencv* 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

🏠 Jetson Packages Family

2 |

3 | A collection of AWESOME Tools tailored to NVIDIA Jetson Devices 4 |

5 | 6 |

7 | License 8 | Hits 9 | Kubernetes 10 | Docker 11 | 12 | lastcommit 13 |

14 | 15 | --- 16 | 17 | CopyRight 2020-2024 @piyoki. All rights reserved. 18 | 19 | This repo aims to give you clear instructions on how to install packages on AArch64(ARM) Platform, especially in Jetson family. All the packages have been tested on Jetson AGX Xavier and Jetson Nano. 20 | 21 | ## Pre-Commit 22 | 23 | This repo uses [pre-commit](https://github.com/pre-commit/pre-commit) for managing and maintaining multi-language preo-commit hooks. 24 | 25 | ## Dependencies Installation 26 | 27 | Before performing any installation, you may need to install the following basic dependencies 28 | 29 | ```bash 30 | $ sudo apt-get install -y nano curl 31 | # python3 32 | $ sudo apt-get install -y python3-pip python3-dev python3-setuptools 33 | # python2 34 | $ sudo apt-get install -y python-pip python-dev python-setuptools 35 | $ sudo apt-get install -y libcanberra-gtk0 libcanberra-gtk-module 36 | ``` 37 | 38 | **Notes:** If you wish to set `python3` as your default python compiler and `pip` package manager, please do the following: 39 | 40 | ```bash 41 | # python 42 | $ sudo rm -rf /usr/bin/python && sudo ln -s /usr/bin/python3 /usr/bin/python 43 | $ which python 44 | # pip 45 | $ sudo rm -rf /usr/bin/pip && sudo ln -s /usr/bin/pip3 /usr/bin/pip 46 | $ which pip 47 | ``` 48 | 49 | Python-pip 50 | 51 | ```bash 52 | # pip3 53 | $ pip3 install -U pip 54 | $ pip3 install setuptools wheel cython 55 | ``` 56 | 57 | ## Set CUDA Path 58 | 59 | If you have not set CUDA Path yet, you might need to do so. 60 | 61 | Setup with script 62 | 63 | ```bash 64 | $ wget -qO- https://github.com/yqlbu/jetson-packages-family/raw/master/set_cuda.sh | bash - 65 | ``` 66 | 67 | Setup manually 68 | 69 | ```bash 70 | $ echo "export PATH=/usr/local/cuda/bin:\${PATH}" >> ${HOME}/.bashrc 71 | $ echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib64:\${LD_LIBRARY_PATH}" >> ${HOME}/.bashrc 72 | $ echo "export CPATH=$CPATH:/usr/local/cuda/targets/aarch64-linux/include" >> ${HOME}/.bashrc 73 | $ echo "export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/targets/aarch64-linux/lib" >> ${HOME}/.bashrc 74 | $ source ~/.bashrc 75 | ``` 76 | 77 | ## Boot From SSD (Xavier Only) 78 | 79 | Compared with Jetson Nano, an important feature comes with Jetson Xavier NX and Jetson AGX Xavier is that they come with the M.2 Key M connector. According to the third-party testing, the reading speed from my SSD is 7 times faster than the SD card. Thus, to boot from SSD will surely boost the performance of Jetson Xavier. 80 | 81 | [Guide to setup](https://www.seeedstudio.com/blog/2020/06/22/boot-jetson-xavier-from-m-2-ssd/) 82 | 83 | [Jetsonhacks RootOnNVMe repo](https://github.com/jetsonhacks/rootOnNVMe.git) 84 | 85 | ## Fan Control 86 | 87 | A script that can control the PWM fan with the change of the CPU temperature of any Jetson Machine (Jetson Nano, Jetson TX1, TX2, Jetson Xavier) 88 | 89 | [Guide to setup](https://github.com/yqlbu/fan-control) 90 | 91 | ## Packages List 92 | 93 | - [Pytorch](#pytorch) 94 | - [Tensorflow](#tensorflow) 95 | - [Machine Learning](#machine-learning) 96 | - [Scikit Learn](#scikit-learn) 97 | - [Scipy](#scipy) 98 | - [Matplotlib](#matplotlib) 99 | - [Pycuda](pycuda) 100 | - [Jupyter Lab](#jupyter-lab) 101 | - [Pillow](#pillow) 102 | - [Pandas](#pandas) 103 | - [Numpy](#numpy) 104 | - [Seaborn](#seaborn) 105 | - [ONNX](#onnx) 106 | - [LLVM](#llvm) 107 | - [Numba](#numba) 108 | - [Jetson Stats](#jetson-stats) 109 | - [NeoVim Server](#neovim-server) 110 | - [VSCode](#vs-code-for-aarch64) 111 | - [CodeServer](#code-server) 112 | - [Archiconda3](#archiconda3) 113 | - [OpenCV](#opencv) 114 | - [Pycharm](#pycharm) 115 | - [Lazygit](#lazygit) 116 | - [Lsd](#lsd) 117 | - [Ctop](#ctop) 118 | - [Cointop](#cointop) 119 | - [Gotop](#gotop) 120 | - [Bashtop](#bashtop) 121 | - [Httpie](#httpie) 122 | - [Ranger](#ranger) 123 | - [Neofetch](#neofetch) 124 | - [Docker](#docker) 125 | - [Dlib](#dlib) 126 | - [LabelImg](#labelimg) 127 | - [Qt5](#qt5) 128 | - [Kubernetes](#kubernetes) 129 | - [Nomachine](#nomachine) 130 | 131 | ## Pytorch 132 | 133 | PyTorch v1.8.0 (JetPack 4.4 +) 134 | 135 | Python 3.6 - torch-1.8.0-cp36-cp36m-linux_aarch64.whl 136 | 137 | ```bash 138 | $ wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl 139 | $ sudo apt-get install python3-pip libopenblas-base libopenmpi-dev 140 | $ pip3 install Cython 141 | $ pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl 142 | ``` 143 | 144 | Torchvision v0.5.0 (compatible with PyTorch v1.4.0) 145 | 146 | ```bash 147 | $ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev 148 | $ git clone --branch https://github.com/pytorch/vision torchvision # see below for version of torchvision to download 149 | $ cd torchvision 150 | $ export BUILD_VERSION=0.x.0 # where 0.x.0 is the torchvision version 151 | $ python3 setup.py install --user 152 | $ cd ../ # attempting to load torchvision from build dir will result in import error 153 | $ pip install 'pillow<7' # always needed for Python 2.7, not needed torchvision v0.5.0+ with Python 3.6 154 | ``` 155 | 156 | Verfication 157 | 158 | ```bash 159 | $ python3 -c "import torch ; print(torch.__version__)" 160 | ``` 161 | 162 | To install other versions of PyTorch and Torchvision, please visit site [HERE](https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-7-0-now-available/72048) 163 | 164 | 165 | 166 | ## Tensorflow 167 | 168 | Python 3.6 + JetPack 4.5 169 | 170 | ```bash 171 | sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran 172 | sudo apt-get install python3-pip 173 | sudo pip3 install -U pip testresources setuptools==49.6.0 174 | sudo pip3 install -U numpy==1.16.1 future==0.18.2 mock==3.0.5 h5py==2.10.0 keras_preprocessing==1.1.1 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11 175 | # TF-2.x 176 | $ sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v45 tensorflow 177 | # TF-1.15 178 | $ sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v45 ‘tensorflow<2’ 179 | ``` 180 | 181 | If you meet error when installing h5py, please run this command to solve the dependency: 182 | 183 | ```bash 184 | $ sudo apt-get install libhdf5-serial-dev hdf5-tools 185 | ``` 186 | 187 | To install other versions of Tensorflow, checkout the sites below: 188 | 189 | Jetson Xavier: [HERE](https://forums.developer.nvidia.com/t/official-tensorflow-for-jetson-agx-xavier/65523) 190 | 191 | Jetson Nano: [HERE](https://forums.developer.nvidia.com/t/official-tensorflow-for-jetson-nano/71770) 192 | 193 | 194 | 195 | ## Machine Learning 196 | 197 | Python3 `v3.6.9` 198 | 199 | - [Scikit Learn](#scikit-learn) 200 | - [Scipy](#scipy) 201 | - [Matplotlib](#matplotlib) 202 | - [Pycuda](pycuda) 203 | - [Jupyter Lab](#jupyter-lab) 204 | - [Pillow](#pillow) 205 | - [Pandas](#pandas) 206 | - [Numpy](#numpy) 207 | - [Seaborn](#seaborn) 208 | 209 | ### Scikit-learn 210 | 211 | ```bash 212 | $ pip3 install scikit-learn 213 | ``` 214 | 215 | ### Scipy 216 | 217 | ```bash 218 | $ apt-get install libatlas-base-dev gfortran 219 | $ pip3 install -U scipy --user 220 | ``` 221 | 222 | ### Matplotlib 223 | 224 | ```bash 225 | $ sudo apt install libfreetype6-dev -y 226 | $ sudo apt install python3-matplotlib -y 227 | ``` 228 | 229 | ### Pycuda 230 | 231 | ```bash 232 | pip3 install -U pycuda --user 233 | ``` 234 | 235 | ### Jupyter Lab 236 | 237 | ```bash 238 | # install jupyter 239 | $ pip3 install jupyterlab 240 | $ pip3 install --upgrade --force jupyter-console 241 | 242 | # export environment path 243 | $ echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc 244 | $ source ~/.bashrc 245 | 246 | # check installation version 247 | $ jupyter lab -V 248 | ``` 249 | 250 | Install with Docker 251 | 252 | ``` 253 | $ docker run --name jupyterlab -d \ 254 | -e TZ=Asia/Shanghai \ 255 | -p 8888:8888 \ 256 | -v /appdata/jupyterlab:/opt/app/data \ 257 | hikariai/jupyterlab:latest 258 | ``` 259 | 260 | Run the app 261 | 262 | ```bash 263 | $ jupyter lab --ip=* --port=8888 --no-browser --notebook-dir=/opt/app/data \ 264 | --allow-root --NotebookApp.token='' --NotebookApp.password='' \ 265 | --LabApp.terminado_settings='{"shell_command": ["/bin/bash"]}' 266 | ``` 267 | 268 | Usage Guide: [https://github.com/yqlbu/jetson_lab](https://github.com/yqlbu/jetson_lab) 269 | 270 | ### Pillow 271 | 272 | ```bash 273 | $ pip3 install -U pillow --user 274 | ``` 275 | 276 | ### Pandas 277 | 278 | ```bash 279 | $ pip3 install -U pandas --user 280 | ``` 281 | 282 | ### Numpy 283 | 284 | ```bash 285 | $ pip3 install -U numpy --user 286 | ``` 287 | 288 | ### Seaborn 289 | 290 | ```bash 291 | $ pip3 install -U seaborn --user 292 | ``` 293 | 294 | ### ONNX 295 | 296 | ONNX v1.4.1 (Python3.6.9 + JetPack 4.3/4.4/4.5) 297 | 298 | ```bash 299 | $ sudo apt install protobuf-compiler libprotoc-dev 300 | $ pip install onnx==1.4.1 301 | ``` 302 | 303 | ## LLVM 304 | 305 | LLVM v3.9 (Python3.6 + JetPack 4.3/4.4/4.5) 306 | 307 | ```bash 308 | $ sudo apt-get install llvm-3.9 309 | $ export LLVM_CONFIG=/usr/lib/llvm-3.9/bin/llvm-config 310 | $ cd ~ 311 | $ wget https://github.com/numba/llvmlite/archive/v0.16.0.zip 312 | $ unzip v0.16.0.zip 313 | $ cd llvmlite-0.16.0 314 | $ sudo chmod 777 -R /usr/local/lib/python3.6/dist-packages/ 315 | $ python3 setup.py install 316 | ``` 317 | 318 | ## Numba 319 | 320 | Numba v0.31 (Python3.6 + JetPack 4.3/4.4/4.5) 321 | 322 | **Notes: Numba requires **LLVM\*\* pre-built, so please check out the instructions for [LLVM](#LLVM) and have it installed before installing Numba. 323 | 324 | ```shell script 325 | $ pip3 install numba==0.31 --user 326 | ``` 327 | 328 | ## Jetson Stats 329 | 330 | Jetson-stats is a package to monitoring and control your NVIDIA Jetson [Xavier NX, Nano, AGX Xavier, TX1, TX2] Works with all NVIDIA Jetson ecosystem. 331 | 332 | ```bash 333 | $ sudo -H pip install -U jetson-stats 334 | $ sudo jtop 335 | ``` 336 | 337 | ## NeoVim Server 338 | 339 | [NeoVim Server](https://github.com/yqlbu/neovim-server) is a containerized IDE-like text editor that runs on a web server. 340 | 341 | Docs: https://github.com/yqlbu/neovim-server/wiki 342 | 343 | Font Install: 344 | 345 | ```bash 346 | $ mkdir -p ~/.local/share/fonts 347 | $ cd ~/.local/share/fonts && curl -fLo "Droid Sans Mono for Powerline Nerd Font Complete.otf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.otf 348 | ``` 349 | 350 | Quick Install: 351 | 352 | ```bash 353 | $ docker run -d \ 354 | --name nvim-server \ 355 | -p 6080:3000 \ 356 | -p 8090:8090 \ 357 | -v ~/workspace:/workspace \ 358 | -v /appdata/nvim-server:/config \ 359 | -e TZ=Asia/Shanghai \ 360 | -e USER= \ 361 | -e SECRET= \ 362 | hikariai/nvim-server:latest 363 | ``` 364 | 365 | Wait for a couple seconds until the container finishes its bootstrap process, then visit http://localhost:6080/wetty 366 | 367 | ## VS Code for aarch64 368 | 369 | [Visual Studio Code](https://code.visualstudio.com/) is a code editor redefined and optimized for building and debugging modern web and cloud applications. 370 | 371 | ```bash 372 | $ curl -s https://packagecloud.io/install/repositories/swift-arm/vscode/script.deb.sh | sudo bash 373 | $ sudo apt-get install -y code-oss 374 | ``` 375 | 376 | ## Code Server 377 | 378 | Code-server is a Visual Studio Code instance running on a remote server accessible through any web browser. It allows you to code anywhere and on any device such as a tablet or laptop with a consistent integrated development environment (IDE) 379 | 380 | Installation Guide: [[HERE](https://github.com/cdr/code-server) 381 | 382 | ## Archiconda3 383 | 384 | Archiconda3 is a distribution of conda for 64 bit ARM. Anaconda is a free and open-source distribution of the Python and R programming languages for scientific computing (data science, machine learning applications, large-scale data processing, predictive analytics, etc.), that aims to simplify package management and deployment. Like Virtualenv, Anaconda also uses the concept of creating environments so as to isolate different libraries and versions. 385 | 386 | ```bash 387 | $ cd ${HOME} 388 | $ curl -fsSL https://github.com/Archiconda/build-tools/releases/download/0.2.3/Archiconda3-0.2.3-Linux-aarch64.sh | sudo bash - 389 | $ cd ~ 390 | $ sudo chown -R $USER archiconda3/ 391 | $ export "PATH=~/archiconda3/bin:$PATH" >> ~/.bashrc 392 | $ conda config --add channels conda-forge 393 | $ conda -V 394 | $ conda update conda 395 | $ conda -V 396 | ``` 397 | 398 | To prevent conda from activating the base environment by default 399 | 400 | ```bash 401 | $ conda config --set auto_activate_base false 402 | $ export "PATH=/bin:/usr/bin:$PATH" >> ~/.bashrc 403 | $ source ~/.bashrc 404 | ``` 405 | 406 | Please checkout site [HERE](https://github.com/yqlbu/archiconda3) for usage guide. 407 | 408 | ## OpenCV 409 | 410 | OpenCV v4.1.1 (Python2.7/3.6+ JetPack4.3/4.4/4.5) 411 | 412 | ```bash 413 | # purge old-version 414 | $ sudo apt-get purge libopencv* 415 | # install 416 | $ sudo bash <(wget -qO- https://github.com/yqlbu/jetson-packages-family/raw/master/OpenCV/install_opencv4.1.1_jetson.sh) 417 | 418 | ``` 419 | 420 | Notes: You may modify the script to install custom version of OpenCV 421 | 422 | ```bash 423 | $ wget https://github.com/yqlbu/jetson-packages-family/raw/master/OpenCV/install_opencv4.1.1_jetson.sh 424 | ``` 425 | 426 | ## Pycharm 427 | 428 | PyCharm is an integrated development environment (IDE) used in computer programming, specifically for the Python language. It is developed by the Czech company JetBrains. 429 | 430 | PyCharm Professional 431 | 432 | ```bash 433 | $ cd ~ 434 | $ sudo apt-get update && sudo apt-get install -y openjdk-8-jdk 435 | $ wget https://download.jetbrains.com/python/pycharm-professional-2019.3.4.tar.gz?_ga=2.42966822.2056165753.1586158936-1955479096.1586158936 -O pycharm-professional-2019.3.4.tar.gz 436 | $ tar -xzf pycharm-professional-2019.3.4.tar.gz && cd pycharm-2019.3.4/bin 437 | $ sudo chmod +x pycharm.sh && mv pycharm.sh pycharm 438 | $ sudo rm -rf pycharm-professional-2019.3.4.tar.gz 439 | $ cd ~ 440 | $ echo 'export PATH=/home/'$USER'/pycharm-2019.3.4/bin:$PATH' >> .bashrc 441 | ``` 442 | 443 | PyCharm Community 444 | 445 | ```bash 446 | $ cd ~ 447 | $ sudo apt-get update && sudo apt-get install -y openjdk-8-jdk 448 | $ wget https://download.jetbrains.com/python/pycharm-community-2019.3.4.tar.gz?_ga=2.42966822.2056165753.1586158936-1955479096.1586158936 -O pycharm-community-2019.3.4.tar.gz 449 | $ tar -xzf pycharm-community-2019.3.4.tar.gz && cd pycharm-2019.3.4/bin 450 | $ sudo chmod +x pycharm.sh && mv pycharm.sh pycharm 451 | $ sudo rm -rf pycharm-community-2019.3.4.tar.gz 452 | $ cd ~ 453 | $ echo 'export PATH=/home/'$USER'/pycharm-2019.3.4/bin:$PATH' >> .bashrc 454 | ``` 455 | 456 | run 457 | 458 | ```bash 459 | $ pycharm 460 | ``` 461 | 462 | Notes: You may find other versions [HERE](https://www.jetbrains.com/pycharm/download/other.html) 463 | 464 | ## Lazygit 465 | 466 | [Lazygit](https://github.com/jesseduffield/lazygit) is a simple terminal UI for git commands, written in Go with the gocui library. 467 | 468 | ```bash 469 | $ sudo add-apt-repository ppa:lazygit-team/release 470 | $ sudo apt-get update 471 | $ sudo apt-get install lazygit 472 | ``` 473 | 474 | ## Ranger 475 | 476 | [Ranger](https://github.com/ranger/ranger) is a console file manager with VI key bindings. It provides a minimalistic and nice curses interface with a view on the directory hierarchy. It ships with rifle, a file launcher that is good at automatically finding out which program to use for what file type. 477 | 478 | ```bash 479 | $ pip install ranger-fm 480 | ``` 481 | 482 | (Optional) Install ranger devicons 483 | 484 | ```bash 485 | $ git clone https://github.com/alexanderjeurissen/ranger_devicons ~/.config/ranger/plugins/ranger_devicons 486 | $ echo "default_linemode devicons" >> $HOME/.config/ranger/rc.conf 487 | ``` 488 | 489 | Sample config is available [HERE](https://github.com/yqlbu/dotfiles/tree/master/ranger/.config/ranger) 490 | 491 | ## Lsd 492 | 493 | [Lsd](https://github.com/Peltoche/lsd) is the next gen ls command 494 | 495 | Download the latest `.deb` package from the [release page](https://github.com/Peltoche/lsd/releases) and install it via: 496 | 497 | ```bash 498 | sudo dpkg -i lsd_0.20.1_arm64.deb # adapt version number and architecture 499 | ``` 500 | 501 | ## Ctop 502 | 503 | [Ctop](https://github.com/bcicen/ctop*) is a Top-like interface for container metrics. Ctop provides a concise and condensed overview of real-time metrics for multiple containers. 504 | 505 | ```bash 506 | # echo "deb http://packages.azlux.fr/debian/ buster main" | sudo tee /etc/apt/sources.list.d/azlux.list 507 | # wget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add - 508 | # sudo apt update 509 | # sudo apt install docker-ctop 510 | ``` 511 | 512 | ## Cointop 513 | 514 | [Cointop](https://github.com/miguelmota/cointop) is is a fast and lightweight interactive terminal based UI application for tracking and monitoring cryptocurrency coin stats in real-time. 515 | 516 | Docs: [HERE](https://docs.cointop.sh/) 517 | 518 | ```bash 519 | $ curl -o- https://raw.githubusercontent.com/miguelmota/cointop/master/install.sh | bash 520 | ``` 521 | 522 | ## Gotop 523 | 524 | [Gotop](https://github.com/cjbassi/gotop) A terminal based graphical activity monitor inspired by gtop and vtop 525 | 526 | ```bash 527 | # install 528 | $ curl -fsSL git.io/gotop.sh | sudo bash 529 | # uninstall 530 | sudo rm -f /usr/local/bin/gotop 531 | ``` 532 | 533 | ## Bashtop 534 | 535 | [Bashtop](https://github.com/aristocratos/bashtop) Resource monitor that shows usage and stats for processor, memory, disks, network and processes. 536 | 537 | ``` 538 | $ sudo add-apt-repository ppa:bashtop-monitor/bashtop 539 | $ sudo apt update 540 | $ sudo apt install bashtop 541 | ``` 542 | 543 | ## Httpie 544 | 545 | [Httpie](https://github.com/httpie/httpie) is a command-line HTTP client. Its goal is to make CLI interaction with web services as human-friendly as possible. HTTPie is designed for testing, debugging, and generally interacting with APIs & HTTP servers. The http & https commands allow for creating and sending arbitrary HTTP requests. They use simple and natural syntax and provide formatted and colorized output. 546 | 547 | ```bash 548 | $ apt install httpie -y 549 | ``` 550 | 551 | ## Neofetch 552 | 553 | [Neofetch](https://github.com/dylanaraps/neofetch) is a cross-platform, simple shell script that scans for your system’s information and displays it in a terminal, together with an ASCII image or any desired image next to the output. 554 | 555 | ```bash 556 | $ sudo add-apt-repository ppa:dawidd0811/neofetch 557 | $ sudo apt-get update 558 | $ sudo apt-get install neofecth 559 | ``` 560 | 561 | ## Docker 562 | 563 | Docker is basically a container engine which uses the Linux Kernel features like namespaces and control groups to create containers on top of an operating system and automates application deployment on the container. Docker uses Copy-on-write union file system for its backend storage. 564 | 565 | ```bash 566 | $ sudo wget -qO- https://get.docker.com/ | sh 567 | $ sudo usermod -aG docker $USER 568 | $ sudo systemctl enable docker 569 | $ sudo systemctl status docker 570 | ``` 571 | 572 | ### Docker Default Runtime 573 | 574 | To enable access to the CUDA compiler (nvcc) during `docker build` operations, add `"default-runtime": "nvidia"` to your `/etc/docker/daemon.json` configuration file before attempting to build the containers: 575 | 576 | ```json 577 | { 578 | "runtimes": { 579 | "nvidia": { 580 | "path": "nvidia-container-runtime", 581 | "runtimeArgs": [] 582 | } 583 | }, 584 | "features": { 585 | "buildkit": true 586 | }, 587 | "default-runtime": "nvidia" 588 | } 589 | ``` 590 | 591 | Restart Docker Daemon 592 | 593 | ```bash 594 | $ sudo systemctl restart docker 595 | ``` 596 | 597 | Verify if the default runtime is set to nvidia: 598 | 599 | ```bash 600 | $ docker info | grep nvidia 601 | ``` 602 | 603 | ### Docker-compose 604 | 605 | [Docker Compose](https://docs.docker.com/compose/) is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. 606 | 607 | ``` 608 | $ sudo apt-get update 609 | $ sudo apt-get install -y python3 python3-pip libffi-dev libssl-dev 610 | $ sudo pip3 install docker-compose 611 | $ docker-compose -v 612 | ``` 613 | 614 | ### L4T-Docker 615 | 616 | NVIDIA L4T-Docker 617 | 618 | Official Repo: https://github.com/NVIDIA/nvidia-docker 619 | 620 | Install NVIDIA-Docker Runtime 621 | 622 | ```bash 623 | $ sudo apt install -y nvidia-docker2 624 | $ sudo systemctl daemon-reload 625 | $ sudo systemctl restart docker 626 | $ docker info | grep nvidia 627 | ``` 628 | 629 | Custom L4T-Docker Image is available [HERE](https://github.com/yqlbu/l4t-docker) 630 | 631 | ## Dlib 632 | 633 | DLib is an open source C++ library implementing a variety of machine learning algorithms, including classification, regression, clustering, data transformation, and structured prediction. ... K-Means clustering, Bayesian Networks, and many others. 634 | 635 | Dlib v19.18 636 | 637 | ```bash 638 | $ cd ~ 639 | $ wget https://raw.githubusercontent.com/yqlbu/face_recognizer/master/setup.sh 640 | $ sudo chmod +x setup.sh 641 | $ ./setup.sh 642 | ``` 643 | 644 | ## LabelImg 645 | 646 | [LabelImg](https://github.com/tzutalin/labelImg) is a graphical image annotation tool and label object bounding boxes in images. 647 | 648 | ```bash 649 | $ sudo apt-get install pyqt4-dev-tools 650 | $ sudo apt-get install python-lxml 651 | $ sudo apt-get install python-qt4 652 | $ sudo apt install libcanberra-gtk-module libcanberra-gtk3-module 653 | $ git clone https://github.com/tzutalin/labelImg.git 654 | $ cd labelImg 655 | $ make qt4py2 656 | $ python labelImg.py 657 | ``` 658 | 659 | ## Qt5 660 | 661 | Qt is used for developing graphical user interfaces (GUIs) and multi-platform applications that run on all major desktop platforms and most mobile or embedded platforms. Most GUI programs created with Qt have a native-looking interface, in which case Qt is classified as a widget toolkit. 662 | 663 | ```bash 664 | $ sudo apt-get install qt5-default qtcreator -y 665 | $ sudo apt-get install pyqt5* 666 | $ sudo apt install python3-pyqt5.qtsql 667 | ``` 668 | 669 | ## Kubernetes 670 | 671 | [Kubernetes](https://kubernetes.io/docs/concepts/architecture/) has rapidly become a key ingredient in edge computing. With Kubernetes, companies can run containers at the edge in a way that maximizes resources, makes testing easier, and allows DevOps teams to move faster and more effectively as these organizations consume and analyze more data in the field. 672 | 673 | [K3S](https://rancher.com/blog/2019/why-k3s-is-the-future-of-k8s-at-the-edge/) is a lightweight Kubernetes distribution developed by Rancher Labs, perfect for Edge Computing use cases where compute resources may be somewhat limited. 674 | 675 | Installation and usage guide is available at [HERE](https://www.hikariai.net/blog/18-cross-architecture-kubernetes-with-edge-devices-using-hybrid-cloud-strategy/) 676 | 677 | ## Nomachine 678 | 679 | Nomachine ARMv8 (compatible with Jetson Devices) 680 | 681 | NoMachine is a free, cross-platform, serverless remot e desktop tool that lets you setup a remote desktop server on your computer using the NX video protocol. The client can be used to connect to the server from anywhere in the world. 682 | 683 | Official Website: [HERE](https://www.nomachine.com/download/download&id=111&s=ARM) 684 | 685 | #### Change Resolution 686 | 687 | The desktop resolution is typically determined by the capabilities of the display that is attached to Jetson. If no display is attached, a default resolution of `640x480` is selected. To use a different resolution, edit 688 | `/etc/X11/xorg.conf` and append the following lines: 689 | 690 | ```bash 691 | Section "Screen" 692 | Identifier "Default Screen" 693 | Monitor "Configured Monitor" 694 | Device "Tegra0" 695 | SubSection "Display" 696 | Depth 24 697 | Virtual 1280 800 # Modify the resolution by editing these values 698 | EndSubSection 699 | EndSection 700 | ``` 701 | 702 | ## Update Logs 703 | 704 |
Dec-18-2022 705 | 706 | ### Updated 707 | 708 | - [x] Add `gotop` installation guide 709 | - [x] Drop `python2` support 710 | - [x] Update `code-server` installation guide 711 | 712 |

713 | 714 |
Aug-27-2021 715 | 716 | ### Updated 717 | 718 | - [x] Use `pip3` to install `docker-compose` 719 | 720 |

721 | 722 |
Aug-02-2021 723 | 724 | ### Added 725 | 726 | - [x] Update `Logs` section 727 | 728 | ### Updated 729 | 730 | - `Archiconda3` to [v0.2.3](https://github.com/Archiconda/build-tools/releases/tag/0.2.3) 731 | 732 |

733 | 734 | ## License 735 | 736 | [MIT License (C) Kevin Yu](https://github.com/yqlbu/jetson-packages-family/blob/master/LICENSE) 737 | -------------------------------------------------------------------------------- /contribute.md: -------------------------------------------------------------------------------- 1 | ## Contribute 2 | 3 | If you want to contribute to a project and make it better, your help is very welcome. Contributing is also a great way to learn more about social coding on Github, new technologies and and their ecosystems and how to make constructive, helpful bug reports, feature requests and the noblest of all contributions: a good, clean pull request. 4 | 5 | ### How to make a clean pull request 6 | 7 | - Create a `personal fork` of the project on Github. 8 | - Clone the fork on your local machine. Your remote repo on Github is called `origin`. 9 | - Add the original repository as a remote called `upstream`. 10 | - If you created your fork a while ago be sure to pull upstream changes into your local repository. 11 | - Create a new branch to work on! Branch from `develop` if it exists, else from `master`. 12 | - Implement/fix your feature, comment your code. 13 | - Follow the code style of the project, including indentation. 14 | - If the project has tests run them! 15 | - Write or adapt tests as needed. 16 | - Add or change the documentation as needed. 17 | - Squash your commits into a single commit with git's [interactive rebase](https://help.github.com/articles/interactive-rebase). Create a new branch if necessary. 18 | - Push your branch to your fork on Github, the remote `origin`. 19 | - From your fork open a pull request in the correct branch. Target the project's `develop` branch if there is one, else go for `master`! 20 | - Once the pull request is approved and merged you can pull the changes from `upstream` to your local repo and delete 21 | your extra branch(es). 22 | 23 | And last but not least: Always write your commit messages in the present tense. Your commit message should describe what the commit, when applied, does to the code – not what you did to the code. 24 | -------------------------------------------------------------------------------- /set_cuda.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | if ! grep 'cuda/bin' ${HOME}/.bashrc > /dev/null ; then 6 | echo "[BASH] Add CUDA path into ~/.bashrc" 7 | echo >> ${HOME}/.bashrc 8 | echo "export PATH=/usr/local/cuda/bin:\${PATH}" >> ${HOME}/.bashrc 9 | echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib64:\${LD_LIBRARY_PATH}" >> ${HOME}/.bashrc 10 | echo "export CPATH=$CPATH:/usr/local/cuda/targets/aarch64-linux/include" >> ${HOME}/.bashrc 11 | echo "export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/targets/aarch64-linux/lib" >> ${HOME}/.bashrc 12 | source ~/.bashrc 13 | fi 14 | -------------------------------------------------------------------------------- /src/.hugo_build.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/.hugo_build.lock -------------------------------------------------------------------------------- /src/LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | ## Guide 2 | 3 | This guide covers the necessary bits. As the project evolves, it will only become more comprehensive 4 | -------------------------------------------------------------------------------- /src/config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "https://example.com/" 2 | title = "Compose Docs" 3 | enableRobotsTXT = true 4 | # this example loads the theme as hugo module 5 | # comment out line below, and uncomment the line after it if you prefer to load the theme normally 6 | theme = ["github.com/onweru/compose"] # edit this if you'ld rather use a fork of this repo 7 | # theme = "compose" 8 | enableGitInfo = true 9 | 10 | disableKinds = ["taxonomy", "taxonomyTerm"] 11 | 12 | [outputs] 13 | home = ["HTML", "RSS","JSON"] -------------------------------------------------------------------------------- /src/config/_default/markup.toml: -------------------------------------------------------------------------------- 1 | [goldmark] 2 | [goldmark.renderer] 3 | unsafe = true 4 | [goldmark.extensions] 5 | typographer = false 6 | [highlight] 7 | codeFences = true 8 | guessSyntax = false 9 | hl_Lines = "" 10 | lineNoStart = 1 11 | lineNos = true 12 | lineNumbersInTable = false 13 | noClasses = false 14 | style = "monokai" 15 | tabWidth = 2 16 | [tableOfContents] 17 | endLevel = 4 18 | ordered = false 19 | startLevel = 2 -------------------------------------------------------------------------------- /src/config/_default/menus/menu.en.toml: -------------------------------------------------------------------------------- 1 | # menu items 2 | [[main]] 3 | name = "Docs" 4 | weight = 2 5 | url = "docs/" 6 | 7 | [[main]] 8 | name = "Example" 9 | weight = 3 10 | url = "https://docs.neuralvibes.com" 11 | 12 | # [[main]] 13 | # name = "Blog" 14 | # weight = 4 15 | # url = "blog/" -------------------------------------------------------------------------------- /src/config/_default/params.toml: -------------------------------------------------------------------------------- 1 | mainSections = ["posts"] # use it for blog page section 2 | 3 | uniqueHomePage = true # change to false to add sidebar to homepage 4 | 5 | repo = "https://github.com/onweru/compose" 6 | 7 | time_format_blog = "Monday, January 02, 2006" 8 | time_format_default = "January 2, 2006" 9 | enableDarkMode = true # set to false to disable darkmode by default # user will still have the option to use dark mode 10 | 11 | # sets the maximum number of lines per codeblock. The codeblock will however be scrollable and expandable. 12 | codeMaxLines = 7 13 | 14 | # disable showing line numbers by default. Switch to `true` if you'd rather have them on. 15 | codeLineNumbers = false 16 | 17 | # Site logo 18 | [logo] 19 | lightMode = "images/compose.svg" 20 | darkMode = "images/compose-light.svg" 21 | 22 | [source] 23 | name = "GitHub" 24 | iconLight = "images/GitHubMarkLight.svg" 25 | iconDark = "images/GitHubMarkDark.svg" 26 | url = "https://github.com/onweru/compose/" 27 | 28 | # optional 29 | # attribution. Feel free to delete this 30 | [author] 31 | name = "Weru" 32 | url = "https://neuralvibes.com/author/" 33 | -------------------------------------------------------------------------------- /src/content/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Compose" 3 | [data] 4 | baseChartOn = 3 5 | colors = ["#627c62", "#11819b", "#ef7f1a", "#4e1154"] 6 | columnTitles = ["Section", "Status", "Author"] 7 | fileLink = "content/projects.csv" 8 | title = "Projects" 9 | 10 | +++ 11 | {{< block "grid-2" >}} 12 | {{< column >}} 13 | 14 | # Compose your Docs with **Ease**. 15 | 16 | Compose is a lean `Hugo` domentation theme, inspired by [forestry.io](https://forestry.io/docs/welcome/). 17 | 18 | {{< tip "warning" >}} 19 | Feel free to open a [PR](https://github.com/onweru/compose/pulls), raise an [issue](https://github.com/onweru/compose/issues/new/choose "Open a Github Issue")(s) or request new feature(s). {{< /tip >}} 20 | 21 | {{< tip >}} 22 | You can generate diagrams, flowcharts, and piecharts from text in a similar manner as markdown using [mermaid](./docs/compose/mermaid/). 23 | 24 | Or, [generate graphs, charts](docs/compose/graphs-charts-tables/#show-a-pie-doughnut--bar-chart-at-once) and tables from a csv, ~~or a json~~ file. 25 | {{< /tip >}} 26 | 27 | {{< button "docs/compose/" "Read the Docs" >}}{{< button "https://github.com/onweru/compose" "Download Theme" >}} 28 | {{< /column >}} 29 | 30 | {{< column >}} 31 | ![diy](/images/scribble.jpg) 32 | {{< /column >}} 33 | {{< /block >}} -------------------------------------------------------------------------------- /src/content/docs/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Themes' Docs" 3 | weight: 1 4 | --- 5 | 6 | These docs consists of two parts: 7 | 8 | 1. Hugo Compose Themes docs 9 | 2. Hugo Clarity Theme docs. 10 | 11 | Please note that the features listed under each theme are independent of each other. That is to say, some features may only be found in one theme and not in both. 12 | 13 | 14 | 15 | {{< button "./compose/" "Compose Theme Docs" "mb-1" >}} 16 | 17 | {{< button "./clarity/" "Clarity Theme Docs" >}} 18 | 19 | -------------------------------------------------------------------------------- /src/content/docs/clarity/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | Title: Clarity Docs 3 | weight: 10 4 | --- 5 | 6 | __Hugo Clarity__ is a technology-minded theme for Hugo based on VMware's open-source [Clarity Design System](https://clarity.design/) featuring rich code support, dark/light mode, mobile support, and much more. See [a live demo at __neonmirrors.net__](https://neonmirrors.net/). 7 | 8 | {{< button "./getting-started/" "Get started with Clarity" >}} 9 | -------------------------------------------------------------------------------- /src/content/docs/clarity/blogging.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title="Blogging" 3 | +++ 4 | 5 | ### Blog directory 6 | 7 | Edit the `config.toml` file and change the `mainSections` key. Values will be directories where the blogs reside. 8 | 9 | ```yaml 10 | [params] 11 | ... 12 | mainSections = ["posts", "docs", "blogs"] 13 | ... 14 | ``` 15 | 16 | For more info, see the [Hugo docs](https://gohugo.io/functions/where/#mainsections). 17 | 18 | ### Mobile menu positioning 19 | 20 | The navigation menu when mobile browsing can be configured in `config.toml` to open right or left depending on preference. The "hamburger" menu icon will always display in the upper right hand corner regardless. 21 | 22 | ```yaml 23 | [params] 24 | ... 25 | mobileNavigation = "left" # Mobile nav menu will open to the left of the screen. 26 | ... 27 | ``` 28 | 29 | ### Tags and Taxonomies 30 | 31 | #### Show number of tags 32 | 33 | The number of tags and taxonomies (including categories) that should be shown can be configured so that any more than this value will only be accessible when clicking the All Tags button. This is to ensure a large number of tags or categories can be easily managed without consuming excess screen real estate. Edit the `numberOfTagsShown` parameter and set accordingly. 34 | 35 | ```yaml 36 | [params] 37 | ... 38 | numberOfTagsShown = 14 # Applies for all other default & custom taxonomies. e.g categories, brands see https://gohugo.io/content-management/taxonomies#what-is-a-taxonomy 39 | ... 40 | ``` 41 | 42 | #### Number of tags example 43 | 44 | ![Tags](../../../images/clarity/tags.png) 45 | 46 | 47 | 48 | ### Table of contents 49 | 50 | Each article can optionally have a table of contents (TOC) generated for it based on top-level links. By configuring the `toc` parameter in the article frontmatter and setting it to `true`, a TOC will be generated only for that article. The TOC will then render under the featured image. 51 | 52 | #### Table of contents (TOC) example 53 | 54 | ![Article table of contents](../../../images/clarity/article-toc.png) 55 | -------------------------------------------------------------------------------- /src/content/docs/clarity/customize.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Customization" 3 | weight: 14 4 | --- 5 | 6 | ## Configuration 7 | 8 | If set, jump over to the `config.toml` file and start [configuring](#configuration) your site. 9 | 10 | This section will mainly cover settings that are unique to this theme. If something is not covered here (or elsewhere in this file), there's a good chance it is covered in [this Hugo docs page](https://gohugo.io/getting-started/configuration/#configuration-file). 11 | 12 | ### Global Parameters 13 | 14 | These options set global values that some pages or all pages in the site use by default. 15 | 16 | | Parameter | Value Type | Overidable on Page | 17 | |:---- | ---- | ---- | 18 | | author | string | no | 19 | | twitter | string | no | 20 | | largeTwitterCard | boolean | no | 21 | | ga_analytics | string | no | 22 | | description | string | yes | 23 | | introDescription | string | no | 24 | | numberOfTagsShown | integer | no | 25 | | fallBackOgImage | file path (string) | no | 26 | | codeMaxLines | integer | yes | 27 | | codeLineNumbers | boolean | yes | 28 | | mainSections | array/string | no | 29 | | centerLogo | boolean | no | 30 | | logo | file path (string) | no | 31 | | mobileNavigation | string | no | 32 | | figurePositionShow | boolean | yes | 33 | | figurePositionLabel | string | no | 34 | | customCSS | array of file path (string) | no | 35 | | customJS | array of file path (string) | no | 36 | | enforceLightMode | boolean | N/A | 37 | | enforceDarkMode | boolean | N/A | 38 | | titleSeparator| string | no | 39 | | comment | boolean | no | 40 | 41 | ### Page Parameters 42 | 43 | These options can be set from a page [frontmatter](https://gohugo.io/content-management/front-matter#readout) or via [archetypes](https://gohugo.io/content-management/archetypes/#readout). 44 | 45 | | Parameter | Value Type | Overrides Global | 46 | |:---- | ---- | ---- | 47 | | title | string | N/A | 48 | | date | date | N/A | 49 | | description | string | N/A | 50 | | draft | boolean | N/A | 51 | | featured | boolean | N/A | 52 | | tags | array/string | N/A | 53 | | categories | array/string | N/A | 54 | | toc | boolean | N/A | 55 | | thumbnail | file path (string) | N/A | 56 | | featureImage | file path (string) | N/A | 57 | | shareImage | file path (string) | N/A | 58 | | codeMaxLines | integer | yes | 59 | | codeLineNumbers | boolean | yes | 60 | | figurePositionShow | boolean | yes | 61 | | figurePositionLabel | string | no | 62 | | comment | boolean | no | 63 | 64 | ### Modify links menu 65 | 66 | To add, remove, or reorganize top menu items, [edit this YAML file](https://github.com/chipzoller/hugo-clarity/blob/master/exampleSite/data/menu.yaml). These menu items also display any categories (taxonomies) that might be configured for articles. 67 | 68 | ### Social media 69 | 70 | To edit your social media profile links, [edit this YAML file](https://github.com/chipzoller/hugo-clarity/blob/master/exampleSite/data/social.yaml). 71 | 72 | If you wish to globally use a [large Twitter summary card](https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image) when sharing posts, set the global parameter `largeTwitterCard` to `true`. 73 | 74 | ### Search engine 75 | 76 | If using Google Analytics, configure the `ga_analytics` global parameter in your site with your ID. 77 | 78 | ### Forcing light or dark mode 79 | 80 | By default, sites authored using Clarity will load in the browser with the user's system-wide settings. I.e., if the underlying OS is set to dark mode, the site will automatically load in dark mode. Regardless of the default mode, a UI control switch exists to override the theme mode at the user's discretion. 81 | 82 | In order to override this behavior and force one mode or another, add either `enforceLightMode` or `enforceDarkMode` to your `config.toml` file. If neither value is present, add it. 83 | 84 | To enforce Light Mode by default, turn `enforceLightMode` to `true`. 85 | 86 | To enforce Dark Mode by default, turn `enforceDarkMode` to `true` 87 | 88 | ```yaml 89 | [params] 90 | ... 91 | enforceLightMode = true # Force the site to always load in light mode. 92 | ... 93 | ``` 94 | 95 | Please note that you cannot enforce both modes at the same time. It wouldn't make sense, would it? 96 | 97 | {{< tip "warning" >}} 98 | > Please also note that the mode toggle UI will remain in place. That way, if a user prefers dark mode, they can have their way. The best of both worlds. 99 | {{< /tip >}} 100 | 101 | ### I18N 102 | 103 | This theme supports Multilingual (i18n / internationalization / translations) 104 | 105 | The `exampleSite` gives you some examples already. 106 | You may extend the multilingual functionality by following the [official documentation](https://gohugo.io/content-management/multilingual/). 107 | 108 | Things to consider in multilingual: 109 | 110 | * **supported languages** are configured in [config/_default/languages.toml](./exampleSite/config/_default/languages.toml) 111 | * **add new language support** by creating a new file inside [i18n](./i18n/) directory. 112 | Check for missing translations using `hugo server --i18n-warnings` 113 | * **taxonomy** names (tags, categories, etc...) are translated in [i18n](./i18n/) as well (translate the key) 114 | * **menus** are translated manually in the config files [config/_default/menus/menu.xx.toml](./exampleSite/config/_default/menus/) 115 | * **menu's languages list** are semi-hardcoded. You may chose another text for the menu entry with [languageMenuName](./exampleSite/config.toml). Please, do better and create a PR for that. 116 | * **content** must be translated individually. Read the [official documentation](https://gohugo.io/content-management/multilingual/#translate-your-content) for information on how to do it. 117 | 118 | **note:** if you do NOT want any translations (thus removing the translations menu entry), then you must not have any translations. 119 | In the exampleSite that's as easy as removing the extra translations from the `config/_default/...` or executing this onliner: 120 | 121 | ``` 122 | sed '/^\[pt]$/,$d' -i config/_default/languages.toml && rm config/_default/menus/menu.pt.toml 123 | ``` 124 | 125 | ### Comments 126 | 127 | Clarity supports Hugo built-in Disqus partial, you can enable Disqus simply by setting [`disqusShortname`](https://gohugo.io/templates/internal/#configure-disqus) in your configuration file. 128 | 129 | {{< tip >}} 130 | > `disqusShortname` should be placed in root level of configuration. 131 | {{< /tip >}} 132 | 133 | You can also create a file named `layouts/partials/comments.html` for customizing the comments, checkout [Comments Alternatives](https://gohugo.io/content-management/comments/#comments-alternatives) for details. 134 | -------------------------------------------------------------------------------- /src/content/docs/clarity/features.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Features 3 | Weight: 13 4 | --- 5 | 6 | * Blog with tagging and category options 7 | * Deeplinks 8 | * Native Image Lazy Loading 9 | * Customizable (see config) 10 | * Dark Mode (with UI controls for user preference setting) 11 | * Toggleable table of contents 12 | * Flexible image configuration 13 | * Logo alignment 14 | * Mobile support with configurable menu alignment 15 | * Syntax Highlighting 16 | * Rich code block functions including: 17 | 1. Copy to clipboard 18 | 2. Toggle line wrap (dynamic) 19 | 3. Toggle line numbers 20 | 4. Language label 21 | 5. Toggle block expansion/contraction (dynamic) 22 | 23 | To put it all in context, here is a preview showing all functionality. 24 | 25 | ![code block functions](../../../images/clarity/syntax-block.gif) 26 | -------------------------------------------------------------------------------- /src/content/docs/clarity/getting-started.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Getting started 3 | weight: 11 4 | --- 5 | 6 | ## Prerequisites 7 | 8 | Firstly, __ensure you have installed the [extended version of Hugo](https://github.com/gohugoio/hugo/releases)__. See installation steps from [Hugo's official docs](https://gohugo.io/getting-started/installing/). 9 | 10 | ## Getting up and running 11 | 12 | Read the [prerequisites](#prerequisites) above and verify you're using the extended version of Hugo. There are at least two ways of quickly getting started with Hugo and the VMware Clarity theme: 13 | 14 | ### Option 1 (recommended) 15 | 16 | Generate a new Hugo site and add this theme as a Git submodule inside your themes folder: 17 | 18 | ```bash 19 | hugo new site yourSiteName 20 | cd yourSiteName 21 | git init 22 | git submodule add https://github.com/chipzoller/hugo-clarity themes/hugo-clarity 23 | cp -a themes/hugo-clarity/exampleSite/* . 24 | ``` 25 | 26 | Then run 27 | 28 | ```bash 29 | hugo server 30 | ``` 31 | 32 | Hurray! 33 | 34 | ### Option 2 (Great for testing quickly) 35 | 36 | You can run your site directly from the `exampleSite`. To do so, use the following commands: 37 | 38 | ```bash 39 | git clone https://github.com/chipzoller/hugo-clarity 40 | cd hugo-clarity/exampleSite/ 41 | hugo server --themesDir ../.. 42 | ``` 43 | 44 | > Although, option 2 is great for quick testing, it is somewhat problematic when you want to update your theme. You would need to be careful not to overwrite your changes. 45 | 46 | ### Option 3 (The new, most fun & painless approach) 47 | 48 | This option enables you to load this theme as a hugo module. It arguably requires the least effort to run and maintain in your website. 49 | 50 | First things first, ensure you have `go` binary [installed on your machine](https://golang.org/doc/install). 51 | 52 | ```bash 53 | git clone https://github.com/chipzoller/hugo-clarity.git clarity 54 | cd clarity/exampleSite/ 55 | hugo mod init my-site 56 | ``` 57 | Open config.toml file in your code editor, replace `theme = "hugo-clarity"` with `theme = ["github.com/chipzoller/hugo-clarity"]` or just `theme = "github.com/chipzoller/hugo-clarity"`. 58 | 59 | Hurray you can now run 60 | 61 | ```yaml 62 | hugo server 63 | ``` 64 | 65 | To pull in theme updates, run `hugo mod get -u ./...` from the theme folder. If unsure, [learn how to update hugo modules](https://gohugo.io/hugo-modules/use-modules/#update-modules) 66 | 67 | > There [is more you could do with hugo modules](https://discourse.gohugo.io/t/hugo-modules-for-dummies/20758), but this will suffice for our use case here. 68 | -------------------------------------------------------------------------------- /src/content/docs/clarity/images.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Manipulating Images" 3 | weight = 15 4 | +++ 5 | 6 | ## Images 7 | 8 | ### Image figure captions 9 | 10 | You have the option of adding captions to images in blog posts and automatically prepending a desired string such as "Figure N" to the alt text. This is controlled via two global settings. 11 | 12 | `figurePositionLabel` is a string which will be prepended to any alt text of an article image. By default, this is set to "Figure." And `figurePositionShow` controls, globally, whether to show this label. It does not affect whether to show the image alt text, only the prefix figure caption. For more granular control, `figurePositionShow` can be overridden at the article level if desired. 13 | 14 | The number will be automatically calculated and assigned after the `figurePositionLabel` text starting from the top of the article and counting down. Featured images will be excluded from this figuration. 15 | 16 | ### Image figure captions example 17 | 18 | In this example, `figurePositionLabel` is set to "Figure" in `config.toml` and this is the first image in a given article. 19 | 20 | ```markdown 21 | ![Antrea Kubernetes nodes prepared](./images/calrity/image-figure.png) 22 | ``` 23 | 24 | ![Here is my alt text for this image.](../../../images/clarity/image-figure.png) 25 | 26 | ### Inline images 27 | 28 | To make a blog image inline, append `:inline` to its alt text. Typically, inline images will have no alt text associated with them. 29 | 30 | ### Inline images example 31 | 32 | ```markdown 33 | 34 | ![:inline](someImageUrl) 35 | 36 | 37 | 38 | ![some alt text:inline](someOtherImageUrl) 39 | ``` 40 | 41 | ![Inline image example](../../../images/clarity/image-inline.png) 42 | 43 | ### Float images to the left 44 | 45 | To align a blog image to the left, append `:left` to its alt text. Article text will then flow to the right of the image. 46 | 47 | ### Float images left example 48 | 49 | ```markdown 50 | 51 | ![:left](someImageUrl) 52 | 53 | 54 | 55 | ![some alt text:left](someOtherImageUrl) 56 | ``` 57 | 58 | ### Add classes to images 59 | 60 | To add a class image to the left, append `::` to its alt text. You can also add multiple classes to an image separated by space. `:: `. 61 | 62 | ### Image class example 63 | 64 | ```markdown 65 | 66 | ![::img-medium](someImageUrl) 67 | 68 | 69 | 70 | ![some alt text::img-large img-shadow](someOtherImageUrl) 71 | ``` 72 | 73 | ### Article thumbnail image 74 | 75 | Blog articles can specify a thumbnail image which will be displayed to the left of the card on the home page. Thumbnails should be square (height:width ratio of `1:1`) and a suggested dimension of 150 x 150 pixels. They will be specified using a frontmatter variable as follows: 76 | 77 | ```yaml 78 | ... 79 | thumbnail: "images/2020-04/capv-overview/thumbnail.jpg" 80 | ... 81 | ``` 82 | 83 | The thumbnail image will take precedence on opengraph share tags if the [shareImage](#share-image) parameter is not specified. 84 | 85 | ### Article featured image 86 | 87 | Each article can specify an image that appears at the top of the content. When sharing the blog article on social media, if a thumnail is not specified, the featured image will be used as a fallback on opengraph share tags. 88 | 89 | ```yaml 90 | ... 91 | featureImage: "images/2020-04/capv-overview/featured.jpg" 92 | ... 93 | ``` 94 | 95 | ### Share Image 96 | 97 | Sometimes, you want to explicitly set the image that will be used in the preview when you share an article on social media. You can do so in the front matter. 98 | 99 | ```yaml 100 | ... 101 | shareImage = "images/theImageToBeUsedOnShare.png" 102 | ... 103 | ``` 104 | 105 | Note that if a share image is not specified, the order of precedence that will be used to determine which image applies is `thumbnail` => `featureImage` => `fallbackOgImage`. When sharing a link to the home page address of the site (as opposed to a specific article), the `fallbackOgImage` will be used. 106 | 107 | ### Align logo 108 | 109 | You can left align or center your site's logo. 110 | 111 | ```yaml 112 | ... 113 | centerLogo = true # Change to false to align left 114 | ... 115 | ``` 116 | 117 | If no logo is specified, the title of the site will appear in its place. 118 | -------------------------------------------------------------------------------- /src/content/docs/clarity/syntax-highlighting.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Syntax Highlighting" 3 | +++ 4 | 5 | ### Code 6 | 7 | #### Display line numbers 8 | 9 | Choose whether to display line numbers within a code block globally with the parameter `codeLineNumbers` setting to `true` or `false`. 10 | 11 | ```yaml 12 | [params] 13 | ... 14 | codeLineNumbers = true # Shows line numbers for all code blocks globally. 15 | ... 16 | ``` 17 | 18 | #### Limit code block height 19 | 20 | You can globally control the number of lines which are displayed by default for your code blocks. Code which has the number of lines exceed this value will dynamically cause two code block expansion buttons to appear, allowing the user to expand to full length and contract. This is useful when sharing code or scripts with tens or hundreds of lines where you wish to control how many are displayed. Under params in `config.toml` file, add a value as follows: 21 | 22 | ```yaml 23 | [params] 24 | ... 25 | codeMaxLines = 10 # Maximum number of lines to be shown by default across all articles. 26 | ... 27 | ``` 28 | 29 | > If the value already exists, change it to the desired number. This will apply globally. 30 | 31 | If you need more granular control, this parameter can be overridden at the blog article level. Add the same value to your article frontmatter as follows: 32 | 33 | ```yaml 34 | ... 35 | codeMaxLines = 15 # Maximum number of lines to be shown in code blocks in this blog post. 36 | ... 37 | ``` 38 | 39 | If `codeMaxLines` is specified both in `config.toml` and in the article frontmatter, the value specified in the article frontmatter will apply to the given article. In the above example, the global default is `10` and yet the article value is `15` so code blocks in this article will auto-collapse after 15 lines. 40 | 41 | If `codeMaxLines` is not specified anywhere, an internal default value of `100` will be assumed. -------------------------------------------------------------------------------- /src/content/docs/clarity/theme-overrides.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Theme Overrides" 3 | +++ 4 | 5 | ### Custom CSS and JS 6 | 7 | To minimize HTTP requests per page, we would recommend loading CSS styles and JavaScript helpers in single bundles. That is to say, one CSS file and one JavaScript file. Using Hugo minify functions, these files will be minified to optimize the size. 8 | 9 | Going by the above 👆🏻 reason, we recommend adding custom CSS and JS via [this custom SASS file](https://github.com/chipzoller/hugo-clarity/blob/master/assets/sass/_custom.sass) and [custom JavaScript file](https://github.com/chipzoller/hugo-clarity/blob/master/assets/js/custom.js). 10 | 11 | However, sometimes you may need to load additional style or script files. In such cases, you can add custom `.css` and `.js` files by listing them in the `config.toml` file (see the snippet below). Similar to images, these paths should be relative to the `static` directory. 12 | 13 | ```yaml 14 | [params] 15 | ... 16 | customCSS = ["css/custom.css"] # Include custom CSS files 17 | customJS = ["js/custom.js"] # Include custom JS files 18 | ... 19 | ``` 20 | 21 | > __Pro Tip__: You can change the theme colors via the [this variable's SASS file](https://github.com/chipzoller/hugo-clarity/blob/master/assets/sass/_variables.sass) 22 | 23 | ### Hooks 24 | 25 | Clarity provides some hooks for adding code on page. 26 | 27 | If you need to add some code(CSS import, HTML meta or similar) to the head section on every page, add a partial to your project: 28 | 29 | ``` 30 | layouts/partials/hooks/head-end.html 31 | ``` 32 | 33 | Similar, if you want to add some code right before the body end, create your own version of the following file: 34 | 35 | ``` 36 | layouts/partials/hooks/body-end.html 37 | ``` -------------------------------------------------------------------------------- /src/content/docs/compose/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Compose Docs" 3 | weight: 1 4 | --- 5 | 6 | Welcome to the Compose theme user guide! This guide shows you how to get started creating technical documentation sites using Compose, including site customization and how to use Compose's blocks and templates. 7 | 8 | {{< button "./install-theme/" "Get started now" >}} 9 | -------------------------------------------------------------------------------- /src/content/docs/compose/customize.md: -------------------------------------------------------------------------------- 1 | +++ 2 | description = "basic configuration" 3 | title = "Customize layouts & components" 4 | 5 | +++ 6 | ### Shortcodes modifiers 7 | 8 | These modifiers are classes you can use with shortcodes to customize the look and feel of your layouts and components. 9 | 10 | #### Grid 11 | 12 | | modifier | space | 13 | | --- | --- | 14 | | grid-2 | 2 columns | 15 | | grid-3 | 3 columns | 16 | | grid-4 | 4 columns | 17 | 18 | #### Spacing 19 | 20 | | modifier | space | 21 | | --- | --- | 22 | | mt-1 | 1.5rem top margin | 23 | | mt-2 | 3rem top margin | 24 | | mt-3 | 4.5rem top margin | 25 | | mt-4 | 6rem top margin | 26 | 27 | > use pt-1 \~ pt-4 for top padding 28 | 29 | | modifier | space | 30 | | --- | --- | 31 | | mb-1 | 1.5rem bottom margin | 32 | | mb-2 | 3rem bottom margin | 33 | | mb-3 | 4.5rem bottom margin | 34 | | mb-4 | 6rem bottom margin | 35 | 36 | > use pb-1 \~ pb-4 for bottom padding 37 | 38 | ### How do I disable dark mode? 39 | 40 | Under `params` add `enableDarkMode = false` to your `config.toml` file. If your site is based on the exampleSite, the value is already included; you only need to uncomment it. 41 | 42 | > The user will still have the option to activate dark mode, if they so wish through the UI 43 | 44 | ### How do I change the theme color? 45 | 46 | If the theme is a git submodule, you can copy the file `assets/sass/_variables.sass` from the theme into your own site. 47 | The location must be exactly the same as in the theme, so put it in `YourFancySite/assets/sass/`. 48 | You can then edit the file to customize the theme color in your site without having to modify the theme itself. 49 | 50 | ### How can I change the address bar color on mobile devices? 51 | 52 | Just put the following line in the `[params]` section in your `config.toml` file (and of course change the color): 53 | 54 | ```toml 55 | metaThemeColor = "#123456" 56 | ``` 57 | 58 | ### How do I add custom styles, scripts, meta tags e.t.c 59 | 60 | Use hooks. Ideally, you should not override the them directly. 61 | 62 | Instead, you should duplicate [these files](https://github.com/onweru/compose/tree/master/layouts/partials/hooks) at the root of you site directory. 63 | 64 | 1. layouts/partials/hooks/head.html 65 | 2. layouts/partials/hooks/scripts.html 66 | 67 | The contents of the first file will be attached just before the `` tag. 68 | 69 | The contents of the second file will be attached just before the `` tag. 70 | 71 | Alternatively, if you want to use the `config.toml` to track your custom styles or scripts, declare them as slices under `[params]` like so: 72 | 73 | ```toml 74 | ... 75 | [params] 76 | customCSS = [styleURL1, styleURL2 ...] 77 | customJS = [scriptURL1, scriptURL2 ... ] 78 | ... 79 | ``` 80 | 81 | ### I want to add custom sass -------------------------------------------------------------------------------- /src/content/docs/compose/graphs-charts-tables.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Graphs, charts & dynamic tables" 3 | weight = 9 4 | [dataset1] 5 | fileLink = "content/projects.csv" # path to where csv is stored 6 | colors = ["#ef7f1a", "#627c62", "#11819b", "#4e1154"] # chart colors 7 | columnTitles = ["Section", "Status", "Author"] # optional if not table will be displayed from dataset 8 | baseChartOn = 3 # number of column the chart(s) and graph should be drawn from # can be overridden directly via shortcode parameter # it's therefore optional 9 | title = "Projects" 10 | 11 | [dataset2] 12 | fileLink = "content/themes.csv" # path to where csv is stored 13 | colors = ["#ef7f1a", "#627c62", "#11819b", "#4e1154"] # chart colors 14 | columnTitles = ["Theme", "Latest Version", "Repo Owner"] # Optional if no table will be displayed from dataset 15 | baseChartOn = 2 # number of column the chart(s) and graph should be drawn from # can be overridden directly via shortcode parameter # it's therefore optional 16 | title = "Hugo Themes" 17 | +++ 18 | 19 | Using [chart js library](https://www.chartjs.org/) you can display data you have stored in a `csv` file as a pie chart, bar graph or doughnut chart. 20 | 21 | At this point if you want to display data from a json or yaml file, you would need to [convert it into csv](http://convertcsv.com/json-to-csv.htm) first. Else the template will error out. 22 | 23 | Once you have a csv file, you display the charts as follows: 24 | 25 | #### Show a pie, doughnut & bar chart at once 26 | 27 | Firstly define the data you want to display from the front matter: 28 | 29 | ```markdown 30 | # from front matter 31 | ... 32 | [dataset1] # this key will in the chart shortcode 33 | fileLink = "content/projects.csv" # path to where csv is stored 34 | colors = ["#627c62", "#11819b", "#ef7f1a", "#4e1154"] # chart colors 35 | columnTitles = ["Section", "Status", "Author"] 36 | charts = ["bar", "doughnut", "pie", "table"] 37 | baseChartOn = 3 # number of column the chart(s) and graph should be drawn from 38 | piechart = true 39 | doughnutchart = true 40 | bargraph = true 41 | title = "Projects" 42 | table = true # show table listing the chart data 43 | 44 | // from page content 45 | ... 46 | {{}} 47 | {{}} 48 | {{}} 49 | ... 50 | ``` 51 | 52 | {{< grid "3 mt-2 mb-2" >}} 53 | {{< chart "dataset1" "pie,doughnut,bar" >}} 54 | {{< /grid >}} 55 | 56 | #### __Show Table at once__ 57 | 58 | {{< block >}} 59 | {{< chart "dataset1" "table" >}} 60 | {{< /block >}} 61 | 62 | Firstly define the data you want to display from the front matter: 63 | 64 | ```toml 65 | # from page front matter 66 | [dataset2] 67 | fileLink = "content/themes.csv" # path to where csv is stored # this key will in the chart shortcode 68 | colors = ["#627c62", "#11819b", "#ef7f1a", "#4e1154"] # chart colors 69 | columnTitles = ["Theme", "Latest Version", "Owner"] 70 | title = "Hugo Themes" 71 | baseChartOn = 2 # number of column the chart(s) and graph should be drawn from 72 | piechart = false 73 | doughnutchart = true 74 | bargraph = true 75 | table = false # show table listing the chart data 76 | ``` 77 | 78 | #### Show only a pie and a doughnut chart 79 | 80 | ```markdown 81 | // from page content 82 | ... 83 | {{}} 84 | {{}} 85 | {{}} 86 | ... 87 | ``` 88 | 89 | {{< grid "3 mt-2 mb-2" >}} 90 | {{< chart "dataset2" "pie,doughnut" "1" >}} 91 | {{< /grid >}} 92 | 93 | #### Show table only 94 | 95 | {{< grid "3" >}} 96 | {{< chart "dataset2" "table" >}} 97 | {{< /grid >}} -------------------------------------------------------------------------------- /src/content/docs/compose/install-theme.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Install theme" 3 | weight: 2 4 | description: > 5 | This page tells you how to get started with the Compose theme. 6 | --- 7 | 8 | ### Prerequisites 9 | 10 | First ensure that you have hugo installed. 11 | 12 | You need a [recent **extended** version](https://github.com/gohugoio/hugo/releases) (we recommend version 0.61 or later) of [Hugo](https://gohugo.io/) to do local builds and previews of sites (like this one) that uses this theme. 13 | 14 | If you install from the release page, make sure to get the `extended` Hugo version, which supports [sass](https://sass-lang.com/documentation/file.SCSS_FOR_SASS_USERS.html); you may need to scroll down the list of releases to see it. 15 | 16 | For comprehensive Hugo documentation, see [gohugo.io](https://gohugo.io/). 17 | 18 | ## Run your site with compose theme 19 | 20 | You could go with the options right below. 21 | 22 | ### Option 1 (my favorite) 23 | 24 | This option enables you to load compose theme as a hugo module. First things first, ensure you have `go` binary [installed on your machine](https://golang.org/doc/install). 25 | 26 | ```bash 27 | git clone https://github.com/onweru/compose/ 28 | cd compose/exampleSite/ 29 | hugo server 30 | ``` 31 | 32 | To pull in theme updates, run `hugo mod get -u ./...` from the theme folder. If unsure, [learn how to update hugo modules](https://gohugo.io/hugo-modules/use-modules/#update-modules) 33 | 34 | {{< tip >}} 35 | If you choose __Option 2__ or __Option 3__ below, ensure you edit [these lines in the config.toml file](https://github.com/onweru/compose/blob/b3e30e0816621223224897edc45eeeabd0d9cd16/exampleSite/config.toml#L4-L7) as advised on the comments 36 | {{< /tip >}} 37 | 38 | ### Option 2 (recommended) 39 | 40 | Generate a new Hugo site and add this theme as a Git submodule inside your themes folder: 41 | 42 | ```bash 43 | hugo new site yourSiteName 44 | cd yourSiteName 45 | git init 46 | git submodule add https://github.com/onweru/compose/ themes/compose 47 | cp -a themes/compose/exampleSite/* . 48 | ``` 49 | 50 | Then run 51 | 52 | ```bash 53 | hugo server 54 | ``` 55 | 56 | Hurray! 57 | 58 | ### Option 3 (Great for testing quickly) 59 | 60 | You can run your site directly from the `exampleSite`. To do so, use the following commands: 61 | 62 | ```bash 63 | git clone https://github.com/onweru/compose/ 64 | cd compose/exampleSite/ 65 | hugo server --themesDir ../.. 66 | ``` 67 | 68 | {{< tip >}} 69 | Although, option 3 is great for quick testing, it is somewhat problematic when you want to update your theme. You would need to be careful not to overwrite your changes. 70 | {{< /tip >}} 71 | 72 | Once set, jump over to the `config.toml` file and start [configuring](#configuration) your site. 73 | 74 | -------------------------------------------------------------------------------- /src/content/docs/compose/mermaid.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Mermaid" 3 | weight: 8 4 | description: "Generate diagrams, flowcharts, and piecharts from text in a similar manner as markdown." 5 | --- 6 | 7 | [Mermaid](https://mermaidjs.github.io/) is library that helps you generate diagrams, flowcharts, and piecharts from text in a similar manner as markdown. 8 | 9 | With compose theme, you can use mermaid using a custom shortcode as follows: 10 | 11 | ### Sequence Diagrams 12 | 13 | **Syntax** 14 | 15 | ```tpl 16 | {{}} 17 | sequenceDiagram 18 | participant Alice 19 | participant Bob 20 | Alice->>John: Hello John, how are you? 21 | loop Healthcheck 22 | John->>John: Fight against hypochondria 23 | end 24 | Note right of John: Rational thoughts
prevail... 25 | John-->>Alice: Great! 26 | John->>Bob: How about you? 27 | Bob-->>John: Jolly good! 28 | {{}} 29 | ``` 30 | 31 | **Result** 32 | 33 | {{< mermaid >}} 34 | sequenceDiagram 35 | participant Alice 36 | participant Bob 37 | Alice->>John: Hello John, how are you? 38 | loop Healthcheck 39 | John->>John: Fight against hypochondria 40 | end 41 | Note right of John: Rational thoughts
prevail... 42 | John-->>Alice: Great! 43 | John->>Bob: How about you? 44 | Bob-->>John: Jolly good! 45 | {{< /mermaid >}} 46 | 47 | ### Flow Charts 48 | 49 | **Syntax** 50 | 51 | ```tpl 52 | {{}} 53 | flowchart TB 54 | c1-->a2 55 | subgraph one 56 | a1-->a2 57 | end 58 | subgraph two 59 | b1-->b2 60 | end 61 | subgraph three 62 | c1-->c2 63 | end 64 | one --> two 65 | three --> two 66 | two --> c2 67 | {{}} 68 | ``` 69 | **Result** 70 | 71 | {{< mermaid >}} 72 | flowchart TB 73 | c1-->a2 74 | subgraph one 75 | a1-->a2 76 | end 77 | subgraph two 78 | b1-->b2 79 | end 80 | subgraph three 81 | c1-->c2 82 | end 83 | one --> two 84 | three --> two 85 | two --> c2 86 | {{< /mermaid >}} 87 | 88 | ### Graphs 89 | 90 | **Syntax** 91 | 92 | ```tpl 93 | {{}} 94 | graph TB 95 | sq[Square shape] --> ci((Circle shape)) 96 | 97 | subgraph A 98 | od>Odd shape]-- Two line
edge comment --> ro 99 | di{Diamond with
line break} -.-> ro(Rounded
square
shape) 100 | di==>ro2(Rounded square shape) 101 | end 102 | 103 | %% Notice that no text in shape are added here instead that is appended further down 104 | e --> od3>Really long text with linebreak
in an Odd shape] 105 | 106 | %% Comments after double percent signs 107 | e((Inner / circle
and some odd
special characters)) --> f(,.?!+-*ز) 108 | 109 | cyr[Cyrillic]-->cyr2((Circle shape Начало)); 110 | 111 | classDef green fill:#9f6,stroke:#333,stroke-width:2px; 112 | classDef orange fill:#f96,stroke:#333,stroke-width:4px; 113 | class sq,e green 114 | class di orange 115 | {{}} 116 | ``` 117 | 118 | **Result** 119 | 120 | {{< mermaid >}} 121 | graph TB 122 | sq[Square shape] --> ci((Circle shape)) 123 | 124 | subgraph A 125 | od>Odd shape]-- Two line
edge comment --> ro 126 | di{Diamond with
line break} -.-> ro(Rounded
square
shape) 127 | di==>ro2(Rounded square shape) 128 | end 129 | 130 | %% Notice that no text in shape are added here instead that is appended further down 131 | e --> od3>Really long text with linebreak
in an Odd shape] 132 | 133 | %% Comments after double percent signs 134 | e((Inner / circle
and some odd
special characters)) --> f(,.?!+-*ز) 135 | 136 | cyr[Cyrillic]-->cyr2((Circle shape Начало)); 137 | 138 | classDef green fill:#9f6,stroke:#333,stroke-width:2px; 139 | classDef orange fill:#f96,stroke:#333,stroke-width:4px; 140 | class sq,e green 141 | class di orange 142 | {{< /mermaid >}} 143 | 144 | **Syntax** 145 | 146 | ```tpl 147 | {{}} 148 | graph LR 149 | A[Hard edge] -->|Link text| B(Round edge) 150 | B --> C{Decision} 151 | C -->|One| D[Result one] 152 | C -->|Two| E[Result two] 153 | {{}} 154 | ``` 155 | 156 | **Result** 157 | 158 | {{< mermaid >}} 159 | graph LR 160 | A[Hard edge] -->|Link text| B(Round edge) 161 | B --> C{Decision} 162 | C -->|One| D[Result one] 163 | C -->|Two| E[Result two] 164 | {{< /mermaid >}} 165 | 166 | ### Class Diagram 167 | 168 | {{< mermaid >}} 169 | classDiagram 170 | Animal <|-- Duck 171 | Animal <|-- Fish 172 | Animal <|-- Zebra 173 | Animal : +int age 174 | Animal : +String gender 175 | Animal: +isMammal() 176 | Animal: +mate() 177 | class Duck{ 178 | +String beakColor 179 | +swim() 180 | +quack() 181 | } 182 | class Fish{ 183 | -int sizeInFeet 184 | -canEat() 185 | } 186 | class Zebra{ 187 | +bool is_wild 188 | +run() 189 | } 190 | {{< /mermaid >}} 191 | 192 | 193 | ### State Diagram 194 | 195 | {{< mermaid >}} 196 | stateDiagram-v2 197 | [*] --> Active 198 | 199 | state Active { 200 | [*] --> NumLockOff 201 | NumLockOff --> NumLockOn : EvNumLockPressed 202 | NumLockOn --> NumLockOff : EvNumLockPressed 203 | -- 204 | [*] --> CapsLockOff 205 | CapsLockOff --> CapsLockOn : EvCapsLockPressed 206 | CapsLockOn --> CapsLockOff : EvCapsLockPressed 207 | -- 208 | [*] --> ScrollLockOff 209 | ScrollLockOff --> ScrollLockOn : EvScrollLockPressed 210 | ScrollLockOn --> ScrollLockOff : EvScrollLockPressed 211 | } 212 | {{< /mermaid >}} 213 | 214 | {{< mermaid >}} 215 | stateDiagram-v2 216 | State1: The state with a note 217 | note right of State1 218 | Important information! You can write 219 | notes. 220 | end note 221 | State1 --> State2 222 | note left of State2 : This is the note to the left. 223 | {{< /mermaid >}} 224 | 225 | ### Relationship Diagrams 226 | 227 | **Syntax** 228 | 229 | ```tpl 230 | {{}} 231 | erDiagram 232 | CUSTOMER ||--o{ ORDER : places 233 | ORDER ||--|{ LINE-ITEM : contains 234 | CUSTOMER }|..|{ DELIVERY-ADDRESS : uses 235 | {{}} 236 | ``` 237 | 238 | **Result** 239 | 240 | {{< mermaid >}} 241 | erDiagram 242 | CUSTOMER ||--o{ ORDER : places 243 | ORDER ||--|{ LINE-ITEM : contains 244 | CUSTOMER }|..|{ DELIVERY-ADDRESS : uses 245 | {{< /mermaid >}} 246 | 247 | ### User Journey 248 | 249 | **Syntax** 250 | 251 | ```tpl 252 | {{}} 253 | journey 254 | title My working day 255 | section Go to work 256 | Make tea: 5: Me 257 | Go upstairs: 3: Me 258 | Do work: 1: Me, Cat 259 | section Go home 260 | Go downstairs: 5: Me 261 | Sit down: 5: Me 262 | {{}} 263 | 264 | ``` 265 | 266 | **Result** 267 | 268 | {{< mermaid >}} 269 | journey 270 | title My working day 271 | section Go to work 272 | Make tea: 5: Me 273 | Go upstairs: 3: Me 274 | Do work: 1: Me, Cat 275 | section Go home 276 | Go downstairs: 5: Me 277 | Sit down: 5: Me 278 | {{< /mermaid >}} 279 | 280 | ### Gantt 281 | 282 | **Syntax** 283 | 284 | ```tpl 285 | {{}} 286 | gantt 287 | dateFormat YYYY-MM-DD 288 | title Adding GANTT diagram functionality to mermaid 289 | excludes weekends 290 | %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".) 291 | 292 | section A section 293 | Completed task :done, des1, 2014-01-06,2014-01-08 294 | Active task :active, des2, 2014-01-09, 3d 295 | Future task : des3, after des2, 5d 296 | Future task2 : des4, after des3, 5d 297 | 298 | section Critical tasks 299 | Completed task in the critical line :crit, done, 2014-01-06,24h 300 | Implement parser and jison :crit, done, after des1, 2d 301 | Create tests for parser :crit, active, 3d 302 | Future task in critical line :crit, 5d 303 | Create tests for renderer :2d 304 | Add to mermaid :1d 305 | 306 | section Documentation 307 | Describe gantt syntax :active, a1, after des1, 3d 308 | Add gantt diagram to demo page :after a1 , 20h 309 | Add another diagram to demo page :doc1, after a1 , 48h 310 | 311 | section Last section 312 | Describe gantt syntax :after doc1, 3d 313 | Add gantt diagram to demo page :20h 314 | Add another diagram to demo page :48h 315 | {{}} 316 | ``` 317 | 318 | **Result** 319 | 320 | {{< mermaid >}} 321 | gantt 322 | dateFormat YYYY-MM-DD 323 | title Adding GANTT diagram functionality to mermaid 324 | excludes weekends 325 | %% (`excludes` accepts specific dates in YYYY-MM-DD format, days of the week ("sunday") or "weekends", but not the word "weekdays".) 326 | 327 | section A section 328 | Completed task :done, des1, 2014-01-06,2014-01-08 329 | Active task :active, des2, 2014-01-09, 3d 330 | Future task : des3, after des2, 5d 331 | Future task2 : des4, after des3, 5d 332 | 333 | section Critical tasks 334 | Completed task in the critical line :crit, done, 2014-01-06,24h 335 | Implement parser and jison :crit, done, after des1, 2d 336 | Create tests for parser :crit, active, 3d 337 | Future task in critical line :crit, 5d 338 | Create tests for renderer :2d 339 | Add to mermaid :1d 340 | 341 | section Documentation 342 | Describe gantt syntax :active, a1, after des1, 3d 343 | Add gantt diagram to demo page :after a1 , 20h 344 | Add another diagram to demo page :doc1, after a1 , 48h 345 | 346 | section Last section 347 | Describe gantt syntax :after doc1, 3d 348 | Add gantt diagram to demo page :20h 349 | Add another diagram to demo page :48h 350 | {{< /mermaid >}} 351 | 352 | ### Pie Chart 353 | 354 | ```tpl 355 | {{}} 356 | pie 357 | title Key elements in Product X 358 | "Calcium" : 42.96 359 | "Potassium" : 50.05 360 | "Magnesium" : 10.01 361 | "Iron" : 5 362 | {{}} 363 | 364 | ``` 365 | 366 | **Result** 367 | 368 | {{< mermaid >}} 369 | pie 370 | title Key elements in Product X 371 | "Calcium" : 42.96 372 | "Potassium" : 50.05 373 | "Magnesium" : 10.01 374 | "Iron" : 5 375 | {{< /mermaid >}} 376 | -------------------------------------------------------------------------------- /src/content/docs/compose/organize-content.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Content organization" 3 | weight = 4 4 | +++ 5 | 6 | This theme is primarily meant for documentation. 7 | 8 | #### Documentation 9 | 10 | All your documentation content should be authored within the `docs` directory. 11 | 12 | Unlike other regular pages, the documentation pages will have a left sidebar. This sidebar will list links to all the pages in the documentation pages. Beneath each link, there will be a collapsible list of __table of contents'__ links. These nested lists will unfold automatically on the active/current page. 13 | 14 | #### Home Page 15 | 16 | At the root level there's an `_index.md` page which is the homepage. Feel free to edit it as you like. 17 | 18 | #### Other pages 19 | 20 | You can also add as many regular pages as you like e.g `about.md`, `contact.md`... 21 | 22 | Take advantage of [shortcodes](./shortcodes) to customize the layouts of these pages and any other. 23 | 24 | #### Does this theme support blogging function? 25 | 26 | Currently, no. 27 | -------------------------------------------------------------------------------- /src/content/docs/compose/search.md: -------------------------------------------------------------------------------- 1 | +++ 2 | description = "" 3 | title = "Search Function" 4 | weight = 7 5 | +++ 6 | 7 | Firstly, ensure you have these lines inside your config.toml file 8 | 9 | ```toml 10 | [outputs] 11 | home = ["HTML", "RSS","JSON"] 12 | ``` 13 | 14 | Compose implements `fuse.js` to enable search functionality. At the time of this writing, search on these theme takes either of this forms: 15 | 16 | ### 1. Passive search 17 | 18 | This occurs only when the user loads the search page i.e `/search/`. They can directly navigate to that url. Alternatively, the user can type you search query on the search field and click enter. They will be redirected to the search page which will contain matched results if any. 19 | 20 | ### 2. Live search 21 | 22 | This behaviour will be obvious as the user types a search query on the search field. All `valid search queries`, will yield a list of `quick links` or a simple `no matches found`. Else, the user will be prompted to continue typing. 23 | 24 | > Please note that the results under quick links will be a truncated list of the most relevant results. Only a maximum of 8 items will be returned. This number is pragmatic at best if not arbitrary. On the search page, the number is set to 12. 25 | 26 | Note that live search on the search page will behave differently than on the other pages. Nonetheles, the pages apply the same live search principle. 27 | 28 | > Hitting enter while typing on the search page will be moot as that page’s content will live update as you type in the search word / phrase. 29 | 30 | ### Customize search feedback labels 31 | 32 | Use the `i18n` files to do so. 33 | 34 | 42 | 43 | ### What is a valid search query 44 | 45 | A valid search query must be long enough. If the search query can be cast as a float, then it only need contain one or more characters. 46 | 47 | Else the search query must be at least 2 characters long. 48 | 49 | -------------------------------------------------------------------------------- /src/content/docs/compose/shortcodes-example.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Shortcodes Applied 3 | weight: 7 4 | description: 'This is how the shortcodes would look like in action 5 | 6 | ' 7 | draft: true 8 | 9 | --- 10 | ### Blocks, columns & buttons 11 | 12 | ```sh 13 | {{}} 14 | {{}} 15 | #### Coumn 1 16 | 17 | Lorem ipsum dolor sit amet, 18 | ... 19 | 20 | {{}} 21 | 22 | {{}} 23 | {{}} 24 | 25 | 26 | ``` 27 | 28 | {{< block "grid-2" >}} 29 | {{< column >}} 30 | #### Coumn 1 31 | 32 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et 33 | 34 | dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 35 | 36 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 37 | 38 | > Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 39 | 40 | {{< button "https://github.com/onweru/compose" "Download Theme" >}} 41 | 42 | {{< /column >}} 43 | {{< column >}} 44 | #### Coumn 2 45 | 46 | 47 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et 48 | 49 | > dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 50 | 51 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 52 | 53 | Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 54 | 55 | {{< button "docs/" "Read the Docs" >}} 56 | 57 | {{< /column >}} 58 | {{< /block >}} -------------------------------------------------------------------------------- /src/content/docs/compose/shortcodes.md: -------------------------------------------------------------------------------- 1 | +++ 2 | description = "Use hugo shortcodes to quickly compose your documentation pages." 3 | title = "Shortcodes" 4 | weight = 5 5 | 6 | +++ 7 | Instead of writing all your site pages from scratch, Hugo lets you define and use [shortcodes](https://gohugo.io/content-management/shortcodes/). 8 | 9 | Why shortcodes? While markdown is sufficient to produce simple pages, it's insufficient where complex page structures are needed. Thusly, whenever we need special styling, shortcodes compliment the shortcomings of markdown. 10 | 11 | This way, you can side step complex html and css boilerplate in your content files. 12 | 13 | Sometimes, the shortcode will wrap content, sometimes it won't. When content is wrapped, a closing shortcode tag is needed. Please see the link I provided above and the markdown files for examples. You'll get the gist pretty quickly. 14 | 15 | I've setup the following shortcodes: 16 | 17 | ### Block 18 | 19 | Takes positional modifiers 20 | 21 | **Example** 22 | 23 | ```markdown 24 | ... 25 | {{}} 26 | 27 | {{}} 28 | ... 29 | ``` 30 | 31 | ### Column 32 | 33 | It takes positional parameters 34 | 35 | **Example** 36 | 37 | ```markdown 38 | {{}} 39 | 40 | {{}} 41 | ``` 42 | 43 | ### Youtube Video 44 | 45 | This allows you to embed a youtube video in you content. You would achieve that using a positional parameter (needs no name )parameter, like so: 46 | 47 | **Syntax** 48 | 49 | ```markdown 50 | {{}} 51 | 52 | ``` 53 | 54 | **Result** 55 | 56 | {{< youtube "25QyCxVkXwQ" >}} 57 | 58 | **OR** 59 | 60 | **Syntax** 61 | 62 | ```markdown 63 | 64 | {{}} 65 | ``` 66 | 67 | **Result** 68 | 69 | {{< youtube "https://www.youtube.com/watch?v=MmG2ah5Df4g" >}} 70 | 71 | ### Button 72 | 73 | This adds a styled link (styled like a button). It takes two no-optional parameters: 74 | 75 | | PARAMETER | PURPOSE | OPTIONAL | 76 | | :--- | :--- | :--- | 77 | | label | button text | no | 78 | | url | button link | no | 79 | | modifier | styling classes | yes | 80 | 81 | **Example** 82 | 83 | ```markdown 84 | {{}} 85 | ``` 86 | 87 | ### Picture 88 | 89 | You want to use darkmode images when darkmode is enabled on a device and a regular image on lightmode? It takes 3 positional parameter 90 | 91 | Store these images in the `static/images` directory. 92 | 93 | **Syntax** 94 | 95 | ```markdown 96 | ... 97 | {{}} 98 | ... 99 | ``` 100 | 101 | **Result** 102 | 103 | {{< picture "compose.svg" "compose-light.svg" "Compose Logo" >}} 104 | 105 | ### Gallery 106 | 107 | Include inline galleries within your articles. These galleries can contain `N` number of images. It takes 2 positional parameters. 108 | 109 | The 1st parameter is required. It's a _comma-separated list_ (`,`) of your images' paths. 110 | 111 | The 2nd parameter is optional. It's a _double-collon-separated list_ (`::`) of your images' alt/description/captions text. It's always a good SEO practice to include alt text for your images. 112 | 113 | **Syntax** 114 | 115 | ```markdown 116 | ... 117 | {{}} 118 | ... 119 | ``` 120 | 121 | {{< tip >}} 122 | 123 | > For legibility, you may include a space after the delimiters `,` & `::` 124 | > {{< /tip >}} 125 | 126 | **Result** 127 | 128 | {{< gallery "images/painting.jpg,images/scribble.jpg,images/painting.jpg" "Gallery Image 1::gallery image 2::gallery image 1 copy" >}} 129 | 130 | ### Tip 131 | 132 | Use this short if you want to publish informational tooltips that look like: 133 | 134 | This tooltips may take either of the following forms: 135 | 136 | **Syntax** 137 | 138 | ```markdown 139 | {{}} 140 | Something of __interest__ you want to highlight 141 | {{}} 142 | ``` 143 | 144 | **Result** 145 | 146 | {{< tip >}} 147 | Something of **interest** you want to highlight 148 | {{< /tip >}} 149 | 150 | **OR** 151 | 152 | **Syntax** 153 | 154 | ```markdown 155 | {{}} 156 | Something of __interest__ the user should be careful about 157 | {{}} 158 | ``` 159 | 160 | **Result** 161 | 162 | {{< tip "warning" >}} 163 | Something of **interest** the user should be careful about 164 | {{< /tip >}} 165 | -------------------------------------------------------------------------------- /src/content/docs/compose/use-forestry-cms.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Use forestry CMS" 3 | description = "" 4 | weight = 3 5 | +++ 6 | 7 | Do you prefer managing your site using a CMS? Or would you like to make it easier for someone (a non-techie, perhaps) in your team to make edits easily? If interested, follow along. Else, skip to the [next section](../overview/) 8 | 9 | Let's sync your site with forestry CMS. 10 | 11 | ## Prerequisites !! 12 | 13 | Obviously you ought to have __a github account__. This is where your website source will live. Basically, forestry will read from github and write (commmit) to your github repo. 14 | 15 | {{< tip "warning" >}} 16 | Gitlab or bitbucket will work too. Just check their [implementation here](https://forestry.io/docs/git-sync/gitlab/). Happy fishing. 17 | {{< /tip >}} 18 | 19 | ### Requirement 1 : A Forestry account 20 | 21 | Jump over to [forestry](https://bit.ly/forestry-account) and sign up for an account. Consider signing up using your github account. That way, you don't have to deal with passwords. 22 | 23 | ### Requirement 2: A Netlify account _(optional)_ 24 | 25 | If you intend to host with something other than Netlify _e.g github pages_, please scroll on. Hosting with Netlify is a lot of fun though; I highly recommend it. 26 | 27 | ### Step 1 : Fork or Clone Compse theme 28 | 29 | First we will fork [this theme's](https://github.com/onweru/compose) template. 30 | 31 | ### Step 2 : Add your repository in Forestry 32 | 33 | {{< tip >}} 34 | The exampleSite already comes with prefilled default forestry settings. If you set up your site using [option 2](../getting-started/#option-2-recommended), look for a file `.forestry/settings.yml` and remove all `exampleSite/` strings from it. 35 | {{< /tip >}} 36 | 37 | Go to your [forestry](https://bit.ly/forestry-account) account and click on `import your site now`. 38 | 39 | 1. Choose `hugo` 40 | 2. `github` or `gitlab`. wherever your repo is at. 41 | 3. Select your repo 42 | -------------------------------------------------------------------------------- /src/content/posts/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/content/posts/.gitkeep -------------------------------------------------------------------------------- /src/content/projects.csv: -------------------------------------------------------------------------------- 1 | project 6,alpha,weru 2 | project 4,beta,dan 3 | project 4,candidate,dahl 4 | project y,abandoned,weru 5 | project 1,alpha,weru 6 | project 4,beta,ryan 7 | project 4,candidate,dan 8 | project y,abandoned,weru 9 | project 11,alpha,dahl 10 | project 4,beta,dan 11 | project 4,candidate,dan 12 | project A,abandoned,weru 13 | -------------------------------------------------------------------------------- /src/content/search.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Search" 3 | searchPage = true 4 | type = "search" 5 | +++ -------------------------------------------------------------------------------- /src/content/themes.csv: -------------------------------------------------------------------------------- 1 | clarity,V.1,chipzoller 2 | compose,V.1,weru 3 | swift,V.2,weru 4 | newsroom,V.1,weru 5 | -------------------------------------------------------------------------------- /src/go.mod: -------------------------------------------------------------------------------- 1 | module compose-exampleSite 2 | 3 | go 1.15 4 | 5 | require github.com/onweru/compose v0.0.0-20210506215729-3f2ccb9b9acb // indirect 6 | -------------------------------------------------------------------------------- /src/go.sum: -------------------------------------------------------------------------------- 1 | github.com/onweru/compose v0.0.0-20201006150935-3c1a2b1a5808 h1:6eVMm+cuEWeCodoHVzfjPc1+BOJMvm7boxrsXSMcbBg= 2 | github.com/onweru/compose v0.0.0-20201006150935-3c1a2b1a5808/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 3 | github.com/onweru/compose v0.0.0-20201008112336-b33efbb800d7 h1:tAyTSeyByfv2gPaqUrYi0kk0Z9jLTkAz24iSqLsotaA= 4 | github.com/onweru/compose v0.0.0-20201008112336-b33efbb800d7/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 5 | github.com/onweru/compose v0.0.0-20201008113335-f8b4b41a58e2 h1:ua3fH27PUIwBdNecKga2AlR7lb8T02G6bFpG0zRVQWo= 6 | github.com/onweru/compose v0.0.0-20201008113335-f8b4b41a58e2/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 7 | github.com/onweru/compose v0.0.0-20201008113650-083ed55849e2 h1:CW7Im/HLzVyhSfNekGgHZerjbZxcp+bruuCf6eIvXJs= 8 | github.com/onweru/compose v0.0.0-20201008113650-083ed55849e2/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 9 | github.com/onweru/compose v0.0.0-20201008121227-97c178d80698 h1:STvi40vd1rZCTLzB5KaJKuxdm1gefZ+MbMXgy2XA8uQ= 10 | github.com/onweru/compose v0.0.0-20201008121227-97c178d80698/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 11 | github.com/onweru/compose v0.0.0-20201008121826-e8247b9bc410 h1:QK0Xxg0z6Oq3ZJKpK+43rbSpe+q/Z5dzBU2N+3UJEB8= 12 | github.com/onweru/compose v0.0.0-20201008121826-e8247b9bc410/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 13 | github.com/onweru/compose v0.0.0-20201008122408-49f4d42666f2 h1:ikuDTxJWps7D5f/ZvujVC9e3+VpH2sXgwD0X+GSyAXg= 14 | github.com/onweru/compose v0.0.0-20201008122408-49f4d42666f2/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 15 | github.com/onweru/compose v0.0.0-20201010204225-28567dd51bf4 h1:tn4ewCzKNHFBIzZiwk3+CcrW1Ljxt4m+i30zlmRUtIg= 16 | github.com/onweru/compose v0.0.0-20201010204225-28567dd51bf4/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 17 | github.com/onweru/compose v0.0.0-20201010205422-fddda669e1c2 h1:XmRzBg/SSGy2QqA1efr2nwWcU0KljTAfpeYjjKyDJMo= 18 | github.com/onweru/compose v0.0.0-20201010205422-fddda669e1c2/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 19 | github.com/onweru/compose v0.0.0-20201021163953-71169c94bc96 h1:UudmsVqRvqwhcwYt7JFEIoB6Hu8nRI2seZep1XfQJnM= 20 | github.com/onweru/compose v0.0.0-20201021163953-71169c94bc96/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 21 | github.com/onweru/compose v0.0.0-20201021164643-118b7b13ea6c h1:7wdWOVbI+KgTT96tVEjWH4WznWjxOClo24h+ZWQZo8s= 22 | github.com/onweru/compose v0.0.0-20201021164643-118b7b13ea6c/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 23 | github.com/onweru/compose v0.0.0-20201021170218-e838974b8f5f h1:2Apua/rWIFkSpKDXIIeOWhD80luwbtbVKTD9dQ5cijk= 24 | github.com/onweru/compose v0.0.0-20201021170218-e838974b8f5f/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 25 | github.com/onweru/compose v0.0.0-20201021170551-a59df0abf7f4 h1:14mtXdW9J1v4RQRgxdsl7Enba43dvnXac0e8pQ9LlUE= 26 | github.com/onweru/compose v0.0.0-20201021170551-a59df0abf7f4/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 27 | github.com/onweru/compose v0.0.0-20201021170635-a845fa556927 h1:mYMgewPZGN23KJvC2xEr81DMUSUTZXzPesQZkrq7Kkg= 28 | github.com/onweru/compose v0.0.0-20201021170635-a845fa556927/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 29 | github.com/onweru/compose v0.0.0-20201021174004-de1a2ca77ca3 h1:wYTFpkXTxIbz/JjM4q6kvQ31x1YtiP7YCXQbCfZGC1w= 30 | github.com/onweru/compose v0.0.0-20201021174004-de1a2ca77ca3/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 31 | github.com/onweru/compose v0.0.0-20201021174612-615fff9bf667 h1:Koi+u3FQThlSXUtB9dgt4rTvR62AJsRlpzkpwJuI5I8= 32 | github.com/onweru/compose v0.0.0-20201021174612-615fff9bf667/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 33 | github.com/onweru/compose v0.0.0-20201021175035-5e79b0ec418a h1:QQjKgcGuLZinA8JkzGArc3NoUoWa8CA5EwAc/rUF9mo= 34 | github.com/onweru/compose v0.0.0-20201021175035-5e79b0ec418a/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 35 | github.com/onweru/compose v0.0.0-20201021175222-4f400c8f8c2b h1:UbmT8hNWHL51jYVFojvoEUdrwI0k84yjsmjMpsmk8Z8= 36 | github.com/onweru/compose v0.0.0-20201021175222-4f400c8f8c2b/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 37 | github.com/onweru/compose v0.0.0-20201021175442-c7c21181a551 h1:khRcbAohqeaKiG4y5/hlzqM0fvXCSpCGnu3XARKv/Ns= 38 | github.com/onweru/compose v0.0.0-20201021175442-c7c21181a551/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 39 | github.com/onweru/compose v0.0.0-20201021180809-d1d3e930323f h1:XlOqXi6xOSYn9w6sWMnA06DwqbZD/AW88+32TgVA+1M= 40 | github.com/onweru/compose v0.0.0-20201021180809-d1d3e930323f/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 41 | github.com/onweru/compose v0.0.0-20201021184128-3450d45ed32b h1:Zju5PRRsMf2O4KdJzQMRYePI/bg/VOe8cIjl0//CqXs= 42 | github.com/onweru/compose v0.0.0-20201021184128-3450d45ed32b/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 43 | github.com/onweru/compose v0.0.0-20201021184405-d300d77457a3 h1:80tDm0wfah1LoStXeTZbFArFTWZgg9ajmP2egMT6+3U= 44 | github.com/onweru/compose v0.0.0-20201021184405-d300d77457a3/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 45 | github.com/onweru/compose v0.0.0-20201021185628-350f3ec7202a h1:Rj5eRcN8ID7wTWCliy4THUF4ioTbG+QoUIPLTefTaD0= 46 | github.com/onweru/compose v0.0.0-20201021185628-350f3ec7202a/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 47 | github.com/onweru/compose v0.0.0-20201021190329-2d2b0989cf82 h1:7gsZF4R9c9a1CZqKGeVtZGV9r5GldENWe9ahtacDHY8= 48 | github.com/onweru/compose v0.0.0-20201021190329-2d2b0989cf82/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 49 | github.com/onweru/compose v0.0.0-20201021190919-3b1f666a78a4 h1:WE9MMD/LLRQ1/I/69/gBYaZGvzi9H9310fdsXpgjVCY= 50 | github.com/onweru/compose v0.0.0-20201021190919-3b1f666a78a4/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 51 | github.com/onweru/compose v0.0.0-20201021192042-fe5cb067b2b6 h1:ntJT+RYeG8KWS//3N9pyVmeiwS+ptKobmF8Bsz7zFIU= 52 | github.com/onweru/compose v0.0.0-20201021192042-fe5cb067b2b6/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 53 | github.com/onweru/compose v0.0.0-20201021192330-521ff6fab570 h1:JJap8i6nvOVwgsZ8UlwELWsnBd0G0LvQVAup33Z90vA= 54 | github.com/onweru/compose v0.0.0-20201021192330-521ff6fab570/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 55 | github.com/onweru/compose v0.0.0-20201021192750-dd14b1b097ea h1:Yu4YIQPhd7J7zw29TVO3df3rJhGaXchpkHlEqUs3XGc= 56 | github.com/onweru/compose v0.0.0-20201021192750-dd14b1b097ea/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 57 | github.com/onweru/compose v0.0.0-20201021192900-ce1ce5689a67 h1:s00e1YRzRP3XKVhKZtSQ+AUd0TazN95CDSeyTG8Ouvw= 58 | github.com/onweru/compose v0.0.0-20201021192900-ce1ce5689a67/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 59 | github.com/onweru/compose v0.0.0-20201021193621-4f96ac1770ee h1:zECIIhinVWjQCAiOHqcafqZ48x8xgbshxEoNEwOqsQI= 60 | github.com/onweru/compose v0.0.0-20201021193621-4f96ac1770ee/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 61 | github.com/onweru/compose v0.0.0-20201021194001-a164d9aee922 h1:+88k9pKVVWjIGOOnHYW/zV5GOCxK6KjoNjH57gv3Jdo= 62 | github.com/onweru/compose v0.0.0-20201021194001-a164d9aee922/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 63 | github.com/onweru/compose v0.0.0-20201021194540-0f02f8b33641 h1:UzS+AVt8+OxOA3ISizsX39/c8ZGUU3gcsLcZfnR4JUU= 64 | github.com/onweru/compose v0.0.0-20201021194540-0f02f8b33641/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 65 | github.com/onweru/compose v0.0.0-20201114044806-342ee8535ae0 h1:HJ10u43C73zqNH8JjgJQS+6Zdg0Juta0Lo3e2eRBucY= 66 | github.com/onweru/compose v0.0.0-20201114044806-342ee8535ae0/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 67 | github.com/onweru/compose v0.0.0-20201127133714-261bcbad9b00 h1:3BuVhKh+gUq9fXurWkK4rmDRb3ldjb+Maz2GizMtCTo= 68 | github.com/onweru/compose v0.0.0-20201127133714-261bcbad9b00/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 69 | github.com/onweru/compose v0.0.0-20201128092456-b8ba681c96c3 h1:AJTiUrOlC9AyXE7+Xhbl4nhbKtoPA4DBGdOtzEEGFoI= 70 | github.com/onweru/compose v0.0.0-20201128092456-b8ba681c96c3/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 71 | github.com/onweru/compose v0.0.0-20201128124950-c8a10c8b9880 h1:+xMedjRVSuRwEZ23vtWy2ksMI0+0Wvrqq6CTNPEpuuQ= 72 | github.com/onweru/compose v0.0.0-20201128124950-c8a10c8b9880/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 73 | github.com/onweru/compose v0.0.0-20201129132514-211b9ea9e0a7 h1:uAi0vLn5Mcu6HdnBNNUfrOyRh73kQKjhLy5KUMGtf6c= 74 | github.com/onweru/compose v0.0.0-20201129132514-211b9ea9e0a7/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 75 | github.com/onweru/compose v0.0.0-20201130180534-fa4914e7415f h1:hL5XAMrWe+tus29HXJr8JTMP7L6SuxUgMH0SlDN4hSM= 76 | github.com/onweru/compose v0.0.0-20201130180534-fa4914e7415f/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 77 | github.com/onweru/compose v0.0.0-20201203162259-4492ef546c57 h1:R9xda/9fOt1eQdOMNS1mRwot2R40XJC+y4HaYT9cjR4= 78 | github.com/onweru/compose v0.0.0-20201203162259-4492ef546c57/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 79 | github.com/onweru/compose v0.0.0-20201206171046-1626fddc1ec8 h1:XkVCTal507IBN8zsqfqBaYSzGNj9XQq2xUIfp3E2DN0= 80 | github.com/onweru/compose v0.0.0-20201206171046-1626fddc1ec8/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 81 | github.com/onweru/compose v0.0.0-20201221201530-bce6744be91e h1:Plv27XxjrCdITkS75XCdzGVoYQP+7emsA+1NV173zBU= 82 | github.com/onweru/compose v0.0.0-20201221201530-bce6744be91e/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 83 | github.com/onweru/compose v0.0.0-20201227170239-5a520966eaaf h1:GtoRcMu5TiwjoLeozTCH6hGT+XBmsXFsztRhRhGOPhM= 84 | github.com/onweru/compose v0.0.0-20201227170239-5a520966eaaf/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 85 | github.com/onweru/compose v0.0.0-20201227171332-78e63714b371 h1:IiI3bvmBslOI59MzdyiJPzeJUpm+trce+ITAZyEkp0c= 86 | github.com/onweru/compose v0.0.0-20201227171332-78e63714b371/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 87 | github.com/onweru/compose v0.0.0-20201228135936-58a6ebcf6cda h1:MjOMGBNpzUbZMoJObKvE18HoMe/IncHFDlz5rszL/eY= 88 | github.com/onweru/compose v0.0.0-20201228135936-58a6ebcf6cda/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 89 | github.com/onweru/compose v0.0.0-20201228140035-ebd4adbb5ea3 h1:7mgrsmuQnAIm5WoY2eKkUmaxTVcOejUamteEAwxOy1U= 90 | github.com/onweru/compose v0.0.0-20201228140035-ebd4adbb5ea3/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 91 | github.com/onweru/compose v0.0.0-20201228144629-75926193c03d h1:4RgxKxlF0IfoPvisFlAEt8Z1Q/yJxfn+RiXKOFpeKKM= 92 | github.com/onweru/compose v0.0.0-20201228144629-75926193c03d/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 93 | github.com/onweru/compose v0.0.0-20210124161915-a5713514f442 h1:6PEXOQo5ppTRqyGvXa64xmVI9Q1Rz27pmZ2behUrt4A= 94 | github.com/onweru/compose v0.0.0-20210124161915-a5713514f442/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 95 | github.com/onweru/compose v0.0.0-20210126134026-0b25b7525669 h1:Os2y3f4ULz0hTnQvduhqs5UzxXl4T+akSnhXDtpvhh8= 96 | github.com/onweru/compose v0.0.0-20210126134026-0b25b7525669/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 97 | github.com/onweru/compose v0.0.0-20210127153304-a03f248319a9 h1:5P3NnL57tMAHlsBKRcO57dOh89gjs5S5gPnch/rl378= 98 | github.com/onweru/compose v0.0.0-20210127153304-a03f248319a9/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 99 | github.com/onweru/compose v0.0.0-20210127153613-7065c3e6448a h1:4bUjg5uQlCiwzjMYaid0DRq4f1CKOUJUzuApt0PJ12o= 100 | github.com/onweru/compose v0.0.0-20210127153613-7065c3e6448a/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 101 | github.com/onweru/compose v0.0.0-20210130124747-043bd49191d5 h1:9RzdW/Iwmoe8WlhReFm32ScNEOm9ayd9r6F75eWoep0= 102 | github.com/onweru/compose v0.0.0-20210130124747-043bd49191d5/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 103 | github.com/onweru/compose v0.0.0-20210131005005-e750e05b63fc h1:u/4ZM80MMkK+/2BkrTwZh0xSuLzhY4T/nrho3GYjjes= 104 | github.com/onweru/compose v0.0.0-20210131005005-e750e05b63fc/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 105 | github.com/onweru/compose v0.0.0-20210131010041-970704432513 h1:mz5GMLeHArvUS4lr2JCgjOFz0Q81a8y1hjY3MMbcdhM= 106 | github.com/onweru/compose v0.0.0-20210131010041-970704432513/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 107 | github.com/onweru/compose v0.0.0-20210131010156-3d5c30329d77 h1:iBY7ehzCDLpy3dfqrYlF1cxwFiu/jln6HNhy8VzUal8= 108 | github.com/onweru/compose v0.0.0-20210131010156-3d5c30329d77/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 109 | github.com/onweru/compose v0.0.0-20210131033911-e106802b3505 h1:Ovu5ydj4a3lKlU0caXjJLOSSKFjocd1PVvQGz2z3nXg= 110 | github.com/onweru/compose v0.0.0-20210131033911-e106802b3505/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 111 | github.com/onweru/compose v0.0.0-20210131042543-4aca05ef578d h1:9969I4oCvQNlkjX2paKk+nAxrkM8QX01wl7UROgTY+Q= 112 | github.com/onweru/compose v0.0.0-20210131042543-4aca05ef578d/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 113 | github.com/onweru/compose v0.0.0-20210131043449-7335477f0054 h1:4smUEiMOxdZCoESzp+O16CguknloyfD12mWhuDci8Y0= 114 | github.com/onweru/compose v0.0.0-20210131043449-7335477f0054/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 115 | github.com/onweru/compose v0.0.0-20210131052009-18d57dd16bb0 h1:XC6lxuOoDiQhIXHPXfKRosyNNBTG4/wlOc6QSj7RAno= 116 | github.com/onweru/compose v0.0.0-20210131052009-18d57dd16bb0/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 117 | github.com/onweru/compose v0.0.0-20210204153750-9331e4f50b68 h1:/mt7RWz6xOhtymUz7sWooh+RRxT4645YFICEywVeDpQ= 118 | github.com/onweru/compose v0.0.0-20210204153750-9331e4f50b68/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 119 | github.com/onweru/compose v0.0.0-20210204160442-ba75a7400ed6 h1:p4QinP7ojEvKOexchEr5HsuYeiBcYmVCn6a//gAddK8= 120 | github.com/onweru/compose v0.0.0-20210204160442-ba75a7400ed6/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 121 | github.com/onweru/compose v0.0.0-20210204161020-3b114e43c534 h1:NtL3eJHupwIOBm92Z7XnJ9aaX2dLZ8ykzqkdYNOHn8Y= 122 | github.com/onweru/compose v0.0.0-20210204161020-3b114e43c534/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 123 | github.com/onweru/compose v0.0.0-20210204161120-fc5d5e82ecf9 h1:VrbsD/faLF8YL3bvKudETXsGwyoXYBT1FatdfyXVplY= 124 | github.com/onweru/compose v0.0.0-20210204161120-fc5d5e82ecf9/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 125 | github.com/onweru/compose v0.0.0-20210204161300-a2d306fc5f5d h1:xPy1dEMcJPXyxWlAI4iwBD4BqJ/qBCDApciBpgqQJtc= 126 | github.com/onweru/compose v0.0.0-20210204161300-a2d306fc5f5d/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 127 | github.com/onweru/compose v0.0.0-20210209175519-8ce9375a3199 h1:AJDB9LlnRWD0Rx0nJeSpA7348igKzfAzOtXz5Cos80M= 128 | github.com/onweru/compose v0.0.0-20210209175519-8ce9375a3199/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 129 | github.com/onweru/compose v0.0.0-20210210164857-d73ed631861a h1:9kP8FJIwkC1NYkZ3hpU5i4wId6KAk0Ovc1JcyDl6vEs= 130 | github.com/onweru/compose v0.0.0-20210210164857-d73ed631861a/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 131 | github.com/onweru/compose v0.0.0-20210210171312-ec3ff11f4002 h1:IZFhImuiL8EVFA/Caas9NDBPVFkNQc67DrV1LJi45Z4= 132 | github.com/onweru/compose v0.0.0-20210210171312-ec3ff11f4002/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 133 | github.com/onweru/compose v0.0.0-20210210194600-302c901a2e44 h1:h6KdZQp1kpVe8YMWjMsWWu9iVAbTU3CoXRU3lttxCBY= 134 | github.com/onweru/compose v0.0.0-20210210194600-302c901a2e44/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 135 | github.com/onweru/compose v0.0.0-20210213203223-6971b3db7684 h1:AUntJnjwqjPFUr/liUeKcbbe8dA7ANTcEozUIvuim+g= 136 | github.com/onweru/compose v0.0.0-20210213203223-6971b3db7684/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 137 | github.com/onweru/compose v0.0.0-20210213203306-aec7d9b07d12 h1:ujlJ+9ZENudXTzQqhYp0Lkf8cufPayKNAsEfBAmK6xY= 138 | github.com/onweru/compose v0.0.0-20210213203306-aec7d9b07d12/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 139 | github.com/onweru/compose v0.0.0-20210213204507-6e0a35f8a308 h1:QTlPRqYRBqNk7TdVr83PVqx6usP99bjeDVreoBXrMwk= 140 | github.com/onweru/compose v0.0.0-20210213204507-6e0a35f8a308/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 141 | github.com/onweru/compose v0.0.0-20210213204617-66b366163e65 h1:0Q5d1PfZmUrqI8Lqgi3D3fW+kMjvTvALtRB65LB6djI= 142 | github.com/onweru/compose v0.0.0-20210213204617-66b366163e65/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 143 | github.com/onweru/compose v0.0.0-20210222222437-6c4f1c807724 h1:xb77Or8etaZuHUGOojRkHfM2OQeCU9EH1eIHAQ02LQ0= 144 | github.com/onweru/compose v0.0.0-20210222222437-6c4f1c807724/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 145 | github.com/onweru/compose v0.0.0-20210224223901-8dbb193ddbe3 h1:go0CBCDJXSfRd/pCUpmNAsj8KdWh1rUBbLxh6gFMpY8= 146 | github.com/onweru/compose v0.0.0-20210224223901-8dbb193ddbe3/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 147 | github.com/onweru/compose v0.0.0-20210226153626-1b67f9ccc7f8 h1:g7NXBSkGk/WR160Nxqc2YdtDLJiGdhIqlGhPlOtvi2c= 148 | github.com/onweru/compose v0.0.0-20210226153626-1b67f9ccc7f8/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 149 | github.com/onweru/compose v0.0.0-20210301150901-5c5213307e62 h1:pZ3rYbYQjY/YArAvbdiHTgp+hzRDinMczy0tCwuAN9Y= 150 | github.com/onweru/compose v0.0.0-20210301150901-5c5213307e62/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 151 | github.com/onweru/compose v0.0.0-20210309133307-8a3113c43d31 h1:8xkpWOA0lGo296VNwYzoc8pxh593/T2qRDw4+e+GkuE= 152 | github.com/onweru/compose v0.0.0-20210309133307-8a3113c43d31/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 153 | github.com/onweru/compose v0.0.0-20210312153401-7f1c7da6d155 h1:EDrVXssmI+WiQ1KgYizL8qTR43e+vRvtrlwOSs1xRkU= 154 | github.com/onweru/compose v0.0.0-20210312153401-7f1c7da6d155/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 155 | github.com/onweru/compose v0.0.0-20210330103531-e7e0ba391d6a h1:rpCp0Sg4jjcM1EwdFq3mYoMXz/X3ejm1YXPR8ONetUw= 156 | github.com/onweru/compose v0.0.0-20210330103531-e7e0ba391d6a/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 157 | github.com/onweru/compose v0.0.0-20210406232155-ff1e43943280 h1:CFctzrbQxiwVhPZUjAiwIXYg3RfdeF8koX10fJBoH/Y= 158 | github.com/onweru/compose v0.0.0-20210406232155-ff1e43943280/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 159 | github.com/onweru/compose v0.0.0-20210406234030-8e6061ff2c8e h1:9QnqTOic8SuPUjckFyjf4fmI75KH5bx0jaYNLera9Hs= 160 | github.com/onweru/compose v0.0.0-20210406234030-8e6061ff2c8e/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 161 | github.com/onweru/compose v0.0.0-20210414230317-e7b3ea9ebfe4 h1:NQrpHqTpGZcUSanooOC2b522IJZOw+enL8iRDugrMcQ= 162 | github.com/onweru/compose v0.0.0-20210414230317-e7b3ea9ebfe4/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 163 | github.com/onweru/compose v0.0.0-20210415143632-5e4de2adde5f h1:iSKlLvku3SNGOrJEffSjSwkYq+edM12C2nmUXZFWF0E= 164 | github.com/onweru/compose v0.0.0-20210415143632-5e4de2adde5f/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 165 | github.com/onweru/compose v0.0.0-20210415153638-a7ebb4827998 h1:ihz6pmmMBL7qjLcDENNS+iz1YL1Em5xWeoqLxQxnPYQ= 166 | github.com/onweru/compose v0.0.0-20210415153638-a7ebb4827998/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 167 | github.com/onweru/compose v0.0.0-20210430153828-b0b7c86cc0d9 h1:sAZZceW6Uq/2ZrKOUa4hFLP0EQvnFDlvnwCFTvmSvIg= 168 | github.com/onweru/compose v0.0.0-20210430153828-b0b7c86cc0d9/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 169 | github.com/onweru/compose v0.0.0-20210502152903-185aafcedecd h1:V7uk7wLlMZExjXZ7NgKETWK8HY6rAy5gUAmKejrdOYw= 170 | github.com/onweru/compose v0.0.0-20210502152903-185aafcedecd/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 171 | github.com/onweru/compose v0.0.0-20210506210640-600d54dc04fe h1:Jl+mf1hdTD0aOBmQTHqxd1FOWi64HpVUNMOByh+lrI4= 172 | github.com/onweru/compose v0.0.0-20210506210640-600d54dc04fe/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 173 | github.com/onweru/compose v0.0.0-20210506215729-3f2ccb9b9acb h1:SH3djUTpikGJyj4ydrEaBc6AbJW0Ajpu/GTfA/yjE08= 174 | github.com/onweru/compose v0.0.0-20210506215729-3f2ccb9b9acb/go.mod h1:tf1kQIBUcwJ/3mRFU5eiMrMvsDScVTK2IEFsZE3hZOc= 175 | -------------------------------------------------------------------------------- /src/netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | publish = "public" 3 | #command = "hugo --gc --minify" 4 | command = "hugo --gc --minify --baseURL https://docs.neuralvibes.com/" 5 | 6 | [context.production.environment] 7 | HUGO_VERSION = "0.88.1" 8 | HUGO_ENV = "production" 9 | HUGO_ENABLEGITINFO = "true" 10 | 11 | [context.split1] 12 | command = "hugo --gc --minify --enableGitInfo" 13 | 14 | [context.split1.environment] 15 | HUGO_VERSION = "0.88.1" 16 | HUGO_ENV = "production" 17 | 18 | [context.deploy-preview] 19 | command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL" 20 | 21 | [context.deploy-preview.environment] 22 | HUGO_VERSION = "0.88.1" 23 | 24 | [context.branch-deploy] 25 | command = "hugo --gc --minify -b $DEPLOY_PRIME_URL" 26 | 27 | [context.branch-deploy.environment] 28 | HUGO_VERSION = "0.88.1" 29 | 30 | [context.next.environment] 31 | HUGO_ENABLEGITINFO = "true" 32 | 33 | -------------------------------------------------------------------------------- /src/resources/_gen/assets/sass/sass/main.sass_ca26857cefa9076967ab300682271513.content: -------------------------------------------------------------------------------- 1 | html{--color-mode: "light";--light: #fff;--dark: rgb(28,28,30);--haze: #f2f5f7;--bubble: rgb(36,36,38);--accent: var(--haze);--bg: var(--light);--code-bg: var(--accent);--overlay: var(--light);--text: #111;--font: 'Metropolis', sans-serif;--border-color: #eee;--inline-color: darkgoldenrod;--theme: rgb(52,199,89);--ease: ease}html[data-mode="dark"]{--color-mode: "dark";--theme: rgb(48,209,88);--bg: var(--dark);--text: #eee;--accent: var(--bubble);--overlay: var(--bubble);--border-color: transparent}html[data-mode="dark"] *{box-shadow:none !important}html[data-mode="dark"] .color_choice::after{background-image:url(../icons/moon.svg)}@media (prefers-color-scheme: dark){html.dark:not([data-mode="light"]){--color-mode: "dark";--theme: rgb(48,209,88);--bg: var(--dark);--text: #eee;--accent: var(--bubble);--overlay: var(--bubble);--border-color: transparent}html.dark:not([data-mode="light"]) *{box-shadow:none !important}}blockquote+.highlight_wrap{margin-top:2.25rem}*{box-sizing:border-box;-webkit-appearance:none;margin:0;padding:0}body,html{scroll-behavior:smooth;font-kerning:normal;-webkit-text-size-adjust:100%;font-size:18px}body{font-family:var(--font);background-color:var(--bg);color:var(--text);line-height:1.5;max-width:1440px;margin:0 auto;position:relative;font-kerning:normal;display:flex;flex-direction:column;justify-content:space-between;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none;color:inherit}p{padding:0.75rem 0}p:empty{display:none}li,li p{padding:0.25rem 0}blockquote{opacity:0.8;padding:1rem;position:relative;quotes:"“" "”" "‘" "’";margin:0.75rem 0;display:flex;flex-flow:row wrap;background-repeat:no-repeat;background-size:5rem;background-position:50% 50%;position:relative;background-color:var(--accent);border-radius:0.25rem;overflow:hidden}blockquote::before{content:"";padding:2px;position:absolute;top:0;bottom:0;left:0;background:var(--theme)}blockquote p{padding-left:0.5rem !important;font-size:1.1rem !important;width:100%;font-style:italic}h1,h2,h3,h4,h5{font-family:inherit;font-weight:500;padding:0.33rem 0;color:inherit;line-height:1.35}h1{font-size:200%}h2{font-size:175%}h3{font-size:150%}h4{font-size:125%}h5{font-size:120%}h6{font-size:100%}img,svg,figure{max-width:100%;vertical-align:middle}img{height:auto;margin:1rem auto;padding:0}main{flex:1}@media screen and (min-width: 42rem){main{padding-bottom:45px}}ol,ul{list-style:none}b,strong{font-weight:500}hr{border:none;padding:0.5px;background:var(--text);opacity:0.5;margin:1rem 0}.aside{overflow-y:auto;background:var(--bg);padding:1rem 1.5rem;border-radius:0.25rem;align-self:start;max-height:80vh;position:sticky;z-index:9999;top:0.25rem}@media screen and (min-width: 42rem){.aside{top:2.5rem;margin-top:1rem;padding-top:0}}.aside_inner{height:0;overflow:hidden}@media screen and (min-width: 42rem){.aside_inner{height:initial}}.aside.show .aside_inner{height:initial;overflow:visible}.aside_toggle{padding:1.5rem 0;margin:-1.5rem -0.5rem -1.5rem 0;display:flex;justify-content:space-between}@media screen and (min-width: 42rem){.aside_toggle{display:none}}.aside h3{position:relative}.aside ul{padding:0;list-style:none}th,td{padding:0.5rem;font-weight:400 !important}th:not(:first-child),td:not(:first-child){padding-left:1.5rem}thead{background:var(--theme);color:var(--light);font-weight:400;text-align:left}tbody tr:nth-child(even){background-color:var(--accent) !important;box-shadow:0 1rem 0.75rem -0.75rem rgba(0,0,0,0.07)}table{margin:1.5rem 0;width:100%}.main{flex:1}.page-home h1{font-weight:300}.content ul,.content ol{padding-left:1.1rem}.content ul{list-style:initial}.content ol{list-style:decimal}.content a:not(.button){color:var(--theme)}::placeholder{font-size:1rem}svg.icon_sort{fill:var(--light);height:0.7rem;width:0.7rem;display:inline-block;margin-left:auto;vertical-align:middle}canvas{margin:2.5rem auto 0 auto;max-width:450px !important;max-height:450px !important}footer{min-height:150px}del{opacity:0.5}#toTop{background:transparent;outline:0.5rem solid transparent;height:2rem;width:2rem;cursor:pointer;padding:0.5rem;display:flex;align-items:center;justify-content:center;position:fixed;right:0;bottom:2.25rem;transform:rotate(45deg) translate(5rem);opacity:0;transition:opacity 0.5s var(--ease),transform 0.25s var(--ease);z-index:5}#toTop.active{right:1.5rem;opacity:1;transform:rotate(45deg) translate(0)}#toTop::after,#toTop::before{position:absolute;display:block;width:1rem;height:1rem;content:"";border-left:1px solid var(--text);border-top:1px solid var(--text)}#toTop::after{width:0.67rem;height:0.67rem;transform:translate(0.1rem, 0.1rem)}.nav{display:grid;grid-gap:1rem;padding:0 1.5rem !important;align-items:center;background-color:var(--bg)}@media screen and (min-width: 992px){.nav{grid-template-columns:10rem 1fr}}.nav_brand{position:relative}.nav_brand picture,.nav_brand img{max-width:10rem}.nav_header{position:absolute;top:0;left:0;width:100%;background-color:var(--bg);z-index:999999}.nav_toggle{position:absolute;top:0;bottom:0;width:3rem;display:flex;align-items:center;justify-content:center;text-align:center;right:0;color:var(--text)}@media screen and (min-width: 992px){.nav_toggle{display:none}}.nav_body{display:flex;flex-direction:column;background:var(--accent);position:fixed;left:0;top:0;bottom:0;height:100vh;transition:transform 0.25s var(--ease);transform:translateX(-101vw)}@media screen and (min-width: 992px){.nav_body{transform:translateX(0);position:relative;height:initial;justify-content:flex-end;background:transparent;flex-direction:row}}.nav.show .nav_body{transform:translateX(0);box-shadow:0 1rem 4rem rgba(0,0,0,0.1);background:var(--bg)}.nav.show .nav_body li:first-child{margin:1.5rem 1rem 0.5rem 1rem}.nav-link{display:inline-flex;padding:0.5rem 1rem}.nav-item{display:grid;align-items:center}@media screen and (min-width: 992px){.nav-item .search{margin-right:1.5rem}}.nav_repo picture,.nav_repo img{max-width:1.25rem}.section_title{font-size:1.25rem}.section_link{font-size:1rem;font-weight:400}.sidebar-link{display:grid;padding:0.2rem 0}.toc{border-left:2px solid var(--theme);padding:0 1rem;height:0;overflow:hidden;filter:opacity(0.87)}.toc_item{font-size:0.9rem}.toc_active{height:initial}.search{flex:1;display:flex;justify-content:flex-end;position:relative}.search_field{padding:0.5rem 1.5rem 0.5rem 2.5rem;border-radius:1.5rem;width:13.5rem;outline:none;border:none;background:transparent;color:var(--text);box-shadow:0 1rem 4rem rgba(0,0,0,0.17);font-size:1rem}.search_label{width:1rem;height:1rem;position:absolute;left:0.33rem;top:0.25rem;opacity:0.33}.search_label svg{width:100%;height:100%;fill:var(--text)}.search_result{padding:0.5rem 1rem}.search_result:not(.passive):hover{background-color:var(--theme);color:var(--light)}.search_result.passive{display:grid}.search_results{width:13.5rem;background-color:var(--overlay);border-radius:0 0 0.25rem 0.25rem;box-shadow:0 1rem 4rem rgba(0,0,0,0.17);position:absolute;top:125%;display:grid;overflow:hidden;z-index:5}.search_results:empty{display:none}.search_title{padding:0.5rem 1rem 0.5rem 1rem;background:var(--theme);color:var(--light);font-size:0.9rem;opacity:0.87;text-transform:uppercase}.button{background-color:var(--theme);color:var(--light);border-radius:0.25rem;display:inline-block;padding:0.75rem 1.25rem;text-align:center}.button:hover{opacity:0.84}.button+.button{background-color:var(--haze);color:var(--dark)}.button_grid{display:grid;max-width:15rem;grid-gap:1rem;grid-template-columns:repeat(auto-fit, minmax(12rem, 1fr))}@media screen and (min-width: 557px){.button_grid{max-width:25rem}}.video{overflow:hidden;padding-bottom:56.25%;position:relative;height:0;margin:1.5rem 0;border-radius:0.6rem;background-color:var(--bg);box-shadow:0 1rem 2rem rgba(0,0,0,0.17)}.video iframe{left:0;top:0;height:100%;width:100%;border:none;position:absolute;transform:scale(1.02)}.icon{width:1.1rem;height:1.1rem;display:inline-flex;justify-content:center;align-items:center;margin:0 0.5rem}.link{opacity:0;position:relative}.link_owner:hover .link{opacity:1}.link_yank{opacity:1}.link_yanked{position:absolute;right:-1rem;top:-2rem;background-color:var(--theme);color:var(--light);width:7rem;padding:0.25rem 0.5rem;font-size:0.9rem;border-radius:1rem;text-align:center}.link_yanked::after{position:absolute;top:1rem;content:"";border-color:var(--theme) transparent;border-style:solid;border-width:1rem 1rem 0 1rem;height:0;width:0;transform-origin:50% 50%;transform:rotate(145deg);right:0.45rem}.gallery{width:100%;column-count:3;column-gap:1rem}@media screen and (max-width: 667px){.gallery{column-count:2}}.gallery_item{background-color:transparent;margin:0 0 1rem}.gallery_image{margin:0 auto}.pager{display:flex;justify-content:space-between;align-items:center;padding-top:2rem;margin:2rem 0;max-width:100vw;overflow:hidden}.pager svg{filter:opacity(0.75);width:1.25rem;height:1rem;transform-origin:50% 50%}.pager_lean{justify-content:flex-end}.pager_label{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pager_link{padding:0.5rem 1rem;border-radius:0.25rem;width:12.5rem;max-width:40vw;position:relative;display:flex;align-items:center;text-align:center;justify-content:center}.pager_link::before,.pager_link::after{background-image:url(../images/next.svg);height:0.8rem;width:0.8rem;background-size:100%;background-repeat:no-repeat;transform-origin:50% 50%}.pager_item{display:flex;flex-direction:column;flex:1;max-width:48%}.pager_item.prev{align-items:flex-start}.pager_item.next{align-items:flex-end}.pager_item.next::after{content:""}.pager_item.prev .pager_link::before{content:"";transform:rotate(180deg);margin-right:0.67rem}.pager_item.next .pager_link::after{content:"";margin-left:0.67rem}.pager_item.next .pager_link{grid-template-columns:1fr 1.5rem}.pager_meta{margin:0.5rem 0}.color_mode{height:1rem;margin-left:1.5rem}.color_choice{outline:none;border:none;-webkit-appearance:none;height:1rem;position:relative;width:1rem;border-radius:1rem;cursor:pointer;z-index:2;right:0;filter:contrast(0.8)}.color_choice::after{content:"";top:0.1rem;bottom:0;left:0;position:absolute;height:0.8rem;background:var(--accent);width:0.8rem;border-radius:0.25rem;z-index:3;transform:scale(1.67);transform-origin:50% 50%;transition:transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);will-change:transform;background-image:url(../icons/sun.svg);background-size:60%;background-repeat:no-repeat;background-position:center}.color_icon{height:1rem;width:1rem;margin:0;z-index:4;position:absolute;transform:translateY(-50%);transition:transform 0.5s cubic-bezier(0.19, 1, 0.22, 1);right:3.5rem}.tip{padding:1.5rem 1rem 1.5rem 1.5rem;margin:1.5rem 0;border-left:0.2rem solid var(--theme);position:relative;background:var(--accent)}.tip blockquote{padding:0;margin:0;border:none}.tip blockquote::before{display:none}.tip p:first-child,.tip p~p{padding-top:0}.tip p:last-child{padding-bottom:0}.tip_warning{--theme: var(--inline-color)}.tip_warning::before{transform:rotate(180deg)}.tip::before{content:"";position:absolute;left:-0.85rem;top:1.5rem;z-index:3;padding:0.75rem;transform-origin:50% 50%;border-radius:50%;background-color:var(--theme);background-image:url(../icons/info.svg);background-size:12%;background-position:50% 50%;background-repeat:no-repeat}.mermaid{--theme: darkgoldenrod;background-color:transparent !important;margin-bottom:2.5rem}.mermaid svg{margin:0 auto;display:block}.mermaid .actor,.mermaid .labelBox,.mermaid .classGroup rect{fill:var(--theme) !important;stroke:var(--theme) !important}.mermaid .messageText,.mermaid tspan,.mermaid text{fill:var(--text) !important;stroke:var(--text) !important}.mermaid .messageLine0,.mermaid .loopLine{stroke:var(--theme) !important;fill:var(--theme) !important}.wrap{max-width:1240px}.wrap,.wrap{width:100%;padding:0 25px;margin:0 auto}.pt-1{padding-top:1.5rem}.pb-1{padding-bottom:1.5rem}.mt-1{margin-top:1.5rem}.mb-1{margin-bottom:1.5rem}.pt-2{padding-top:3rem}.pb-2{padding-bottom:3rem}.mt-2{margin-top:3rem}.mb-2{margin-bottom:3rem}.pt-3{padding-top:4.5rem}.pb-3{padding-bottom:4.5rem}.mt-3{margin-top:4.5rem}.mb-3{margin-bottom:4.5rem}.pt-4{padding-top:6rem}.pb-4{padding-bottom:6rem}.mt-4{margin-top:6rem}.mb-4{margin-bottom:6rem}.grid-2,.grid-3,.grid-4,.grid-auto,.grid-reverse{display:grid;grid-template-columns:1fr}[class*='grid-']{grid-gap:2rem}@media screen and (min-width: 42rem){.grid-auto{grid-template-columns:2fr 5fr}.grid-reverse{grid-template-columns:3fr 1fr}.grid-2{grid-template-columns:repeat(2, 1fr)}.grid-3{grid-template-columns:repeat(auto-fit, minmax(15rem, 1fr))}.grid-4{grid-template-columns:repeat(auto-fit, minmax(12rem, 1fr))}}.active{color:var(--theme)}.is{background:var(--theme);color:var(--light)}.toggle svg{fill:var(--text);display:inline-block;transform-origin:50% 50%;transform:scale(1.2);cursor:pointer}.scrollable{width:100%;overflow-x:hidden;max-width:calc(100vw - 48px)}@media screen and (min-width: 768px){.scrollable{max-width:100%}}.scrollable:hover{overflow-x:auto}.chart{display:grid;grid-gap:1.5rem;max-width:98vw !important;max-height:98vw !important}@keyframes pulse{0%{opacity:1}75%{opacity:0.1}100%{opacity:1}}code{font-size:15px;font-weight:400;overflow-y:hidden;display:block;font-family:'Monaco', monospace;word-break:break-all}code.noClass{color:var(--inline-color);display:inline;line-break:anywhere}.windows .highlight{overflow-x:hidden}.windows .highlight:hover{overflow-x:auto}.highlight{display:grid;width:100%;border-radius:0 0.2rem 0.2rem 0;overflow-x:auto;position:relative}.highlight_wrap{display:grid;background:var(--code-bg) !important;border-radius:0.5rem;position:relative;padding:0 1rem;margin:1.5rem auto 1rem auto}.highlight_wrap+.highlight_wrap{margin-top:2.25rem}.highlight_wrap:hover>div{opacity:1}.highlight_wrap .lang{position:absolute;top:0;right:0;text-align:right;width:7.5rem;padding:0.5rem 1rem;font-style:italic;text-transform:uppercase;font-size:67%;opacity:0.5;color:var(--text)}.highlight_wrap:hover .lang{opacity:0.1}.highlight .highlight{margin:0}.highlight pre{color:var(--text) !important;border-radius:4px;font-family:'Monaco', monospace;padding-top:1.5rem;padding-bottom:2rem}.highlight table{display:grid;max-width:100%;margin-bottom:0;background:transparent}.highlight td,.highlight th{padding:0}.highlight .lntd{width:100%;border:none}.highlight .lntd:first-child,.highlight .lntd:first-child pre{width:2.5rem !important;padding-left:0;padding-right:0;color:rgba(255,255,255,0.5);user-select:none}.highlight .lntd:first-child pre{width:100%;display:flex;align-items:center;flex-direction:column}.err{color:#a61717}.hl{width:100%;background:var(--inline-color)}.ln,.lnt{margin-right:0.75rem;padding:0;transition:opacity 0.3s var(--ease)}.ln,.ln span,.lnt,.lnt span{color:var(--text);opacity:0.5;user-select:none}.k,.kc,.kd,.kn,.kp,.kr,.kt,.nt{color:#6ab825;font-weight:500}.kn,.kp{font-weight:400}.nb,.no,.nv{color:#24909d}.nc,.nf,.nn{color:#447fcf}.s,.sa,.sb,.sc,.dl,.sd,.s2,.se,.sh,.si,.sx,.sr,.s1,.ss{color:#ed9d13}.m,.mb,.mf,.mh,.mi,.il,.mo{color:#3677a9}.ow{color:#6ab825;font-weight:500}.c,.ch,.cm,.c1{color:#999;font-style:italic}.cs{color:#e50808;background-color:#520000;font-weight:500}.cp,.cpf{color:#cd2828;font-weight:500}.gd,.gr{color:#d22323}.ge{font-style:italic}.gh,.gu,.nd,.na,.ne{color:#ffa500;font-weight:500}.gi{color:#589819}.go{color:#ccc}.gp{color:#aaa}.gs{font-weight:500}.gt{color:#d22323}.w{color:#666}.hljs-string{color:#6ab825}.hljs-attr{color:#ed9d13}.p .hljs-attr{color:var(--light)}.pre_wrap{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.pre_nolines.ln{display:none}.panel_box{display:inline-flex;perspective:300px;grid-gap:0.5rem;transition:opacity 0.3s var(--easing);background:var(--code-bg);padding:0.5rem 1.5rem;border-radius:2rem;align-items:center;position:absolute;right:0rem;top:-2.1rem;opacity:0}.panel_icon{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0.1rem;transform-origin:50% 50%}.panel_icon.active{animation:pulse 0.1s linear}.panel_icon svg{fill:var(--text);width:1.5rem;height:1.5rem}.panel_hide{display:none}.panel_from{position:absolute;color:var(--theme);bottom:0;font-size:1.5rem;font-weight:500;padding:0.5rem 0;cursor:pointer;letter-spacing:0.1px;z-index:19}.panel_expanded .panel_from{display:none}@font-face{font-family:'Metropolis';font-style:normal;font-weight:400;src:local("Metropolis Regular"),local("Metropolis-Regular"),url("../fonts/Metropolis-Regular.woff2") format("woff2"),url("../fonts/Metropolis-Regular.woff") format("woff");font-display:swap}@font-face{font-family:'Metropolis';font-style:normal;font-weight:300;src:local("Metropolis Light"),local("Metropolis-Light"),url("../fonts/Metropolis-Light.woff2") format("woff2"),url("../fonts/Metropolis-Light.woff") format("woff");font-display:swap}@font-face{font-family:'Metropolis';font-style:italic;font-weight:300;src:local("Metropolis Light Italic"),local("Metropolis-LightItalic"),url("../fonts/Metropolis-LightItalic.woff2") format("woff2"),url("../fonts/Metropolis-LightItalic.woff") format("woff");font-display:swap}@font-face{font-family:'Metropolis';font-style:normal;font-weight:500;src:local("Metropolis Medium"),local("Metropolis-Medium"),url("../fonts/Metropolis-Medium.woff2") format("woff2"),url("../fonts/Metropolis-Medium.woff") format("woff");font-display:swap}@font-face{font-family:'Metropolis';font-style:italic;font-weight:500;src:local("Metropolis Medium Italic"),local("Metropolis-MediumItalic"),url("../fonts/Metropolis-MediumItalic.woff2") format("woff2"),url("../fonts/Metropolis-MediumItalic.woff") format("woff");font-display:swap}@font-face{font-family:'Cookie';font-style:normal;font-weight:400;src:local("Cookie-Regular"),url("../fonts/cookie-v10-latin-regular.woff2") format("woff2"),url("../fonts/cookie-v10-latin-regular.woff") format("woff");font-display:swap}@keyframes chartjs-render-animation{0%{opacity:.99}100%{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0} 2 | 3 | /*# sourceMappingURL=styles.css.map */ -------------------------------------------------------------------------------- /src/resources/_gen/assets/sass/sass/main.sass_ca26857cefa9076967ab300682271513.json: -------------------------------------------------------------------------------- 1 | {"Target":"css/styles.3c1c2e57871ba783a4d85c82cb38c2dfd4be3ee80d6cbdbaa129405d9af1b18c43afa4f48e280dc331df5f85a5ee0949e4757cf2a98b54a8125d4bbb0dea11c5.css","MediaType":"text/css","Data":{"Integrity":"sha512-PBwuV4cbp4Ok2FyCyzjC39S+PugNbL26oSlAXZrxsYxDr6T0jigNwzHfX4Wl7glJ5HV88qmLVKgSXUu7DeoRxQ=="}} -------------------------------------------------------------------------------- /src/static/images/GitHubMarkDark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/static/images/GitHubMarkLight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/static/images/clarity/article-toc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/article-toc.png -------------------------------------------------------------------------------- /src/static/images/clarity/image-figure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/image-figure.png -------------------------------------------------------------------------------- /src/static/images/clarity/image-inline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/image-inline.png -------------------------------------------------------------------------------- /src/static/images/clarity/screenshot-darkmode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/screenshot-darkmode.png -------------------------------------------------------------------------------- /src/static/images/clarity/screenshot-mobile-darkmode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/screenshot-mobile-darkmode.png -------------------------------------------------------------------------------- /src/static/images/clarity/screenshot-mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/screenshot-mobile.png -------------------------------------------------------------------------------- /src/static/images/clarity/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/screenshot.png -------------------------------------------------------------------------------- /src/static/images/clarity/syntax-block.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/syntax-block.gif -------------------------------------------------------------------------------- /src/static/images/clarity/tags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/tags.png -------------------------------------------------------------------------------- /src/static/images/clarity/tn-darkmode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/tn-darkmode.png -------------------------------------------------------------------------------- /src/static/images/clarity/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/clarity/tn.png -------------------------------------------------------------------------------- /src/static/images/compose-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/static/images/compose.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/static/images/painting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/painting.jpg -------------------------------------------------------------------------------- /src/static/images/scribble.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piyoki/jetson-packages-family/25ad02d9ad3bf1ddf6421d22450eb5a4ad0966b3/src/static/images/scribble.jpg --------------------------------------------------------------------------------