diff --git a/README.md b/README.md index e143daf..fbd9ea3 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,7 @@ Files are shared using the [Send][send] service and may be up to 2GB. Others are able to download these files with this tool, or through their webbrowser. -```bash -$ ffsend upload my-file.txt -Share link: https://send.firefox.com/#sample-share-url -``` +[![ffsend usage demo](./res/ffsend-demo.gif)](./res/ffsend-demo.mp4) All files are always encrypted on the client, and secrets are never shared with the remote host. An optional password may be specified, and a default file @@ -49,6 +46,9 @@ _Note: this tool is currently in the alpha phase_ - Accurate error reporting - Intended to be used in scripts without interaction +For a list of upcoming features and ideas, take a look at the +[ROADMAP](ROADMAP.md) file. + ## Usage Easily upload and download: @@ -96,7 +96,7 @@ Other commands include: ```bash # View your file history $ ffsend history -# URL EXPIRY OWNER TOKEN +# LINK EXPIRY OWNER TOKEN 1 https://send.firefox.com/#sample-share-url 23h57m eea9f544f6d5df8a5afd 2 https://send.firefox.com/#other-sample-url 17h38m 1e9fef63fee3baaf54ce 3 https://example.com/#sample-share-url 37m30s 8eb28bc1bc85cfdab0e4 @@ -109,7 +109,8 @@ Password: ****** $ ffsend delete https://send.firefox.com/#sample-share-url ``` -Use the `--help` flag, or see the [help](#help) section for all available subcommands. +Use the `--help` flag, `help` subcommand, or see the [help](#help) section for +all available subcommands. ## Requirements - Linux, macOS or Windows @@ -226,28 +227,29 @@ cargo install --no-default--features --features history,clipboard ## Configuration and environment The following environment variables may be used to configure the following -defaults: +defaults. The CLI flag is shown along with it, to better describe the relation +to command line arguments: -| Variable | CLI flag | Description | -| :--------------- | :---------: | :---------------- | -| `FFSEND_HISTORY` | `-H ` | History file path | -| `FFSEND_HOST` | `-h ` | Upload host | +| Variable | CLI flag | Description | +| :--------------- | :----------------: | :---------------- | +| `FFSEND_HISTORY` | `--history ` | History file path | +| `FFSEND_HOST` | `--host ` | Upload host | These environment variables may be used to toggle a flag, simply by making them available. The actual value of these variables is ignored, and variables may be empty. -| Variable | CLI flag | Description | -| :------------------- | :------: | :-------------------------------- | -| `FFSEND_FORCE` | `-f` | Force operations | -| `FFSEND_NO_INTERACT` | `-I` | No interaction for prompts | -| `FFSEND_YES` | `-y` | Assume yes for prompts | -| `FFSEND_INCOGNITO` | `-i` | Incognito mode, don't use history | -| `FFSEND_OPEN` | `-o` | Open share link of uploaded file | -| `FFSEND_ARCHIVE` | `-a` | Archive files uploaded | -| `FFSEND_EXTRACT` | `-e` | Extract files downloaded | -| `FFSEND_COPY` | `-c` | Copy share link to clipboard | -| `FFSEND_VERBOSE` | `-v` | Log verbose information | +| Variable | CLI flag | Description | +| :------------------- | :-------------: | :-------------------------------- | +| `FFSEND_FORCE` | `--force` | Force operations | +| `FFSEND_NO_INTERACT` | `--no-interact` | No interaction for prompts | +| `FFSEND_YES` | `--yes` | Assume yes for prompts | +| `FFSEND_INCOGNITO` | `--incognito` | Incognito mode, don't use history | +| `FFSEND_OPEN` | `--open` | Open share link of uploaded file | +| `FFSEND_ARCHIVE` | `--archive` | Archive files uploaded | +| `FFSEND_EXTRACT` | `--extract` | Extract files downloaded | +| `FFSEND_COPY` | `--copy` | Copy share link to clipboard | +| `FFSEND_VERBOSE` | `--verbose` | Log verbose information | At this time, no configuration or _dotfile_ file support is available. This will be something added in a later release. @@ -293,11 +295,11 @@ This application is not affiliated with Mozilla, Firefox or Firefox Send. ``` ## License -This tool is released under the GNU GPL-3.0 license. Check out the -[LICENSE](LICENSE) file for more information. +The tool `ffsend` itself is released under the GNU GPL-3.0 license. +Check out the [LICENSE](LICENSE) file for more information. -The included API library located [here](api) is intended for use in other -projects and is is released under the MIT license. +The `ffsend-api` library that is part of this repository located [here](api), +is intended for use in other projects and is is released under the MIT license. Check out the [LICENSE](api/LICENSE) file for more information. [firefox]: https://firefox.com/ diff --git a/cli/src/action/history.rs b/cli/src/action/history.rs index e9d89af..b2866d1 100644 --- a/cli/src/action/history.rs +++ b/cli/src/action/history.rs @@ -57,7 +57,7 @@ impl<'a> History<'a> { table.set_format(FormatBuilder::new().padding(0, 2).build()); table.add_row(Row::new(vec![ Cell::new("#"), - Cell::new("URL"), + Cell::new("LINK"), Cell::new("EXPIRY"), Cell::new("OWNER TOKEN"), ])); diff --git a/cli/src/action/upload.rs b/cli/src/action/upload.rs index 9a82a04..2fab35d 100644 --- a/cli/src/action/upload.rs +++ b/cli/src/action/upload.rs @@ -222,7 +222,7 @@ impl<'a> Upload<'a> { let mut table = Table::new(); table.set_format(FormatBuilder::new().padding(0, 2).build()); table.add_row(Row::new(vec![ - Cell::new("Share URL:"), + Cell::new("Share link:"), Cell::new(url.as_str()), ])); if matcher_main.verbose() { diff --git a/res/asciinema-ffsend-demo.json b/res/asciinema-ffsend-demo.json new file mode 100644 index 0000000..0cae2c0 --- /dev/null +++ b/res/asciinema-ffsend-demo.json @@ -0,0 +1,1222 @@ +{ + "version": 1, + "width": 102, + "height": 19, + "duration": 78.431135, + "command": null, + "title": null, + "env": { + "TERM": "xterm-256color", + "SHELL": "/bin/bash" + }, + "stdout": [ + [ + 0.315246, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 0.299284, + "c" + ], + [ + 0.075151, + "l" + ], + [ + 0.082658, + "e" + ], + [ + 0.005495, + "a" + ], + [ + 0.06475, + "r" + ], + [ + 0.05582, + "\r\n" + ], + [ + 0.002588, + "\u001b[3J\u001b[H\u001b[2J" + ], + [ + 0.000446, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 2.747628, + "f" + ], + [ + 0.311074, + "f" + ], + [ + 0.107298, + "s" + ], + [ + 0.112108, + "e" + ], + [ + 0.052915, + "n" + ], + [ + 0.103452, + "d" + ], + [ + 0.076084, + "\r\n" + ], + [ + 0.004048, + "ffsend 0.0.1\r\nUsage: ffsend [FLAGS] ...\r\n\r\nSecurely and easily share files from the command line.\r\nA fully featured Firefox Send client.\r\n\r\nMissing subcommand. Here are the most used:\r\n" + ], + [ + 0.000148, + " \u001b[33mffsend upload ...\u001b[0m\r\n \u001b[33mffsend download ...\u001b[0m\r\n\r\nTo show all subcommands, features and other help:\r\n \u001b[33mffsend help [SUBCOMMAND]\u001b[0m\r\n" + ], + [ + 0.000414, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 3.727418, + "\r\n" + ], + [ + 0.000203, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 0.097661, + "f" + ], + [ + 0.122247, + "f" + ], + [ + 0.05605, + "s" + ], + [ + 0.087885, + "e" + ], + [ + 0.060899, + "n" + ], + [ + 0.096174, + "d" + ], + [ + 0.061232, + " " + ], + [ + 0.060431, + "u" + ], + [ + 0.03782, + "p" + ], + [ + 0.13847, + "l" + ], + [ + 0.11866, + "o" + ], + [ + 0.033067, + "a" + ], + [ + 0.027852, + "d" + ], + [ + 0.069364, + " " + ], + [ + 0.084982, + "i" + ], + [ + 0.051328, + "m" + ], + [ + 0.010214, + "a" + ], + [ + 0.054744, + "g" + ], + [ + 0.059566, + "e" + ], + [ + 0.036545, + "." + ], + [ + 0.136904, + "p" + ], + [ + 0.144499, + "n" + ], + [ + 0.075098, + "g" + ], + [ + 0.063966, + " " + ], + [ + 0.197218, + "-" + ], + [ + 0.098887, + "-" + ], + [ + 0.183252, + "c" + ], + [ + 0.076421, + "o" + ], + [ + 0.055157, + "p" + ], + [ + 0.083875, + "y" + ], + [ + 1.318772, + "\r\n" + ], + [ + 0.006129, + "\rEncrypt & Upload 7.88 KB / 116.93 KB [==>-------------------------------------] 6.74 % 164.29 MB/s 0s " + ], + [ + 0.004434, + "\rEncrypt & Upload 116.93 KB / 116.93 KB [=======================================] 100.00 % 26.44 MB/s \rUpload complete " + ], + [ + 0.000379, + "Share link:\u001b(B\u001b[m http://send.firefox.com/download/eb2ab818cc/#F8_WgM3tz1t05yiPMsBgIw\u001b(B\u001b[m \r\n" + ], + [ + 0.010614, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 2.025804, + "\r\n" + ], + [ + 0.000202, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 0.243031, + "f" + ], + [ + 0.139251, + "f" + ], + [ + 0.023956, + "s" + ], + [ + 0.147834, + "e" + ], + [ + 0.08333, + "n" + ], + [ + 0.10299, + "d" + ], + [ + 0.060944, + " " + ], + [ + 0.101654, + "d" + ], + [ + 0.070479, + "o" + ], + [ + 0.072873, + "w" + ], + [ + 0.074426, + "n" + ], + [ + 0.052316, + "l" + ], + [ + 0.123539, + "o" + ], + [ + 0.050095, + "a" + ], + [ + 0.042724, + "d" + ], + [ + 0.059361, + " " + ], + [ + 0.394567, + "http://send.firefox.com/download/eb2ab818cc/#F8_WgM3tz1t05yiPMsBgIw" + ], + [ + 1.808662, + "\r\n" + ], + [ + 0.018087, + "The path '/home/timvisee/ffsend/image.png' already exists\r\nOverwrite? [y/n]: " + ], + [ + 2.255111, + "y" + ], + [ + 0.344455, + "\r\n" + ], + [ + 0.006962, + "\rDownload & Decrypt 7.49 KB / 116.93 KB [==>------------------------------------] 6.41 % 45.45 MB/s 0s " + ], + [ + 0.002159, + "\rDownload & Decrypt 116.93 KB / 116.93 KB [=====================================] 100.00 % 46.05 MB/s \rDownload complete " + ], + [ + 0.00258, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 1.273051, + "c" + ], + [ + 0.085775, + "l" + ], + [ + 0.088002, + "e" + ], + [ + 0.063911, + "a" + ], + [ + 0.028405, + "r" + ], + [ + 0.117617, + "\r\n" + ], + [ + 0.002596, + "\u001b[3J\u001b[H\u001b[2J" + ], + [ + 0.000426, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 0.451685, + "t" + ], + [ + 0.147318, + "r" + ], + [ + 0.035882, + "e" + ], + [ + 0.143284, + "e" + ], + [ + 0.099064, + "\r\n" + ], + [ + 0.001387, + "\u001b[01;34m.\u001b[00m\r\n" + ], + [ + 4.6e-05, + "├── \u001b[01;34mdir\u001b[00m\r\n" + ], + [ + 8.2e-05, + "│   ├── \u001b[01;35mimage1.png\u001b[00m\r\n│   ├── \u001b[01;35mimage2.png\u001b[00m\r\n│   ├── \u001b[01;35mimage3.png\u001b[00m\r\n" + ], + [ + 3.5e-05, + "│   ├── \u001b[01;35mimage4.png\u001b[00m\r\n│   └── \u001b[01;35mimage5.png\u001b[00m\r\n└── \u001b[01;35mimage.png\u001b[00m\r\n\r\n1 directory, 6 files\r\n" + ], + [ + 0.000269, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 1.35093, + "f" + ], + [ + 0.138635, + "f" + ], + [ + 0.027636, + "s" + ], + [ + 0.108943, + "e" + ], + [ + 0.083283, + "n" + ], + [ + 0.081298, + "d" + ], + [ + 0.066286, + " " + ], + [ + 0.124465, + "u" + ], + [ + 0.123613, + "p" + ], + [ + 0.198503, + "l" + ], + [ + 0.197546, + "o" + ], + [ + 0.093234, + "a" + ], + [ + 0.039311, + "d" + ], + [ + 0.074587, + " " + ], + [ + 0.155511, + "-" + ], + [ + 0.107025, + "-" + ], + [ + 0.30897, + "h" + ], + [ + 0.038037, + "o" + ], + [ + 0.050418, + "s" + ], + [ + 0.065752, + "t" + ], + [ + 0.037937, + " " + ], + [ + 0.22728, + "h" + ], + [ + 0.162005, + "t" + ], + [ + 0.129107, + "t" + ], + [ + 0.057937, + "p" + ], + [ + 0.185544, + ":" + ], + [ + 0.149125, + "/" + ], + [ + 0.105709, + "/" + ], + [ + 0.179433, + "l" + ], + [ + 0.149999, + "o" + ], + [ + 0.054508, + "c" + ], + [ + 0.028218, + "a" + ], + [ + 0.083596, + "l" + ], + [ + 0.166794, + "h" + ], + [ + 0.061429, + "o" + ], + [ + 0.062438, + "s" + ], + [ + 0.048826, + "t" + ], + [ + 0.277334, + "/" + ], + [ + 0.097705, + " " + ], + [ + 0.898511, + "." + ], + [ + 0.243449, + "/" + ], + [ + 0.13176, + "d" + ], + [ + 0.087721, + "i" + ], + [ + 0.069036, + "r" + ], + [ + 0.056833, + " " + ], + [ + 0.423555, + "-" + ], + [ + 0.103734, + "-" + ], + [ + 0.075639, + "c" + ], + [ + 0.079152, + "o" + ], + [ + 0.075414, + "p" + ], + [ + 0.067769, + "y" + ], + [ + 0.048457, + " " + ], + [ + 0.139606, + "-" + ], + [ + 0.085638, + "-" + ], + [ + 0.159108, + "p" + ], + [ + 0.057905, + "a" + ], + [ + 0.127221, + "s" + ], + [ + 0.125608, + "s" + ], + [ + 0.151744, + "w" + ], + [ + 0.097711, + "o" + ], + [ + 0.061007, + "r" + ], + [ + 0.154988, + "d" + ], + [ + 0.078481, + " " + ], + [ + 0.114123, + "-" + ], + [ + 0.091159, + "-" + ], + [ + 0.070143, + "d" + ], + [ + 0.11245, + "o" + ], + [ + 0.041233, + "w" + ], + [ + 0.135844, + "n" + ], + [ + 0.082433, + "l" + ], + [ + 0.136912, + "o" + ], + [ + 0.045263, + "a" + ], + [ + 0.070978, + "d" + ], + [ + 0.157074, + "s" + ], + [ + 0.0916, + " " + ], + [ + 0.139081, + "1" + ], + [ + 0.082388, + "0" + ], + [ + 0.546882, + "\r\n" + ], + [ + 0.010193, + "You've selected a directory, only a single file may be uploaded.\r\nArchive the directory into a single file? [Y/n]: " + ], + [ + 3.589859, + "y" + ], + [ + 0.328803, + "\r\nArchiving...\r\n" + ], + [ + 0.001366, + "Password: " + ], + [ + 2.049001, + "\r\n" + ], + [ + 0.0006, + "\rEncrypt & Upload 7.88 KB / 589.02 KB [>----------------------------------------] 1.34 % 73.23 MB/s 0s " + ], + [ + 0.056393, + "\rEncrypt & Upload 589.02 KB / 589.02 KB [=======================================] 100.00 % 10.18 MB/s " + ], + [ + 0.000241, + "\rUpload complete " + ], + [ + 0.007118, + "Share link:\u001b(B\u001b[m http://localhost/download/8c676a0415/#ppyvURZnNKxAXP503zx4ow\u001b(B\u001b[m \r\n" + ], + [ + 0.013095, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 2.812126, + "r" + ], + [ + 0.106401, + "m" + ], + [ + 0.065776, + " " + ], + [ + 0.109802, + "-" + ], + [ + 0.107358, + "r" + ], + [ + 0.052046, + " " + ], + [ + 0.197937, + "d" + ], + [ + 0.110728, + "i" + ], + [ + 0.088048, + "r" + ], + [ + 0.478528, + "\r\n" + ], + [ + 0.001914, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 1.696512, + "t" + ], + [ + 0.165512, + "r" + ], + [ + 0.053922, + "e" + ], + [ + 0.136209, + "e" + ], + [ + 0.617314, + "\r\n" + ], + [ + 0.002698, + "\u001b[01;34m.\u001b[00m\r\n└── \u001b[01;35mimage.png\u001b[00m\r\n\r\n0 directories, 1 file\r\n" + ], + [ + 0.000599, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 2.565528, + "\r\n" + ], + [ + 0.000117, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 0.101676, + "f" + ], + [ + 0.134166, + "f" + ], + [ + 0.052074, + "s" + ], + [ + 0.113215, + "e" + ], + [ + 0.094931, + "n" + ], + [ + 0.071806, + "d" + ], + [ + 0.067825, + " " + ], + [ + 0.074399, + "d" + ], + [ + 0.073672, + "o" + ], + [ + 0.062621, + "w" + ], + [ + 0.086107, + "n" + ], + [ + 0.056469, + "l" + ], + [ + 0.132919, + "o" + ], + [ + 0.070761, + "a" + ], + [ + 0.035916, + "d" + ], + [ + 0.051305, + " " + ], + [ + 0.451896, + "http://localhost/download/8c676a0415/#ppyvURZnNKxAXP503zx4ow" + ], + [ + 1.161843, + "\r\n" + ], + [ + 0.011099, + "This file is protected with a password.\r\nPassword: " + ], + [ + 2.810903, + "\r\n" + ], + [ + 0.008816, + "You're downloading an archive, extract it into the selected directory? [Y/n]: " + ], + [ + 2.888769, + "y" + ], + [ + 0.275081, + "\r\n" + ], + [ + 0.004008, + "\rDownload & Decrypt 7.49 KB / 589.02 KB [>--------------------------------------] 1.27 % 33.97 MB/s 0s " + ], + [ + 0.005111, + "\rDownload & Decrypt 589.02 KB / 589.02 KB [====================================] 100.00 % 105.05 MB/s \rDownload complete " + ], + [ + 0.001558, + "Extracting..." + ], + [ + 0.000667, + "\r\n" + ], + [ + 0.006159, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 2.29007, + "t" + ], + [ + 0.170948, + "r" + ], + [ + 0.055106, + "e" + ], + [ + 0.141162, + "e" + ], + [ + 0.313824, + "\r\n" + ], + [ + 0.002934, + "\u001b[01;34m.\u001b[00m\r\n" + ], + [ + 0.00015, + "├── \u001b[01;34mdir\u001b[00m" + ], + [ + 9.2e-05, + "\r\n" + ], + [ + 0.000103, + "│   ├── \u001b[01;35mimage1.png\u001b[00m" + ], + [ + 6.5e-05, + "\r\n" + ], + [ + 8.7e-05, + "│   ├── \u001b[01;35mimage2.png\u001b[00m" + ], + [ + 6e-05, + "\r\n" + ], + [ + 8.7e-05, + "│   ├── \u001b[01;35mimage3.png\u001b[00m" + ], + [ + 8.8e-05, + "\r\n" + ], + [ + 0.000172, + "│   ├── \u001b[01;35mimage4.png\u001b[00m\r\n│   └── \u001b[01;35mimage5.png\u001b[00m\r\n" + ], + [ + 6e-05, + "└── \u001b[01;35mimage.png\u001b[00m\r\n\r\n1 directory, 6 files\r\n" + ], + [ + 0.000758, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 3.895998, + "c" + ], + [ + 0.286706, + "l" + ], + [ + 0.127313, + "e" + ], + [ + 0.068267, + "a" + ], + [ + 0.019578, + "r" + ], + [ + 0.236386, + "\r\n" + ], + [ + 0.001683, + "\u001b[3J\u001b[H\u001b[2J" + ], + [ + 0.000337, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 0.328594, + "f" + ], + [ + 0.123586, + "f" + ], + [ + 0.055619, + "s" + ], + [ + 0.094709, + "e" + ], + [ + 0.069749, + "n" + ], + [ + 0.093652, + "d" + ], + [ + 0.060866, + " " + ], + [ + 0.036796, + "i" + ], + [ + 0.04626, + "n" + ], + [ + 0.061367, + " " + ], + [ + 0.098436, + "f" + ], + [ + 0.218131, + "\b\u001b[K" + ], + [ + 0.094286, + "\b\u001b[K" + ], + [ + 0.091956, + "f" + ], + [ + 0.093555, + "o" + ], + [ + 0.060616, + " " + ], + [ + 0.424389, + "http://localhost/download/8c676a0415/#ppyvURZnNKxAXP503zx4ow" + ], + [ + 0.537385, + "\r\n" + ], + [ + 0.009675, + "This file is protected with a password.\r\nPassword: " + ], + [ + 3.343676, + "\r\n" + ], + [ + 0.014916, + "ID: \u001b(B\u001b[m 8c676a0415\u001b(B\u001b[m \r\nName: \u001b(B\u001b[m dir.tar\u001b(B\u001b[m \r\nSize: \u001b(B\u001b[m 589.02 KiB (603152 B)\u001b(B\u001b[m \r\nMIME: \u001b(B\u001b[m application/x-tar\u001b(B\u001b[m \r\nDownloads:\u001b(B\u001b[m 1 of 10\u001b(B\u001b[m \r\nExpiry: \u001b(B\u001b[m 23h59m (86369s)\u001b(B\u001b[m \r\n" + ], + [ + 0.001792, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 4.928383, + "\r\n" + ], + [ + 0.000199, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ], + [ + 0.117653, + "f" + ], + [ + 0.129906, + "f" + ], + [ + 0.032962, + "s" + ], + [ + 0.113666, + "e" + ], + [ + 0.089314, + "n" + ], + [ + 0.065384, + "d" + ], + [ + 0.065542, + " " + ], + [ + 0.065172, + "h" + ], + [ + 0.046016, + "i" + ], + [ + 0.033428, + "s" + ], + [ + 0.062997, + "t" + ], + [ + 0.057587, + "o" + ], + [ + 0.09366, + "r" + ], + [ + 0.155138, + "y" + ], + [ + 0.436485, + "\r\n" + ], + [ + 0.003618, + "#\u001b(B\u001b[m LINK \u001b(B\u001b[m EXPIRY\u001b(B\u001b[m OWNER TOKEN\u001b(B\u001b[m \r\n1\u001b(B\u001b[m http://localhost/download/8c676a0415/#ppyvURZnNKxAXP503zx4ow \u001b(B\u001b[m 23h59m\u001b(B\u001b[m 4cfe63017d9eade8a955\u001b(B\u001b[m \r\n2\u001b(B\u001b[m http://send.firefox.com/download/eb2ab818cc/#F8_WgM3tz1t05yiPMsBgIw\u001b(B\u001b[m 23h58m\u001b(B\u001b[m 084577d86526aa999dc6\u001b(B\u001b[m \r\n" + ], + [ + 0.000651, + "\u001b[01;34m~/ffsend\u001b[00m $ " + ] + ] +} \ No newline at end of file diff --git a/res/create-gif-ffsend-demo b/res/create-gif-ffsend-demo new file mode 100755 index 0000000..3b8277f --- /dev/null +++ b/res/create-gif-ffsend-demo @@ -0,0 +1,12 @@ +#!/bin/bash + +# Create the frames directory +mkdir frames + +# Extract the frames +ffmpeg -i ./ffsend-demo.mp4 -r 6/1 frames/frame%04d.png + +# Create a gif +gifski -o ffsend-demo.gif frames/frame*.png --width 850 --height 332 --fps 6 --quality 70 + +echo "Done" diff --git a/res/ffsend-demo.gif b/res/ffsend-demo.gif new file mode 100644 index 0000000..0de2f89 Binary files /dev/null and b/res/ffsend-demo.gif differ diff --git a/res/ffsend-demo.mp4 b/res/ffsend-demo.mp4 new file mode 100644 index 0000000..7017139 Binary files /dev/null and b/res/ffsend-demo.mp4 differ