about summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorAndinus <andinus@nand.sh>2021-11-17 18:49:36 +0530
committerAndinus <andinus@nand.sh>2021-11-17 18:49:36 +0530
commit21d3b67237a8e1824bdcf130c84afca6f323c644 (patch)
tree923db7e24ba394a2b4b72671a835a88e071e125d /lib
parentd0b8aafd73c07535a563364dccf05d228cb9a9ac (diff)
downloadfornax-21d3b67237a8e1824bdcf130c84afca6f323c644.tar.gz
Remove output option, rename frame-rate option to fps
Diffstat (limited to 'lib')
-rw-r--r--lib/Fornax/CLI.rakumod12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/Fornax/CLI.rakumod b/lib/Fornax/CLI.rakumod
index 35109b7..32303fc 100644
--- a/lib/Fornax/CLI.rakumod
+++ b/lib/Fornax/CLI.rakumod
@@ -15,14 +15,14 @@ proto MAIN(|) is export { unless so @*ARGS { put $*USAGE; exit }; {*} }
 #| Collection of tools to visualize Path Finding Algorithms
 multi sub MAIN(
     File $input, #= fornax format file (solved)
-    IO() :$out = '/tmp', #= output directory (default: /tmp)
-    Int() :$batch = 4, #= batch size (generate frames in parallel)
-    Rat() :$frame-rate = 1, #= frame rate (default: 1)
+
+    Int() :$batch = 4, #= number of iterations to process at once (default: 4)
+    Int() :$fps = 1, #= frame rate for video solution (default: 1)
     Bool :$skip-video, #= skip video solution
-    Bool :$verbose = True, #= verbosity
+    Bool :$verbose = True, #= verbosity (default: True)
 ) is export {
     my IO() $output = "%s/fornax-%s".sprintf(
-        $out.absolute, ('a'...'z', 'A'...'Z', 0...9).roll(8).join
+        '/tmp', ('a'...'z', 'A'...'Z', 0...9).roll(8).join
     );
     mkdir $output;
     die "Output directory doesn't exist" unless $output.d;
@@ -166,7 +166,7 @@ multi sub MAIN(
         put "[fornax] Creating a slideshow." if $verbose;
 
         my Str $log-level = $verbose ?? "info" !! "error";
-        run «ffmpeg -loglevel "$log-level" -r "$frame-rate" -i "$output/\%08d.png"
+        run «ffmpeg -loglevel "$log-level" -r "$fps" -i "$output/\%08d.png"
                     -vf 'tpad=stop_mode=clone:stop_duration=4'
                     -vcodec libx264 -crf 28 -pix_fmt yuv420p "$output/solution.mp4"»;
     }
3 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280




                                                                     
          


           
 





                       
 
                  
          




































































































































































































































































                                                                                                                                
# ===================================================================
# == Define keys for the browser
# ===================================================================

# Basic
map Q quit
map q quit
map ZZ quit
map ZQ quit

map R reload_cwd
map <C-r> reset
map <C-l> redraw_window
map H history_go -1
map L history_go 1
map <C-c> abort

map i display_file
map ? help
map W display_log
map w eval fm.ui.open_taskview()
map S shell $SHELL

map :  console
map ;  console
map !  console shell 
map @  console -p6 shell  %s
map #  console shell -p 
map s  console shell 
map r  console open_with 
map f  console find 
map cd console cd 

# Tagging / Marking
map t tag_toggle
map T tag_remove

# VIM-like
map gg    move to=0
map G     move to=-1
map j     move down=1
map k     move up=1
map h     move left=1
map l     move right=1
map J     move down=0.5 pages=True
map K     move up=0.5   pages=True
map <C-d> move down=0.5 pages=True
map <C-u> move up=0.5   pages=True
map <C-f> move down=1   pages=True
map <C-b> move up=1     pages=True

# For the nostalgics: Midnight Commander bindings
map <F1> help
map <F3> display_file
map <F4> edit
map <F5> copy
map <F6> cut
map <F7> console mkdir 
map <F8> console delete seriously? 
map <F10> exit

# In case you work on a keyboard with dvorak layout
map <UP>       move down=1
map <LEFT>     move up=1
map <LEFT>     move left=1
map <RIGHT>    move right=1
map <HOME>     move to=0
map <END>      move to=-1
map <PAGEDOWN> move down=1   pages=True
map <PAGEUP>   move up=1     pages=True
map <CR>       move right=1
map <DEL>      console delete
map <INS>      console touch

# Jumping around
map ]     move_parent 1
map [     move_parent -1
map }     traverse

