Mises à jour diverses et nouvelles confs
This commit is contained in:
parent
feca6ab12f
commit
d2f0ec45de
43 changed files with 1633 additions and 1 deletions
|
@ -12,7 +12,6 @@ export PATH=~/.local/bin:$PATH
|
|||
|
||||
export HASTE_SERVER="https://haste.breizh.pm"
|
||||
export MPD_HOST="$HOME/.mpd/socket"
|
||||
export KRESUS_PYTHON_EXEC=python
|
||||
export MAGICK_TMPDIR="$HOME/.cache/ImageMagick/"
|
||||
export HIGHLIGHT_STYLE="base16/eighties"
|
||||
|
||||
|
|
1
.config/fish/conf.d/br.fish
Symbolic link
1
.config/fish/conf.d/br.fish
Symbolic link
|
@ -0,0 +1 @@
|
|||
/home/breizh/.local/share/broot/launcher/fish/1.fish
|
4
.config/fish/functions/mv.fish
Normal file
4
.config/fish/functions/mv.fish
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Defined in - @ line 1
|
||||
function mv --description 'alias mv advmv -g'
|
||||
advmv -g $argv;
|
||||
end
|
4
.config/fish/functions/màj.fish
Normal file
4
.config/fish/functions/màj.fish
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Defined in - @ line 1
|
||||
function màj --wraps='pikaur -Syu' --description 'alias màj pikaur -Syu'
|
||||
pikaur -Syu $argv;
|
||||
end
|
21
.config/fisherman/await/LICENSE
Normal file
21
.config/fisherman/await/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Jorge Bucaran
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
50
.config/fisherman/await/README.md
Normal file
50
.config/fisherman/await/README.md
Normal file
|
@ -0,0 +1,50 @@
|
|||
[slack-link]: https://fisherman-wharf.herokuapp.com/
|
||||
[slack-badge]: https://fisherman-wharf.herokuapp.com/badge.svg
|
||||
[fisherman]: https://github.com/fisherman/fisherman
|
||||
|
||||
[![Slack Room][slack-badge]][slack-link]
|
||||
|
||||
# Await
|
||||
|
||||
Wait for background jobs.
|
||||
|
||||
## Install
|
||||
|
||||
With [fisherman]
|
||||
|
||||
```
|
||||
fisher await
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Wait until all existing jobs have finished.
|
||||
|
||||
```fish
|
||||
await
|
||||
```
|
||||
|
||||
Wait until the given jobs are finished.
|
||||
|
||||
```fish
|
||||
set -l id_list
|
||||
|
||||
for cmd in $commands
|
||||
fish -c "$cmd" &
|
||||
set id_list $id_list (last_job_id -l)
|
||||
end
|
||||
|
||||
await $id_list
|
||||
```
|
||||
|
||||
Customize spinners.
|
||||
|
||||
```fish
|
||||
set await_spinners ◢ ◣ ◤ ◥
|
||||
```
|
||||
|
||||
Customize interval between spinners.
|
||||
|
||||
```fish
|
||||
set await_interval 0.1
|
||||
```
|
1
.config/fisherman/await/fishfile
Normal file
1
.config/fisherman/await/fishfile
Normal file
|
@ -0,0 +1 @@
|
|||
fisherman/last_job_id
|
42
.config/fisherman/await/functions/await.fish
Normal file
42
.config/fisherman/await/functions/await.fish
Normal file
|
@ -0,0 +1,42 @@
|
|||
function await -d "Wait for background jobs"
|
||||
if test -z "$argv"
|
||||
set argv (last_job_id)
|
||||
end
|
||||
|
||||
set -l spinners "$await_spinners"
|
||||
set -l interval "$await_interval"
|
||||
|
||||
if test -z "$spinners"
|
||||
set spinners ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
|
||||
end
|
||||
|
||||
if test -z "$interval"
|
||||
set interval 0.05
|
||||
end
|
||||
|
||||
while true
|
||||
for spinner in $spinners
|
||||
printf " $spinner \r" > /dev/stderr
|
||||
sleep "$interval"
|
||||
end
|
||||
|
||||
set -l currently_active_jobs (last_job_id)
|
||||
|
||||
if test -z "$currently_active_jobs"
|
||||
break
|
||||
end
|
||||
|
||||
set -l has_jobs
|
||||
|
||||
for i in $argv
|
||||
if builtin contains -- $i $currently_active_jobs
|
||||
set has_jobs "*"
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if test -z "$has_jobs"
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
8
.config/fisherman/getopts/.travis.yml
Normal file
8
.config/fisherman/getopts/.travis.yml
Normal file
|
@ -0,0 +1,8 @@
|
|||
sudo: required
|
||||
before_install:
|
||||
- sudo add-apt-repository -y ppa:fish-shell/release-2
|
||||
- sudo apt-get update
|
||||
- sudo apt-get -y install fish
|
||||
script:
|
||||
- curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman
|
||||
- fish -c "fisher fishtape .; fishtape test/*.fish"
|
21
.config/fisherman/getopts/LICENSE
Normal file
21
.config/fisherman/getopts/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Jorge Bucaran
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
78
.config/fisherman/getopts/README.md
Normal file
78
.config/fisherman/getopts/README.md
Normal file
|
@ -0,0 +1,78 @@
|
|||
[![Build Status][travis-badge]][travis-link]
|
||||
[![Slack Room][slack-badge]][slack-link]
|
||||
|
||||
# Getopts
|
||||
|
||||
**Getopts** is a command line options parser for [fish].
|
||||
|
||||
```fish
|
||||
getopts -ab1 --foo=bar baz | while read -l key value
|
||||
switch $key
|
||||
case _
|
||||
echo "$value" # baz
|
||||
case a
|
||||
echo "$value" # ""
|
||||
case b
|
||||
echo "$value" # 1
|
||||
case foo
|
||||
echo "$value" # bar
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
## Install
|
||||
|
||||
With [fisherman]
|
||||
|
||||
```
|
||||
fisher getopts
|
||||
```
|
||||
|
||||
With curl.
|
||||
|
||||
```sh
|
||||
curl -Lo ~/.config/fish/functions/getopts.fish --create-dirs git.io/getopts
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Study the output in the following example
|
||||
|
||||
```fish
|
||||
getopts -ab1 --foo=bar baz
|
||||
```
|
||||
|
||||
```
|
||||
a
|
||||
b 1
|
||||
foo bar
|
||||
_ baz
|
||||
```
|
||||
|
||||
The items on the left are the option flags. The items on the right are the option values. The underscore `_` character is the default *key* for bare arguments.
|
||||
|
||||
Use read(1) to process the generated stream and switch(1) to match patterns
|
||||
|
||||
```fish
|
||||
getopts -ab1 --foo=bar baz | while read -l key option
|
||||
switch $key
|
||||
case _
|
||||
case a
|
||||
case b
|
||||
case foo
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
* A double dash, `--`, marks the end of options. Arguments after this sequence are placed in the default underscore key, `_`.
|
||||
|
||||
[travis-link]: https://travis-ci.org/fisherman/getopts
|
||||
[travis-badge]: https://img.shields.io/travis/fisherman/getopts.svg
|
||||
|
||||
[slack-link]: https://fisherman-wharf.herokuapp.com
|
||||
[slack-badge]: https://fisherman-wharf.herokuapp.com/badge.svg
|
||||
|
||||
[fish]: https://fishshell.com
|
||||
[fisherman]: https://github.com/fisherman/fisherman
|
82
.config/fisherman/getopts/getopts.fish
Normal file
82
.config/fisherman/getopts/getopts.fish
Normal file
|
@ -0,0 +1,82 @@
|
|||
function getopts -d "cli parser"
|
||||
if not set -q argv[1]
|
||||
return
|
||||
end
|
||||
|
||||
printf "%s\n" $argv | awk '
|
||||
function out(k,v) {
|
||||
print(k "" (v == "" ? "" : " "v))
|
||||
}
|
||||
|
||||
function pop() {
|
||||
return len <= 0 ? "_" : opt[len--]
|
||||
}
|
||||
|
||||
{
|
||||
if (done) {
|
||||
out("_" , $0)
|
||||
next
|
||||
}
|
||||
|
||||
if (match($0, "^-[A-Za-z]+")) {
|
||||
$0 = "- " substr($0, 2, RLENGTH - 1) " " substr($0, RLENGTH + 1)
|
||||
|
||||
} else if (match($0, "^--[A-Za-z0-9_-]+")) {
|
||||
$0 = "-- " substr($0, 3, RLENGTH - 2) " " substr($0, RLENGTH + 2)
|
||||
}
|
||||
|
||||
if ($1 == "--" && $2 == "") {
|
||||
done = 1
|
||||
|
||||
} else if ($2 == "" || $1 !~ /^-|^--/ ) {
|
||||
out(pop(), $0)
|
||||
|
||||
} else {
|
||||
while (len) {
|
||||
out(pop())
|
||||
}
|
||||
|
||||
if ($3 != "") {
|
||||
if (match($0, $2)) {
|
||||
$3 = substr($0, RSTART + RLENGTH + 1)
|
||||
}
|
||||
}
|
||||
|
||||
if ($1 == "--") {
|
||||
if ($3 == "") {
|
||||
opt[++len] = $2
|
||||
} else {
|
||||
out($2, $3)
|
||||
}
|
||||
}
|
||||
|
||||
if ($1 == "-") {
|
||||
if ($2 == "") {
|
||||
print($1)
|
||||
next
|
||||
|
||||
} else {
|
||||
n = split($2, keys, "")
|
||||
}
|
||||
|
||||
if ($3 == "") {
|
||||
opt[++len] = keys[n]
|
||||
|
||||
} else {
|
||||
out(keys[n], $3)
|
||||
}
|
||||
|
||||
for (i = 1; i < n; i++) {
|
||||
out(keys[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
while (len) {
|
||||
out(pop())
|
||||
}
|
||||
}
|
||||
'
|
||||
end
|
69
.config/fisherman/getopts/man/man1/getopts.1
Normal file
69
.config/fisherman/getopts/man/man1/getopts.1
Normal file
|
@ -0,0 +1,69 @@
|
|||
.
|
||||
.TH "GETOPTS" "1" "February 2016" "" "fisherman"
|
||||
.
|
||||
.SH "NAME"
|
||||
\fBgetopts\fR \- Command line options parser
|
||||
.
|
||||
.SH "SYNOPSIS"
|
||||
getopts \fIoptions\fR \.\.\.
|
||||
.
|
||||
.br
|
||||
.
|
||||
.SH "DESCRIPTION"
|
||||
\fBGetopts\fR is a command line options parser for fish\.
|
||||
.
|
||||
.SH "USAGE"
|
||||
Study the output in the following example
|
||||
.
|
||||
.IP "" 4
|
||||
.
|
||||
.nf
|
||||
|
||||
getopts \-ab1 \-\-foo=bar baz
|
||||
.
|
||||
.fi
|
||||
.
|
||||
.IP "" 0
|
||||
.
|
||||
.IP "" 4
|
||||
.
|
||||
.nf
|
||||
|
||||
a
|
||||
b 1
|
||||
foo bar
|
||||
_ baz
|
||||
.
|
||||
.fi
|
||||
.
|
||||
.IP "" 0
|
||||
.
|
||||
.P
|
||||
The items on the left are the option flags\. The items on the right are the option values\. The underscore \fB_\fR character is the default \fIkey\fR for bare arguments\.
|
||||
.
|
||||
.P
|
||||
Use read(1) to process the generated stream and switch(1) to match patterns
|
||||
.
|
||||
.IP "" 4
|
||||
.
|
||||
.nf
|
||||
|
||||
getopts \-ab1 \-\-foo=bar baz | while read \-l key option
|
||||
switch $key
|
||||
case _
|
||||
case a
|
||||
case b
|
||||
case foo
|
||||
end
|
||||
end
|
||||
.
|
||||
.fi
|
||||
.
|
||||
.IP "" 0
|
||||
.
|
||||
.SH "NOTES"
|
||||
.
|
||||
.IP "\(bu" 4
|
||||
A double dash, \fB\-\-\fR, marks the end of options\. Arguments after this sequence are placed in the default underscore key, \fB_\fR\.
|
||||
.
|
||||
.IP "" 0
|
104
.config/fisherman/getopts/test/getopts.fish
Normal file
104
.config/fisherman/getopts/test/getopts.fish
Normal file
|
@ -0,0 +1,104 @@
|
|||
test "only bare"
|
||||
"_ beer" = (getopts beer)
|
||||
end
|
||||
|
||||
test "bare and bare"
|
||||
"_ bar" "_ beer" = (getopts bar beer)
|
||||
end
|
||||
|
||||
test "bare first"
|
||||
"foo" "_ beer" = (getopts beer --foo)
|
||||
end
|
||||
|
||||
test "bare sequence"
|
||||
"_ foo" "_ bar" "_ baz" "_ quux" = (getopts foo bar baz quux)
|
||||
end
|
||||
|
||||
test "bare does not end opts"
|
||||
"a" "b 42" "_ beer" "foo" "bar" = (getopts -ab42 beer --foo --bar)
|
||||
end
|
||||
|
||||
test "only single"
|
||||
"f" "o" "o 42" = (getopts -foo42)
|
||||
end
|
||||
|
||||
test "single and single"
|
||||
"a" "b" "c" "x" "y" "z" = (getopts -abc -xyz)
|
||||
end
|
||||
|
||||
test "single and bare"
|
||||
"a" "b" "c bar" = (getopts -abc bar)
|
||||
end
|
||||
|
||||
test "single and value"
|
||||
"a bar" = (getopts -a bar)
|
||||
end
|
||||
|
||||
test "single w/ value and bare"
|
||||
"a" "b" "c ./" "_ bar" = (getopts -abc./ bar)
|
||||
end
|
||||
|
||||
test "single and double"
|
||||
"a" "b" "c" "foo" = (getopts -abc --foo)
|
||||
end
|
||||
|
||||
test "double"
|
||||
"foo" = (getopts --foo)
|
||||
end
|
||||
|
||||
test "double w/ value"
|
||||
"foo bar" = (getopts --foo=bar)
|
||||
end
|
||||
|
||||
test "double w/ value group"
|
||||
"foo bar" "bar foo" = (getopts --foo=bar --bar=foo)
|
||||
end
|
||||
|
||||
test "double w/ value and bare"
|
||||
"foo bar" "_ beer" = (getopts --foo=bar beer)
|
||||
end
|
||||
|
||||
test "double double"
|
||||
"foo" "bar" = (getopts --foo --bar)
|
||||
end
|
||||
|
||||
test "double w/ inner dashes"
|
||||
"foo-bar-baz" = (getopts --foo-bar-baz)
|
||||
end
|
||||
|
||||
test "double and single"
|
||||
"foo" "a" "b" "c" = (getopts --foo -abc)
|
||||
end
|
||||
|
||||
test "multiple double sequence"
|
||||
"foo" "bar" "secret 42" "_ baz" = (getopts --foo --bar --secret=42 baz)
|
||||
end
|
||||
|
||||
test "single double single w/ remaining bares"
|
||||
"f" "o" "o" "bar" "b" "a" "r norf" "_ baz" "_ quux" = (
|
||||
getopts -foo --bar -bar norf baz quux)
|
||||
end
|
||||
|
||||
test "double dash"
|
||||
"_ --foo" "_ bar" = (getopts -- --foo bar)
|
||||
end
|
||||
|
||||
test "single double dash"
|
||||
"a" "_ --foo" "_ bar" = (getopts -a -- --foo bar)
|
||||
end
|
||||
|
||||
test "bare and double dash"
|
||||
"foo bar" "_ baz" "_ foo" "_ --foo" = (getopts --foo=bar baz -- foo --foo)
|
||||
end
|
||||
|
||||
test "long string as a value"
|
||||
"f Fee fi fo fum" = (getopts -f "Fee fi fo fum")
|
||||
end
|
||||
|
||||
test "single and empty string"
|
||||
"f" = (getopts -f "")
|
||||
end
|
||||
|
||||
test "double and empty string"
|
||||
"foo" = (getopts --foo "")
|
||||
end
|
8
.config/fisherman/humanize_duration/.travis.yml
Normal file
8
.config/fisherman/humanize_duration/.travis.yml
Normal file
|
@ -0,0 +1,8 @@
|
|||
sudo: required
|
||||
before_install:
|
||||
- sudo add-apt-repository -y ppa:fish-shell/release-2
|
||||
- sudo apt-get update
|
||||
- sudo apt-get -y install fish
|
||||
script:
|
||||
- curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman
|
||||
- fish -c "fisher fishtape .; fishtape test/*.fish"
|
21
.config/fisherman/humanize_duration/LICENSE
Normal file
21
.config/fisherman/humanize_duration/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 bucaran
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
28
.config/fisherman/humanize_duration/README.md
Normal file
28
.config/fisherman/humanize_duration/README.md
Normal file
|
@ -0,0 +1,28 @@
|
|||
[![Build Status][travis-badge]][travis-link]
|
||||
[![Slack Room][slack-badge]][slack-link]
|
||||
|
||||
# Humanize_duration
|
||||
|
||||
Humanize a time interval for display.
|
||||
|
||||
## Install
|
||||
|
||||
With [fisherman]
|
||||
|
||||
```
|
||||
fisher humanize_duration
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```fish
|
||||
sleep 1
|
||||
echo $CMD_DURATION | humanize_duration
|
||||
1s 5ms
|
||||
```
|
||||
|
||||
[travis-link]: https://travis-ci.org/fisherman/humanize_duration
|
||||
[travis-badge]: https://img.shields.io/travis/fisherman/humanize_duration.svg
|
||||
[slack-link]: https://fisherman-wharf.herokuapp.com/
|
||||
[slack-badge]: https://fisherman-wharf.herokuapp.com/badge.svg
|
||||
[fisherman]: https://github.com/fisherman/fisherman
|
20
.config/fisherman/humanize_duration/humanize_duration.fish
Normal file
20
.config/fisherman/humanize_duration/humanize_duration.fish
Normal file
|
@ -0,0 +1,20 @@
|
|||
function humanize_duration -d "Humanize a time interval for display"
|
||||
command awk '
|
||||
function hmTime(time, stamp) {
|
||||
split("h:m:s:ms", units, ":")
|
||||
|
||||
for (i = 2; i >= -1; i--) {
|
||||
if (t = int( i < 0 ? time % 1000 : time / (60 ^ i * 1000) % 60 )) {
|
||||
stamp = stamp t units[sqrt((i - 2) ^ 2) + 1] " "
|
||||
}
|
||||
}
|
||||
if (stamp ~ /^ *$/) {
|
||||
return "0ms"
|
||||
}
|
||||
return substr(stamp, 1, length(stamp) - 1)
|
||||
}
|
||||
{
|
||||
print hmTime($0)
|
||||
}
|
||||
'
|
||||
end
|
31
.config/fisherman/humanize_duration/man/man1/humanize_time.1
Normal file
31
.config/fisherman/humanize_duration/man/man1/humanize_time.1
Normal file
|
@ -0,0 +1,31 @@
|
|||
.\" generated with Ronn/v0.7.3
|
||||
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
||||
.
|
||||
.TH "HUMANIZE_TIME" "1" "March 2016" "" "humanize_duration"
|
||||
.
|
||||
.SH "NAME"
|
||||
\fBhumanize_duration\fR \- Humanize a time interval for display
|
||||
.
|
||||
.SH "SYNOPSIS"
|
||||
echo \fImilliseconds elapsed\fR | humanize_duration
|
||||
.
|
||||
.br
|
||||
humanize_duration [\-\-help]
|
||||
.
|
||||
.br
|
||||
.
|
||||
.SH "OPTIONS"
|
||||
.
|
||||
.TP
|
||||
\-h, \-\-help
|
||||
Show usage help\.
|
||||
.
|
||||
.SH "EXAMPLES"
|
||||
.
|
||||
.nf
|
||||
|
||||
sleep 1
|
||||
echo $CMD_DURATION | humanize_duration
|
||||
1s 5ms
|
||||
.
|
||||
.fi
|
|
@ -0,0 +1,14 @@
|
|||
humanize_duration(1) -- Humanize a time interval for display
|
||||
============================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
humanize_duration<br>
|
||||
|
||||
## EXAMPLE
|
||||
|
||||
```fish
|
||||
sleep 1
|
||||
echo $CMD_DURATION | humanize_duration
|
||||
1s 5ms
|
||||
```
|
|
@ -0,0 +1,23 @@
|
|||
test "$TESTNAME"
|
||||
1ms = (echo 1 | humanize_duration)
|
||||
end
|
||||
|
||||
test "$TESTNAME"
|
||||
10ms = (echo 10 | humanize_duration)
|
||||
end
|
||||
|
||||
test "$TESTNAME"
|
||||
"1m 40s" = (echo 100000 | humanize_duration)
|
||||
end
|
||||
|
||||
test "$TESTNAME"
|
||||
"16m 40s" = (echo 1000000 | humanize_duration)
|
||||
end
|
||||
|
||||
test "$TESTNAME"
|
||||
"2h 46m 40s" = (echo 10000000 | humanize_duration)
|
||||
end
|
||||
|
||||
test "$TESTNAME"
|
||||
"27h 46m 40s" = (echo 100000000 | humanize_duration)
|
||||
end
|
21
.config/fisherman/lambda/LICENSE
Normal file
21
.config/fisherman/lambda/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Bruno Ferreira Pinto
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
33
.config/fisherman/lambda/README.md
Normal file
33
.config/fisherman/lambda/README.md
Normal file
|
@ -0,0 +1,33 @@
|
|||
### Lambda
|
||||
|
||||
[![MIT License](https://img.shields.io/badge/license-MIT-007EC7.svg?style=flat-square)](/LICENSE)
|
||||
[![Fish Shell Version](https://img.shields.io/badge/fish-v2.2.0-007EC7.svg?style=flat-square)](http://fishshell.com)
|
||||
|
||||
<br/>
|
||||
|
||||
#### Screenshot
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/hasanozgan/theme-lambda/master/screenshot.png">
|
||||
</p>
|
||||
|
||||
###### Added VirtualEnv Support
|
||||
![preview](http://i.imgur.com/fWurs47.png)
|
||||
|
||||
|
||||
#### Install
|
||||
|
||||
#### [Fisherman]
|
||||
|
||||
```fish
|
||||
fisher i lambda
|
||||
```
|
||||
|
||||
##### [Oh-My-Fish]
|
||||
|
||||
```fish
|
||||
omf install lambda
|
||||
```
|
||||
|
||||
[Fisherman]: https://github.com/fisherman/fisherman
|
||||
[Oh-My-Fish]: https://github.com/oh-my-fish/oh-my-fish
|
67
.config/fisherman/lambda/fish_prompt.fish
Normal file
67
.config/fisherman/lambda/fish_prompt.fish
Normal file
|
@ -0,0 +1,67 @@
|
|||
function fish_prompt
|
||||
# Cache exit status
|
||||
set -l last_status $status
|
||||
|
||||
# Just calculate these once, to save a few cycles when displaying the prompt
|
||||
if not set -q __fish_prompt_hostname
|
||||
set -g __fish_prompt_hostname (hostname|cut -d . -f 1)
|
||||
end
|
||||
if not set -q __fish_prompt_char
|
||||
switch (id -u)
|
||||
case 0
|
||||
set -g __fish_prompt_char '#'
|
||||
case '*'
|
||||
set -g __fish_prompt_char 'λ'
|
||||
end
|
||||
end
|
||||
|
||||
# Setup colors
|
||||
#use extended color pallete if available
|
||||
#if [[ $terminfo[colors] -ge 256 ]]; then
|
||||
# turquoise="%F{81}"
|
||||
# orange="%F{166}"
|
||||
# purple="%F{135}"
|
||||
# hotpink="%F{161}"
|
||||
# limegreen="%F{118}"
|
||||
#else
|
||||
# turquoise="%F{cyan}"
|
||||
# orange="%F{yellow}"
|
||||
# purple="%F{magenta}"
|
||||
# hotpink="%F{red}"
|
||||
# limegreen="%F{green}"
|
||||
#fi
|
||||
set -l normal (set_color normal)
|
||||
set -l white (set_color --bold normal)
|
||||
set -l turquoise (set_color cyan)
|
||||
set -l orange (set_color yellow)
|
||||
set -l hotpink (set_color red)
|
||||
set -l blue (set_color blue)
|
||||
set -l limegreen (set_color brgreen)
|
||||
set -l purple (set_color magenta)
|
||||
|
||||
# Configure __fish_git_prompt
|
||||
set -g __fish_git_prompt_char_stateseparator ' '
|
||||
set -g __fish_git_prompt_color F2F0EC
|
||||
set -g __fish_git_prompt_color_flags FFCC66
|
||||
set -g __fish_git_prompt_color_prefix white
|
||||
set -g __fish_git_prompt_color_suffix white
|
||||
set -g __fish_git_prompt_showdirtystate true
|
||||
set -g __fish_git_prompt_showuntrackedfiles true
|
||||
set -g __fish_git_prompt_showstashstate true
|
||||
set -g __fish_git_prompt_show_informative_status true
|
||||
|
||||
# Line 1
|
||||
echo -n $white'╭─'$hotpink$USER$white' at '$orange$__fish_prompt_hostname$white' in '$limegreen(pwd)$turquoise
|
||||
__fish_git_prompt " (%s)"
|
||||
echo
|
||||
|
||||
# Line 2
|
||||
echo -n $white'╰'
|
||||
# support for virtual env name
|
||||
if set -q VIRTUAL_ENV
|
||||
echo -n "($turquoise"(basename "$VIRTUAL_ENV")"$white)"
|
||||
end
|
||||
echo -n $white'─'$__fish_prompt_char $normal
|
||||
end
|
||||
|
||||
|
56
.config/fisherman/lambda/fish_right_prompt.fish
Normal file
56
.config/fisherman/lambda/fish_right_prompt.fish
Normal file
|
@ -0,0 +1,56 @@
|
|||
function fish_right_prompt
|
||||
set -l exit_code $status
|
||||
__tmux_prompt
|
||||
if test $exit_code -ne 0
|
||||
set_color red
|
||||
else
|
||||
set_color 666666
|
||||
end
|
||||
printf '%d' $exit_code
|
||||
set_color 666666
|
||||
printf ' < %s' (date +%H:%M:%S)
|
||||
set_color normal
|
||||
end
|
||||
|
||||
function __tmux_prompt
|
||||
set multiplexer (_is_multiplexed)
|
||||
|
||||
switch $multiplexer
|
||||
case screen
|
||||
set pane (_get_screen_window)
|
||||
case tmux
|
||||
set pane (_get_tmux_window)
|
||||
end
|
||||
|
||||
set_color 666666
|
||||
if test -z $pane
|
||||
echo -n ""
|
||||
else
|
||||
echo -n $pane' | '
|
||||
end
|
||||
end
|
||||
|
||||
function _get_tmux_window
|
||||
tmux lsw | grep active | sed 's/\*.*$//g;s/: / /1' | awk '{ print $2 "-" $1 }' -
|
||||
end
|
||||
|
||||
function _get_screen_window
|
||||
set initial (screen -Q windows; screen -Q echo "")
|
||||
set middle (echo $initial | sed 's/ /\n/g' | grep '\*' | sed 's/\*\$ / /g')
|
||||
echo $middle | awk '{ print $2 "-" $1 }' -
|
||||
end
|
||||
|
||||
function _is_multiplexed
|
||||
set multiplexer ""
|
||||
if test -z $TMUX
|
||||
else
|
||||
set multiplexer "tmux"
|
||||
end
|
||||
if test -z $WINDOW
|
||||
else
|
||||
set multiplexer "screen"
|
||||
end
|
||||
echo $multiplexer
|
||||
end
|
||||
|
||||
|
BIN
.config/fisherman/lambda/screenshot.png
Normal file
BIN
.config/fisherman/lambda/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 617 KiB |
8
.config/fisherman/last_job_id/.travis.yml
Normal file
8
.config/fisherman/last_job_id/.travis.yml
Normal file
|
@ -0,0 +1,8 @@
|
|||
sudo: required
|
||||
before_install:
|
||||
- sudo add-apt-repository -y ppa:fish-shell/release-2
|
||||
- sudo apt-get update
|
||||
- sudo apt-get -y install fish
|
||||
script:
|
||||
- curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman
|
||||
- fish -c "fisher fishtape .; fishtape test/*.fish"
|
21
.config/fisherman/last_job_id/LICENSE
Normal file
21
.config/fisherman/last_job_id/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Jorge Bucaran
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
28
.config/fisherman/last_job_id/README.md
Normal file
28
.config/fisherman/last_job_id/README.md
Normal file
|
@ -0,0 +1,28 @@
|
|||
[![Build Status][travis-badge]][travis-link]
|
||||
[![Slack Room][slack-badge]][slack-link]
|
||||
|
||||
# Last_job_id
|
||||
|
||||
Get the id of one or more existing jobs
|
||||
|
||||
## Install
|
||||
|
||||
With [fisherman]
|
||||
|
||||
```
|
||||
fisher last_job_id
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```fish
|
||||
if set -l i (last_job_id --last)
|
||||
printf "Most recent job: %%%i\n" $i
|
||||
end
|
||||
```
|
||||
|
||||
[travis-link]: https://travis-ci.org/fisherman/last_job_id
|
||||
[travis-badge]: https://img.shields.io/travis/fisherman/last_job_id.svg
|
||||
[slack-link]: https://fisherman-wharf.herokuapp.com/
|
||||
[slack-badge]: https://fisherman-wharf.herokuapp.com/badge.svg
|
||||
[fisherman]: https://github.com/fisherman/fisherman
|
14
.config/fisherman/last_job_id/last_job_id.fish
Normal file
14
.config/fisherman/last_job_id/last_job_id.fish
Normal file
|
@ -0,0 +1,14 @@
|
|||
function last_job_id -d "Get the id of one or more existing jobs"
|
||||
builtin jobs $argv | command awk -v FS=\t '
|
||||
/[0-9]+\t/{
|
||||
aJobs[++nJobs] = $1
|
||||
}
|
||||
END {
|
||||
for (i = 1; i <= nJobs; i++) {
|
||||
print(aJobs[i])
|
||||
}
|
||||
|
||||
exit nJobs == 0
|
||||
}
|
||||
'
|
||||
end
|
14
.config/fisherman/last_job_id/man/man1/last_job_id.md
Normal file
14
.config/fisherman/last_job_id/man/man1/last_job_id.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
last_job_id(1) -- Get the id of the last job to be started
|
||||
==========================================================
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
last_job_id<br>
|
||||
|
||||
## USAGE
|
||||
|
||||
```fish
|
||||
if set -l job_id (last_job_id)
|
||||
printf "The last job to be started: %%%i\n" $job_id
|
||||
end
|
||||
```
|
24
.config/fisherman/last_job_id/test/last_job_id.fish
Normal file
24
.config/fisherman/last_job_id/test/last_job_id.fish
Normal file
|
@ -0,0 +1,24 @@
|
|||
test "$TESTNAME - Get the id of the last job to be started"
|
||||
(
|
||||
sleep 0.2&
|
||||
set -l jobs_id (jobs -l | cut -d\t -f1)
|
||||
echo "$jobs_id"
|
||||
|
||||
) = (last_job_id)
|
||||
end
|
||||
|
||||
test "$TESTNAME - Set status to 1 if there are no jobs"
|
||||
1 = (
|
||||
|
||||
while true
|
||||
set -l has_jobs (jobs)
|
||||
if test -z "$has_jobs"
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
last_job_id
|
||||
echo $status
|
||||
|
||||
)
|
||||
end
|
21
.config/fisherman/termcolours/LICENSE
Normal file
21
.config/fisherman/termcolours/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2006 Marcel Bischoff
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
27
.config/fisherman/termcolours/README.md
Normal file
27
.config/fisherman/termcolours/README.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
[![Slack Room][slack-badge]][slack-link]
|
||||
|
||||
# termcolours
|
||||
|
||||
Simple function for fish to list available terminal colour names.
|
||||
|
||||
## Install
|
||||
|
||||
With [fisherman]
|
||||
|
||||
```
|
||||
fisher termcolours
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```fish
|
||||
termcolours
|
||||
```
|
||||
|
||||
## Screenshot
|
||||
|
||||
![screenshot](https://cloud.githubusercontent.com/assets/8317250/15145024/309e173c-16ee-11e6-91fa-f0e493d77682.png)
|
||||
|
||||
[slack-link]: https://fisherman-wharf.herokuapp.com/
|
||||
[slack-badge]: https://fisherman-wharf.herokuapp.com/badge.svg
|
||||
[fisherman]: https://github.com/fisherman/fisherman
|
11
.config/fisherman/termcolours/termcolours.fish
Normal file
11
.config/fisherman/termcolours/termcolours.fish
Normal file
|
@ -0,0 +1,11 @@
|
|||
function __termcolours
|
||||
set herrbischoff_tcolors (echo $TERM | grep -oE '2|4|8|16|32|64|128|256')
|
||||
for i in (seq 0 (math $herrbischoff_tcolors-1))
|
||||
printf "\x1b[38;5;%smcolour%s\n" $i $i
|
||||
end
|
||||
set -e herrbischoff_tcolors
|
||||
end
|
||||
|
||||
function termcolours
|
||||
__termcolours | pr --columns=4 -t -w100
|
||||
end
|
9
.config/fisherman/transfer/.travis.yml
Normal file
9
.config/fisherman/transfer/.travis.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
sudo: required
|
||||
before_install:
|
||||
- sudo add-apt-repository -y ppa:fish-shell/release-2
|
||||
- sudo apt-get update
|
||||
- sudo apt-get -y install fish
|
||||
script:
|
||||
- curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs https://git.io/fisher
|
||||
- fish -c "fisher transfer"
|
||||
- fish -c "transfer --help"
|
21
.config/fisherman/transfer/LICENSE
Executable file
21
.config/fisherman/transfer/LICENSE
Executable file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Sajjad Hashemian
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
31
.config/fisherman/transfer/README.md
Executable file
31
.config/fisherman/transfer/README.md
Executable file
|
@ -0,0 +1,31 @@
|
|||
[fisher]: https://github.com/jorgebucaran/fisher
|
||||
|
||||
# Transfer
|
||||
|
||||
Upload to <https://transfer.sh>
|
||||
|
||||
## Install
|
||||
|
||||
With [fisher]
|
||||
|
||||
```
|
||||
fisher sijad/transfer
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```fish
|
||||
transfer my-file.txt
|
||||
```
|
||||
|
||||
```fish
|
||||
transfer my-file.txt my-file-new-name.txt
|
||||
```
|
||||
|
||||
```fish
|
||||
echo my message text | transfer my-message.txt
|
||||
```
|
||||
|
||||
```fish
|
||||
cat my-file.txt | transfer my-file-new-name.txt
|
||||
```
|
1
.config/fisherman/transfer/fishfile
Normal file
1
.config/fisherman/transfer/fishfile
Normal file
|
@ -0,0 +1 @@
|
|||
getopts
|
58
.config/fisherman/transfer/transfer.fish
Executable file
58
.config/fisherman/transfer/transfer.fish
Executable file
|
@ -0,0 +1,58 @@
|
|||
function transfer -d "Upload to transfer.sh" -a file name
|
||||
|
||||
getopts $argv | while read -l 1 2
|
||||
switch "$1"
|
||||
case _
|
||||
continue
|
||||
|
||||
case h help
|
||||
echo "Usage: transfer [FILE] [NAME]"
|
||||
echo
|
||||
echo "Examples:"
|
||||
echo " transfer my-file.txt"
|
||||
echo " transfer my-file.txt my-file-new-name.txt"
|
||||
echo " echo my message text | transfer my-message.txt"
|
||||
echo " cat my-file.txt | transfer my-file-new-name.txt"
|
||||
return
|
||||
|
||||
case \*
|
||||
printf "transfer: '%s' is not a valid option\n" $1 >& 2
|
||||
transfer --help >& 2
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
set -l tmp (mktemp -t transferXXX)
|
||||
|
||||
if test -z $name
|
||||
if not isatty
|
||||
set name $file
|
||||
else if test -n "$file"
|
||||
set name (basename $file)
|
||||
end
|
||||
end
|
||||
|
||||
if test -z $name
|
||||
set name (random)
|
||||
end
|
||||
|
||||
if not isatty
|
||||
set file ""
|
||||
end
|
||||
|
||||
set name (echo $name | sed -e 's/[^a-zA-Z0-9._-]/-/g')
|
||||
set name (echo $name | sed -e 's/-\{1,\}/-/g')
|
||||
|
||||
if test -n "$file"
|
||||
if not test -r "$file"
|
||||
echo "transfer: can not read the file." > /dev/stderr
|
||||
return 1
|
||||
end
|
||||
curl --progress-bar --upload-file $file https://transfer.sh/$name >> $tmp
|
||||
else
|
||||
curl --progress-bar --upload-file - https://transfer.sh/$name >> $tmp
|
||||
end
|
||||
|
||||
cat $tmp
|
||||
rm -f $tmp
|
||||
end
|
35
.config/zathura/zathurarc
Normal file
35
.config/zathura/zathurarc
Normal file
|
@ -0,0 +1,35 @@
|
|||
# Base16 Eighties
|
||||
# Author: Chris Kempson (http://chriskempson.com)
|
||||
|
||||
set default-bg "#2d2d2d"
|
||||
set default-fg "#393939"
|
||||
|
||||
set statusbar-fg "#a09f93"
|
||||
set statusbar-bg "#515151"
|
||||
|
||||
set inputbar-bg "#2d2d2d"
|
||||
set inputbar-fg "#f2f0ec"
|
||||
|
||||
set notification-bg "#2d2d2d"
|
||||
set notification-fg "#f2f0ec"
|
||||
|
||||
set notification-error-bg "#2d2d2d"
|
||||
set notification-error-fg "#f2777a"
|
||||
|
||||
set notification-warning-bg "#2d2d2d"
|
||||
set notification-warning-fg "#f2777a"
|
||||
|
||||
set highlight-color "#ffcc66"
|
||||
set highlight-active-color "#6699cc"
|
||||
|
||||
set completion-bg "#393939"
|
||||
set completion-fg "#6699cc"
|
||||
|
||||
set completion-highlight-fg "#f2f0ec"
|
||||
set completion-highlight-bg "#6699cc"
|
||||
|
||||
set recolor-lightcolor "#2d2d2d"
|
||||
set recolor-darkcolor "#e8e6df"
|
||||
|
||||
set recolor "false"
|
||||
set recolor-keephue "false"
|
500
.local/bin/360plugin.lua
Normal file
500
.local/bin/360plugin.lua
Normal file
|
@ -0,0 +1,500 @@
|
|||
|
||||
|
||||
local yaw = 0.0
|
||||
local last_yaw = 0.0
|
||||
local init_yaw = 0.0
|
||||
|
||||
local pitch = 0.0
|
||||
local last_pitch = 0.0
|
||||
local init_pitch = 0.0
|
||||
|
||||
local roll = 0.0
|
||||
local last_roll = 0.0
|
||||
local init_roll = 0.0
|
||||
|
||||
local inputProjections = {
|
||||
"hequirect",
|
||||
"equirect",
|
||||
"fisheye",
|
||||
"pannini",
|
||||
"cylindrical",
|
||||
"sg"
|
||||
}
|
||||
local inputProjectionInd = 0
|
||||
local inputProjection = "hequirect"
|
||||
|
||||
local outputProjections = {
|
||||
"flat",
|
||||
"sg"
|
||||
}
|
||||
|
||||
local outputProjectionInd = 0
|
||||
local outputProjection = "flat"
|
||||
|
||||
local idfov=180.0
|
||||
local dfov=110.0
|
||||
local last_dfov = 110.0
|
||||
local init_dfov = 0.0
|
||||
|
||||
|
||||
local doit = 0.0
|
||||
local res = 1.0
|
||||
local dragging = false
|
||||
|
||||
local smoothMouse = true
|
||||
|
||||
local scaling = 'linear'
|
||||
|
||||
local in_stereo = 'sbs'
|
||||
|
||||
local h_flip = '0'
|
||||
local in_flip = ''
|
||||
|
||||
local interp = 'cubic'
|
||||
|
||||
local startTime = nil
|
||||
|
||||
local filterIsOn = false
|
||||
|
||||
local mousePos = {}
|
||||
local lasttimePos = nil
|
||||
local filename = nil
|
||||
|
||||
local fileobjectNumber = 0
|
||||
local fileobjectFilename = ''
|
||||
local videofilename = ''
|
||||
local file_object = nil
|
||||
|
||||
local ffmpegComamndList = {}
|
||||
|
||||
local openNewLogFile = function()
|
||||
if lasttimePos ~= nil then
|
||||
fileobjectNumber = fileobjectNumber+1
|
||||
end
|
||||
videofilename = mp.get_property('filename')
|
||||
fileobjectFilename = string.format('%s_3dViewHistory_%s.txt',videofilename,fileobjectNumber)
|
||||
file_object = io.open(fileobjectFilename, 'w')
|
||||
lasttimePos=nil
|
||||
end
|
||||
|
||||
|
||||
function SecondsToClock(seconds)
|
||||
local seconds = tonumber(seconds)
|
||||
if seconds <= 0 then
|
||||
return "00:00:00";
|
||||
else
|
||||
hours = string.format("%02.f", math.floor(seconds/3600));
|
||||
mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)));
|
||||
secs = string.format("%02.2f", seconds - hours*3600 - mins *60);
|
||||
return hours..":"..mins..":"..secs
|
||||
end
|
||||
end
|
||||
|
||||
local writeHeadPositionChange = function()
|
||||
|
||||
if filename == nil then
|
||||
filename = mp.get_property("path")
|
||||
end
|
||||
|
||||
if file_object == nil then
|
||||
return
|
||||
else
|
||||
local initPass=false
|
||||
if lasttimePos == nil then
|
||||
lasttimePos = mp.get_property("time-pos")
|
||||
startTime = lasttimePos
|
||||
initPass=true
|
||||
if lasttimePos == nil then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local newTimePos = mp.get_property("time-pos")
|
||||
|
||||
if newTimePos == nil then
|
||||
return
|
||||
end
|
||||
|
||||
local outputTs = string.format("%.3f-%.3f ",lasttimePos,newTimePos)
|
||||
local changedValues = {}
|
||||
local movementDuration = (newTimePos-lasttimePos)
|
||||
local maximumTimeoutReached = movementDuration > 5.0
|
||||
|
||||
if initPass or pitch ~= last_pitch or maximumTimeoutReached then
|
||||
changedValues[#changedValues+1]= string.format(", [expr] v360 pitch 'lerp(%.3f,%.3f,(T-%.3f)/%.3f)'",last_pitch,pitch,lasttimePos,movementDuration)
|
||||
end
|
||||
last_pitch=pitch
|
||||
|
||||
if initPass or yaw ~= last_yaw or maximumTimeoutReached then
|
||||
changedValues[#changedValues+1]= string.format(", [expr] v360 yaw 'lerp(%.3f,%.3f,(T-%.3f)/%.3f)'",last_yaw,yaw,lasttimePos,movementDuration)
|
||||
end
|
||||
last_yaw=yaw
|
||||
|
||||
|
||||
if initPass or roll ~= last_roll or maximumTimeoutReached then
|
||||
changedValues[#changedValues+1]= string.format(", [expr] v360 roll 'lerp(%.3f,%.3f,(T-%.3f)/%.3f)'",last_roll,roll,lasttimePos,movementDuration)
|
||||
end
|
||||
last_roll=roll
|
||||
|
||||
if initPass or dfov ~= last_dfov or maximumTimeoutReached then
|
||||
changedValues[#changedValues+1]= string.format(", [expr] v360 d_fov 'lerp(%.3f,%.3f,(T-%.3f)/%.3f)'",last_dfov,dfov,lasttimePos,movementDuration)
|
||||
end
|
||||
last_dfov=dfov
|
||||
|
||||
if initPass then
|
||||
init_pitch = pitch
|
||||
init_yaw = yaw
|
||||
init_roll = roll
|
||||
init_dfov = dfov
|
||||
end
|
||||
|
||||
if #changedValues > 0 then
|
||||
local commandString = ''
|
||||
for k,changedValue in pairs(changedValues) do
|
||||
commandString = commandString .. changedValue
|
||||
end
|
||||
|
||||
commandString = commandString:sub(2)
|
||||
|
||||
commandString = outputTs .. commandString .. ';'
|
||||
|
||||
file_object:write(commandString .. '\n')
|
||||
lasttimePos = newTimePos
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local updateAwaiting = false
|
||||
local updateComplete = function()
|
||||
updateAwaiting = false
|
||||
end
|
||||
|
||||
local printRecordingStatus = function()
|
||||
local startts = startTime
|
||||
local endts = lasttimePos
|
||||
local currenttS = mp.get_property("time-pos")
|
||||
if file_object ~= nil and endts ~= nil and startts ~= nil then
|
||||
endts = math.max(endts,currenttS)
|
||||
mp.osd_message(string.format("Recording:%s",SecondsToClock(endts-startts)),10)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local updateFilters = function ()
|
||||
|
||||
if not filterIsOn then
|
||||
mp.command_native_async({"no-osd", "vf", "add", string.format("@vrrev:%sv360=%s:%s:in_stereo=%s:out_stereo=2d:id_fov=%s:d_fov=%.3f:yaw=%.3f:pitch=%s:roll=%.3f:w=%s*192.0:h=%.3f*108.0:h_flip=%s:interp=%s",in_flip,inputProjection,outputProjection,in_stereo,idfov,dfov,yaw,pitch,roll,res,res,h_flip,scaling)}, updateComplete)
|
||||
filterIsOn=true
|
||||
else
|
||||
if not updateAwaiting then
|
||||
updateAwaiting=true
|
||||
mp.command_native_async({"no-osd", "vf", "set", string.format("@vrrev:%sv360=%s:%s:in_stereo=%s:out_stereo=2d:id_fov=%s:d_fov=%.3f:yaw=%.3f:pitch=%s:roll=%.3f:w=%s*192.0:h=%.3f*108.0:h_flip=%s:interp=%s",in_flip,inputProjection,outputProjection,in_stereo,idfov,dfov,yaw,pitch,roll,res,res,h_flip,scaling)}, updateComplete)
|
||||
end
|
||||
filterIsOn=true
|
||||
end
|
||||
printRecordingStatus()
|
||||
writeHeadPositionChange()
|
||||
end
|
||||
|
||||
local mouse_btn0_cb = function ()
|
||||
dragging = not dragging
|
||||
if dragging then
|
||||
mp.set_property("cursor-autohide", "always")
|
||||
else
|
||||
mp.set_property("cursor-autohide", "no")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local mouse_pan = function ()
|
||||
|
||||
|
||||
if dragging then
|
||||
|
||||
local MousePosx, MousePosy = mp.get_mouse_pos()
|
||||
local osd_w, osd_h = mp.get_property("osd-width"), mp.get_property("osd-height")
|
||||
|
||||
|
||||
local yawpc = ((MousePosx/osd_w)-0.5)*180
|
||||
local pitchpc = -((MousePosy/osd_h)-0.5)*180
|
||||
|
||||
local updateCrop = false
|
||||
|
||||
if smoothMouse then
|
||||
if yaw ~= yawpc and math.abs(yaw-yawpc)<0.1 then
|
||||
yaw = yawpc
|
||||
updateCrop=true
|
||||
yaw = math.max(-180,math.min(180,yaw))
|
||||
elseif yaw ~= yawpc then
|
||||
yaw = (yawpc+(yaw*5))/6
|
||||
yaw = math.max(-180,math.min(180,yaw))
|
||||
updateCrop=true
|
||||
end
|
||||
|
||||
if pitch ~= pitchpc and math.abs(pitch-pitchpc)<0.1 then
|
||||
pitch = pitchpc
|
||||
pitch = math.max(-180,math.min(180,pitch))
|
||||
updateCrop=true
|
||||
elseif pitch ~= pitchpc then
|
||||
pitch = (pitchpc+(pitch*5))/6
|
||||
pitch = math.max(-180,math.min(180,pitch))
|
||||
updateCrop=true
|
||||
end
|
||||
else
|
||||
if yaw ~= yawpc then
|
||||
yaw = yawpc
|
||||
yaw = math.max(-180,math.min(180,yaw))
|
||||
updateCrop=true
|
||||
end
|
||||
if pitch ~= pitchpc then
|
||||
pitch = pitchpc
|
||||
pitch = math.max(-180,math.min(180,pitch))
|
||||
updateCrop=true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if updateCrop then
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
local increment_res = function(inc)
|
||||
res = res+inc
|
||||
res = math.max(math.min(res,20),1)
|
||||
mp.osd_message(string.format("Out-Width: %spx",res*108.0),0.5)
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
local increment_roll = function (inc)
|
||||
roll = roll+inc
|
||||
updateFilters()
|
||||
mp.osd_message(string.format("Roll: %s°",roll),0.5)
|
||||
end
|
||||
|
||||
local increment_pitch = function (inc)
|
||||
pitch = pitch+inc
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
local increment_yaw = function (inc)
|
||||
yaw = yaw+inc
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
local increment_zoom = function (inc)
|
||||
dfov = dfov+inc
|
||||
dfov = math.max(math.min(150,dfov),30)
|
||||
mp.osd_message(string.format("D-Fov: %s°",dfov),0.5)
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
local toggleSmoothMouse = function()
|
||||
smoothMouse = not smoothMouse
|
||||
if smoothMouse then
|
||||
mp.osd_message("Mouse smothing On",0.5)
|
||||
else
|
||||
mp.osd_message("Mouse smothing Off",0.5)
|
||||
end
|
||||
end
|
||||
|
||||
local switchScaler = function()
|
||||
if scaling == 'nearest' then
|
||||
scaling = 'cubic'
|
||||
elseif scaling == 'cubic' then
|
||||
scaling = 'lagrange9'
|
||||
elseif scaling == 'lagrange9' then
|
||||
scaling = 'lanczos'
|
||||
elseif scaling == 'lanczos' then
|
||||
scaling = 'linear'
|
||||
elseif scaling == 'linear' then
|
||||
scaling = 'nearest'
|
||||
end
|
||||
mp.osd_message("Scaling algorithm: " .. scaling,5.5)
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
local switchEye = function()
|
||||
if h_flip == '0' then
|
||||
h_flip = '1'
|
||||
in_flip = 'hflip,'
|
||||
mp.osd_message("Right eye",0.5)
|
||||
else
|
||||
h_flip = '0'
|
||||
in_flip = ''
|
||||
mp.osd_message("Left eye",0.5)
|
||||
end
|
||||
print(ih_flip,h_flip)
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
|
||||
local cycleInputProjection = function()
|
||||
inputProjectionInd = ((inputProjectionInd+1) % (#inputProjections +1))
|
||||
inputProjection = inputProjections[inputProjectionInd]
|
||||
mp.osd_message(string.format("Input projection: %s ",inputProjection),0.5)
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
local cycleOutputProjection = function()
|
||||
outputProjectionInd = ((outputProjectionInd+1) % (#outputProjections + 1))
|
||||
outputProjection = outputProjections[outputProjectionInd]
|
||||
mp.osd_message(string.format("Output projection: %s",outputProjection),0.5)
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
|
||||
local switchInputFovBounds = function()
|
||||
if idfov == 180.0 then
|
||||
idfov = 360.0
|
||||
elseif idfov == 360.0 then
|
||||
idfov = 90.0
|
||||
else
|
||||
idfov = 180.0
|
||||
end
|
||||
mp.osd_message(string.format("Input fov bounds: %s°",idfov),0.5)
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
local switchStereoMode = function()
|
||||
if in_stereo == 'sbs' then
|
||||
in_stereo = 'tb'
|
||||
else
|
||||
in_stereo = 'sbs'
|
||||
end
|
||||
mp.osd_message("Input format: " .. in_stereo,0.5)
|
||||
updateFilters()
|
||||
end
|
||||
|
||||
local showHelp = function()
|
||||
mp.osd_message("Keyboard and Mouse Controls:\n? = show help\ny,h = adjust quality\ni,j,k,l,mouseClick = Look around\nu,i = roll head\n-,=,mouseWheel = zoom\nr = switch SetereoMode\nt = switch Eye\ne = switch Scaler\ng = toggle mouse smothing\nn = start and stop motion recording\n1,2 - cycle in and out projections",10)
|
||||
end
|
||||
|
||||
local closeCurrentLog = function()
|
||||
commandForFinalLog=''
|
||||
if lasttimePos ~= nil and file_object ~= nil then
|
||||
|
||||
finalTimeStamp = mp.get_property("time-pos")
|
||||
|
||||
file_object:write('#\n')
|
||||
|
||||
local stats = string.format( '# Duration: %s-%s (total %s) %s seconds',
|
||||
SecondsToClock(startTime),SecondsToClock(finalTimeStamp),SecondsToClock(finalTimeStamp-startTime),finalTimeStamp-startTime )
|
||||
|
||||
print('#')
|
||||
file_object:write( stats .. '\n')
|
||||
print(stats)
|
||||
|
||||
file_object:write( '# Suggested ffmpeg conversion command:\n')
|
||||
|
||||
local closingCommandComment = string.format('ffmpeg -y -ss %s -i "%s" -to %s -copyts -filter_complex "%sv360=%s:%s:in_stereo=%s:out_stereo=2d:id_fov=%s:d_fov=%.3f:yaw=%.3f:pitch=%.3f:roll=%.3f:w=1920.0:h=1080.0:interp=cubic:h_flip=%s,sendcmd=filename=%s_3dViewHistory_%s.txt" -avoid_negative_ts make_zero -preset slower -crf 17 "%s_2d_%03d.mp4"',
|
||||
startTime,filename,finalTimeStamp,in_flip,inputProjection,outputProjection,in_stereo,idfov,init_dfov,init_yaw,init_pitch,init_roll,h_flip,videofilename,fileobjectNumber,videofilename,fileobjectNumber
|
||||
)
|
||||
|
||||
|
||||
file_object:write('# ' .. closingCommandComment .. '\n')
|
||||
file_object:write('#\n')
|
||||
|
||||
print(closingCommandComment)
|
||||
print('#')
|
||||
|
||||
commandForFinalLog = closingCommandComment
|
||||
end
|
||||
if file_object ~= nil then
|
||||
file_object:close()
|
||||
file_object = nil
|
||||
end
|
||||
return commandForFinalLog
|
||||
end
|
||||
|
||||
local startNewLogSession = function()
|
||||
if file_object == nil then
|
||||
openNewLogFile()
|
||||
writeHeadPositionChange()
|
||||
mp.osd_message(string.format("Start Motion Record %s_3dViewHistory_%s.txt",videofilename,fileobjectNumber),0.5)
|
||||
else
|
||||
mp.osd_message(string.format("Stop Motion Record %s_3dViewHistory_%s.txt",videofilename,fileobjectNumber),0.5)
|
||||
writeHeadPositionChange()
|
||||
local command = closeCurrentLog()
|
||||
if command then
|
||||
ffmpegComamndList[#ffmpegComamndList+1] = command
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
local onExit = function()
|
||||
closeCurrentLog()
|
||||
mergedCommand = ''
|
||||
for k,v in pairs(ffmpegComamndList) do
|
||||
if v ~= '' then
|
||||
mergedCommand = mergedCommand .. ' & ' .. v
|
||||
end
|
||||
end
|
||||
if mergedCommand ~= '' then
|
||||
mergedCommand = mergedCommand:sub(3)
|
||||
print(mergedCommand)
|
||||
batchfile = io.open('convert_3dViewHistory.bat', 'w')
|
||||
batchfile:write(mergedCommand)
|
||||
batchfile:close()
|
||||
print('Batch processing file created convert_3dViewHistory.bat')
|
||||
else
|
||||
print('No head motions logged')
|
||||
end
|
||||
end
|
||||
|
||||
local recordingStatusTimer = nil
|
||||
|
||||
local initFunction = function()
|
||||
|
||||
mp.add_forced_key_binding("1", cycleInputProjection )
|
||||
mp.add_forced_key_binding("2", cycleOutputProjection )
|
||||
|
||||
mp.add_forced_key_binding("u", function() increment_roll(-1) end, 'repeatable')
|
||||
mp.add_forced_key_binding("o", function() increment_roll(1) end, 'repeatable')
|
||||
|
||||
mp.add_forced_key_binding("v", writeHeadPositionChange)
|
||||
|
||||
mp.add_forced_key_binding("i", function() increment_pitch(1) end, 'repeatable')
|
||||
mp.add_forced_key_binding("k", function() increment_pitch(-1) end, 'repeatable')
|
||||
mp.add_key_binding("l", function() increment_yaw(1) end, 'repeatable')
|
||||
mp.add_key_binding("j", function() increment_yaw(-1) end, 'repeatable')
|
||||
mp.add_key_binding("c", "easy_crop", updateFilters)
|
||||
|
||||
mp.add_forced_key_binding("y", function() increment_res(1) end, 'repeatable')
|
||||
mp.add_forced_key_binding("h", function() increment_res(-1) end, 'repeatable')
|
||||
|
||||
mp.add_forced_key_binding("=", function() increment_zoom(-1) end, 'repeatable')
|
||||
mp.add_forced_key_binding("-", function() increment_zoom(1) end, 'repeatable')
|
||||
|
||||
mp.add_forced_key_binding("WHEEL_DOWN", function() increment_zoom(1) end)
|
||||
mp.add_forced_key_binding("WHEEL_UP", function() increment_zoom(-1) end)
|
||||
|
||||
mp.add_forced_key_binding("r", switchStereoMode)
|
||||
mp.add_forced_key_binding("t", switchEye)
|
||||
mp.add_forced_key_binding("e", switchScaler)
|
||||
mp.add_forced_key_binding("g", toggleSmoothMouse)
|
||||
mp.add_forced_key_binding("b", switchInputFovBounds)
|
||||
mp.add_forced_key_binding("n", startNewLogSession)
|
||||
|
||||
mp.set_property("osc", "no")
|
||||
mp.set_property("fullscreen", "yes")
|
||||
mp.set_property("osd-font-size", "30")
|
||||
mp.add_forced_key_binding("mouse_btn0",mouse_btn0_cb)
|
||||
mp.add_forced_key_binding("mouse_move", mouse_pan)
|
||||
|
||||
mp.add_forced_key_binding("?", showHelp)
|
||||
mp.add_forced_key_binding("/", showHelp)
|
||||
|
||||
mp.register_event("end-file", onExit)
|
||||
mp.register_event("shutdown", onExit)
|
||||
|
||||
recordingStatusTimer = mp.add_periodic_timer(0.1,printRecordingStatus)
|
||||
|
||||
updateFilters()
|
||||
|
||||
end
|
||||
|
||||
mp.register_event("file-loaded", initFunction)
|
3
.local/bin/mpv3d
Executable file
3
.local/bin/mpv3d
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
exec /usr/bin/mpv --script=/home/breizh/.local/bin/360plugin.lua "$@"
|
Loading…
Reference in a new issue