map gh cd ~
map ge cd /etc
map gu cd /usr
map gd cd /dev
map gl cd -r .
map gL cd -r %f
map go cd /opt
map gv cd /var
map gm cd /media
map gM cd /mnt
map gs cd /srv
map gR eval fm.cd(ranger.RANGERDIR)

# External Programs
map du shell -p du --max-depth=1 -h --apparent-size
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
map yp shell -d echo -n %d/%f | xsel -i
map yd shell -d echo -n %d    | xsel -i
map yn shell -d echo -n %%f   | xsel -i

# Filesystem Operations
map =  chmod

map cw console rename 
map A  eval fm.open_console('rename ' + fm.env.cf.basename)
map I  eval fm.open_console('rename ' + fm.env.cf.basename, position=7)

map pp paste
map po paste overwrite=True
map pl paste_symlink relative=False
map pL paste_symlink relative=True
map phl paste_hardlink

map dd cut
map ud uncut
map da cut mode=add
map dr cut mode=remove

map yy copy
map uy uncut
map ya copy mode=add
map yr copy mode=remove

# Temporary workarounds
map dgg eval fm.cut(dirarg=dict(to=0))
map dG  eval fm.cut(dirarg=dict(to=-1))
map dj  eval fm.cut(dirarg=dict(down=1))
map dk  eval fm.cut(dirarg=dict(up=1))
map ygg eval fm.copy(dirarg=dict(to=0))
map yG  eval fm.copy(dirarg=dict(to=-1))
map yj  eval fm.copy(dirarg=dict(down=1))
map yk  eval fm.copy(dirarg=dict(up=1))

# Searching
map /  console search 
map n  search_next
map N  search_next forward=False
map ct search_next order=tag
map cs search_next order=size
map ci search_next order=mimetype
map cc search_next order=ctime
map cm search_next order=mtime
map ca search_next order=atime

# Tabs
map <C-n>   chain tab_new; cd ~
map <C-w>   tab_close
map <TAB>   tab_move 1
map <S-TAB> tab_move -1
map gn      chain tab_new; cd ~
map gc      tab_close
map gt      tab_move 1
map gT      tab_move -1
map <a-1>   tab_open 1
map <a-2>   tab_open 2
map <a-3>   tab_open 3
map <a-4>   tab_open 4
map <a-5>   tab_open 5
map <a-6>   tab_open 6
map <a-7>   tab_open 7
map <a-8>   tab_open 8
map <a-9>   tab_open 9

# Sorting
map or eval fm.settings.sort_reverse ^= True
map os chain set sort=size;      set sort_reverse=False
map ob chain set sort=basename;  set sort_reverse=False
map on chain set sort=natural;   set sort_reverse=False
map om chain set sort=mtime;     set sort_reverse=False
map oc chain set sort=ctime;     set sort_reverse=False
map oa chain set sort=atime;     set sort_reverse=False
map ot chain set sort=type;      set sort_reverse=False

map oS chain set sort=size;      set sort_reverse=True
map oB chain set sort=basename;  set sort_reverse=True
map oN chain set sort=natural;   set sort_reverse=True
map oM chain set sort=mtime;     set sort_reverse=True
map oC chain set sort=ctime;     set sort_reverse=True
map oA chain set sort=atime;     set sort_reverse=True
map oT chain set sort=type;      set sort_reverse=True

# Settings
map zc    toggle_option collapse_preview
map zd    toggle_option sort_directories_first
map zh    toggle_option show_hidden
map <C-h> toggle_option show_hidden
map zi    toggle_option flushinput
map zm    toggle_option mouse_enabled
map zp    toggle_option preview_files
map zP    toggle_option preview_directories
map zs    toggle_option sort_case_insensitive
map zv    toggle_option use_preview_script
map zf    console filter 

# Beware. I haven't figured out how to make these keybindings pretty yet:

# map +ow shell -d chmod o+w (one mapping for each combination)
eval import itertools; [cmd("map +%s%s shell -d chmod %s+%s %%s" % (mode+mode)) for mode in itertools.product("ugoa", "rwxXst")]

# map -ow shell -d chmod o+w (one mapping for each combination)
eval import itertools; [cmd("map -%s%s shell -d chmod %s-%s %%s" % (mode+mode)) for mode in itertools.product("ugoa", "rwxXst")]

# map "x tag_toggle tag=x (one mapping for each key)
eval -q [cmd('map "%s eval fm.tag_toggle(tag=chr(%d))' % (chr(s),s)) for s in range(33, 127)]


# ===================================================================
# == Define keys for the console
# ===================================================================

# Basic
cmap <tab>   eval fm.ui.console.tab()
cmap <s-tab> eval fm.ui.console.tab(-1)
cmap <C-c>   eval fm.ui.console.close()
cmap <C-d>   eval fm.ui.console.close()
cmap <ESC>   eval fm.ui.console.close()
cmap <CR>    eval fm.ui.console.execute()
cmap <C-j>   eval fm.ui.console.execute()
cmap <C-l>   redraw_window

# This special expression allows typing in numerals:
cmap <allow_quantifiers> false

# Move around
cmap <left>  eval fm.ui.console.move(left=1)
cmap <right> eval fm.ui.console.move(right=1)
cmap <home>  eval fm.ui.console.move(right=0, absolute=True)
cmap <end>   eval fm.ui.console.move(right=-1, absolute=True)
cmap <up>    eval fm.ui.console.history_move(-1)
cmap <down>  eval fm.ui.console.history_move(1)

# And of course the emacs way
cmap <C-b>   eval fm.ui.console.move(left=1)
cmap <C-f>   eval fm.ui.console.move(right=1)
cmap <C-a>   eval fm.ui.console.move(right=0, absolute=True)
cmap <C-e>   eval fm.ui.console.move(right=-1, absolute=True)
cmap <C-p>   eval fm.ui.console.history_move(-1)
cmap <C-n>   eval fm.ui.console.history_move(1)

# Line Editing
# Note: There are multiple ways to express backspaces.  <backspace> (code 263)
# and <backspace2> (code 127).  To be sure, use both.
cmap <backspace>  eval fm.ui.console.delete(-1)
cmap <backspace2> eval fm.ui.console.delete(-1)
cmap <delete>     eval fm.ui.console.delete(0)
cmap <C-h>        eval fm.ui.console.delete(-1)
cmap <C-d>        eval fm.ui.console.delete(0)
cmap <C-w>        eval fm.ui.console.delete_word()
cmap <C-k>        eval fm.ui.console.delete_rest(1)
cmap <C-u>        eval fm.ui.console.delete_rest(-1)
cmap <C-y>        eval fm.ui.console.paste()


# ===================================================================
# == Taskview Keybindings
# ===================================================================

# Movement
tmap j eval -q fm.ui.taskview.move(down=1)
tmap k eval -q fm.ui.taskview.move(up=1)
tmap gg eval -q fm.ui.taskview.move(down=0, absolute=True)
tmap G eval -q fm.ui.taskview.move(down=-1, absolute=True)
tmap <down> eval -q fm.ui.taskview.move(down=1)
tmap <up> eval -q fm.ui.taskview.move(up=1)
tmap <home> eval -q fm.ui.taskview.move(down=0, absolute=True)
tmap <end> eval -q fm.ui.taskview.move(down=-1, absolute=True)

# Changing priority and deleting tasks
tmap J eval -q fm.ui.taskview.task_move(-1)
tmap K eval -q fm.ui.taskview.task_move(0)
tmap dd eval -q fm.ui.taskview.task_remove()
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
tmap <delete> eval -q fm.ui.taskview.task_remove()

# A bunch of aliases for closing
tmap w eval -q fm.ui.close_taskview()
tmap q eval -q fm.ui.close_taskview()
tmap Q eval -q fm.ui.close_taskview()
tmap <esc> eval -q fm.ui.close_taskview()
tmap <c-c> eval -q fm.ui.close_taskview()