Skip to content

Releases: magnacore/Canger

Canger 0.9.8

Choose a tag to compare

@manujchandra manujchandra released this 28 Oct 04:52

Canger 0.9.8

Three things, two of them reported from use.

A folder pasted where one of the same name had been deleted no longer arrives
marked. Nothing marks anything during a paste; directory rows are interned by
path, so a folder deleted and recreated comes back as the same object with
whatever was last set on it, and the one place that would have cleared the mark
returned early when nothing was remembered — which is exactly the state after a
deletion. The same interning kept a measured size: a folder of 4 MB deleted and
replaced by one of ten bytes went on reporting 4 MB, not even as a doubtful
figure. A node handed a status now drops what it had learned when the inode
under it changes.

The screen puts itself right after another program has had the terminal. A rule
that starts a graphical program and returns at once — xdg-open is the usual
one — leaves that program holding the terminal, and a warning it prints a
second later scrolls the interface a row out of place for the rest of the
session. For ten seconds after a program hands the terminal back, frames are
written in full and the loop looks often enough to repair the screen without
anything being typed. Ranger leaves this to <C-l>.

The .NET SDK is found on the PATH. The conda environment the scripts looked in
first no longer exists on the machine Canger is written on, and a path that
cannot be there is not guidance worth keeping.

Canger 0.9.7

Choose a tag to compare

@manujchandra manujchandra released this 02 Oct 03:46

Canger 0.9.7

Tab now finishes the program's name on a :shell line. In a directory holding
015.cs and 015.py, typing ./0 completed nothing: the first word is
matched against the programs on the PATH, and a name carrying a separator is
never looked up there. Ranger has the same hole. The word is completed against
the filesystem instead, offering only what can be run — directories, to carry
on into, and files with an execute bit — because that position names the
program, and the directory this was reported from holds thirty notebooks
beside its two scripts.

Completing it meant fixing what the completer could read back. The line was
split on its last space, so a quoted name put the word boundary inside its own
quotes and '02 notes/' dead-ended — a defect arguments already had. The word
is now found with quoting in mind, unquoted before it is matched, and quoted as
a whole rather than name by name; a leading ~ stays outside the quoting, so
the shell still expands it.

Canger 0.9.6

Choose a tag to compare

@manujchandra manujchandra released this 01 Oct 12:31

Canger 0.9.6

Two defects, both reported from use.

A filename containing a wide character — a fullwidth colon, say — shifted the
colours in the title bar: the path is drawn with one write that counts cells,
and the filename was then recoloured by stepping back a count of characters,
so the colour began one cell late and ended one cell short. The name's first
letter wore the path's colour. Both measurements are now in cells.

A script in the directory on screen runs again. :shell ./166 failed where
ranger runs it, because a line needing nothing from a shell is run directly
and .NET resolves the program name against Canger's own directory, not the
one the command runs in. A relative name carrying a directory is now made
absolute against that directory; a bare name keeps its PATH lookup.

Housekeeping: the ported configuration in artifacts/ is kept as one file
rather than three, the two stale halves having drifted far enough that the
documented way of reassembling them would have undone later fixes.

Canger 0.9.5

Choose a tag to compare

@manujchandra manujchandra released this 22 Sep 02:09

Canger 0.9.5

The audio plugin, which lives in the repository at artifacts/plugins/mka.cs
and is not carried by the packages. Canger itself is unchanged from 0.9.4: the
binaries here differ only in the documentation packaged beside them.

  • It plays .aac, which it had not. .m4a was already claimed and is usually
    the same encoding in an MP4 container, so the container played in the
    background while the bare stream opened over the interface.
  • The formats it claims are now every one that is unambiguously audio and that
    mpv plays — aac, ac3, aif, aiff, ape, au, dsf, dts, flac, m4a, m4b, mka, mp2,
    mp3, oga, ogg, opus, ra, spx, tta, wav, wma, wv — kept in alphabetical order
    so that a gap can be seen, which is how the missing one was found. A test
    fails if the order is lost, and nothing pinned the list before.
  • Left out deliberately: .mid, which mpv renders silently without a
    soundfont; .mpc, which is Musepack audio but also ImageMagick's cache
    format; and playlists, an .m3u being a text file people edit as often as
    play.

Canger 0.9.4

Choose a tag to compare

@manujchandra manujchandra released this 15 Sep 15:21

Canger 0.9.4

A drawing fix, and a command for the shipped configuration.

  • The empty, not accessible and ... notices colour their words rather
    than the whole row a column would have shown a listing in. Ranger erases the
    column and writes the word into it, so the colour lands on five characters;
    Canger filled the row, which in any scheme giving those contexts a background
    turned a label into a band across the pane.

The ported configuration in artifacts/ — the one the tests compile, not
something the packages install — gained file_template:

  • It copies a template into the current folder under a name nothing is using:
    notes.md, then notes_0.md, numbered by the same function :paste_ext names,
    so a template and a pasted copy are numbered alike. The binding it replaces
    ran cp --backup=numbered, which renames the existing file out of the way
    and gives the new one the plain name.
  • A template may be a folder — a project skeleton, copied whole, keeping the
    empty directories that are part of it and the permissions of the folders it
    came from. It is numbered as a folder, so project.v2 is followed by
    project.v2_0 rather than project_0.v2.

Canger 0.9.3

Choose a tag to compare

@manujchandra manujchandra released this 15 Sep 09:52

Canger 0.9.3

One parity fix, reported from use.

  • The previous-directory mark — what `` and '' jump to — is set where ranger
    sets it: on a cd, on entering a bookmark, and on quitting, and nowhere else.
    Canger set it on every move of a tab, so stepping into a folder and back out
    overwrote it and the key came to mean "up one step" rather than "back to
    where I jumped from". Ranger's own signature is the tell:
    enter_dir(self, path, remember=False, history=True), with only `fm.cd`
    passing remember.

  • The manual explains bookmarks, which it had never done: how to set, enter and
    clear them, and what that one mark holds. The rule is worth stating, since
    what does not move it — ordinary walking about — is the half that makes it
    useful.

Canger 0.9.2

Choose a tag to compare

@manujchandra manujchandra released this 13 Sep 03:40

Canger 0.9.2

The status bar, and the keys the mpv plugin hands over.

  • The status bar shortens its activity line instead of leaving it out. A line
    that outgrew the room between the file details and the free-space block used
    to disappear entirely — clock, total and percentage — which is exactly what a
    bar with nothing playing looks like, and it happened at the moment the user
    pressed pause, since holding playback adds a word to the line. It is now cut
    in the middle on whole-word boundaries, keeping the position at its head and
    the state at its tail, down to fourteen columns.

The mpv plugin shipped in the repository at artifacts/plugins/mka.cs — not in
the packages:

  • Backspace reaches mpv, so it resets the playback speed there as it does in a
    terminal. It was named by the curses key number, which nothing produces: a key
    that is not an escape sequence arrives as its own byte, and ranger calls that
    one <backspace2>. The names sent to mpv are now checked against mpv itself,
    which rejects two plausible spellings.
  • The key that opens the mpv mode closes it again, read from the user's own
    bindings as the mode opens, so rebinding it moves the exit with it. Single
    keys only — a chord's first key would have to be held back from mpv, and the
    usual binding began with mpv's own pause key. Escape still works.

Canger 0.9.1

Choose a tag to compare

@manujchandra manujchandra released this 09 Sep 06:25

Canger 0.9.1

The status bar's state flags, and the audio plugin that uses them.

  • The activity badge sits with Mrk, VIS and FROZEN at the right-hand end
    of the status bar, spaced as they are, instead of in front of the activity
    line where no other flag appears. It is shown whenever a plugin gives one,
    whether or not there is a line to go with it — a mode indicator that goes out
    while the mode is still on is worse than none.
  • A background activity is asked what it has to say on every frame, whatever
    else the bar is showing. It is the only heartbeat a plugin gets, and where the
    end of the thing it is watching is noticed; asking only while the task queue
    was quiet could leave a plugin's output undrained for the length of a copy.

The mpv plugin shipped in the repository at artifacts/plugins/mka.cs — not in
the packages — gained rather more:

  • Several audio files selected play as one queue. They went to the terminal
    before, over the interface, because the opener took a single file only.
  • The queue's status line is the user's own term-status-msg with the figures
    covering the whole queue, and which file of how many in front of it. The
    format is split into its parts; the ones a queue changes the meaning of are
    answered from the measured durations and everything else is asked of mpv, so
    a line counts down if theirs does.
  • The volume appears as it moves and then goes, as mpv does in a terminal,
    unless their format asks for it always.
  • Whether mpv is paused is asked of mpv rather than remembered, so p and
    Space in the mpv mode are as reliable as pap — and the word appears where
    their format puts it, not in two places in turn.

Canger 0.9.0

Choose a tag to compare

@manujchandra manujchandra released this 08 Sep 09:55

Canger 0.9.0

Background audio through a plugin, three new plugin seams, and four defects
found by using it.

New

  • Plugins can reach three things they could not before. IFileManager.FileOpeners
    lets a plugin claim a file type ahead of the ordinary open rules, so Enter,
    →, l and :open all go through it and removing the plugin cannot break
    navigation. BackgroundActivity gives it a line in the status bar with an
    optional progress bar and a highlighted badge, sharing the bar rather than
    replacing it. KeyGrab hands it the keyboard ahead of the browser's bindings
    until it gives them back.
  • artifacts/plugins/mka.cs uses all three: audio plays in the background while
    the interface stays live, the status bar shows mpv's own term-status-msg
    format read from the user's own mpv configuration, pam hands the keyboard to
    mpv so its speed and volume keys work, and Escape takes it back.
  • Preview text wraps between words. Ranger cuts each line at whatever character
    the pane's width falls on, which does not read as wrapped text; Canger breaks
    at a space, keeps a line's indentation, measures in cells so CJK breaks where
    it looks like it should, and keeps a highlighter's colours across the break.
  • setlocal, setintag and setinregex work at the console, not only in
    cc.conf.
  • A key bound to a command that does not exist is reported at startup instead of
    failing silently when the key is pressed — which is what removing a plugin
    leaves behind.

Fixed

  • Opening a directory puts the cursor on its first row. Under a sort other than
    by name it landed elsewhere, and a leading symlink was skipped.
  • A directory resolves its settings for its own path, so on and oM work in a
    folder whose sort came from setinregex.
  • n repeats the search that was actually made. , marked the files belonging
    together and n then found nothing, because the pattern was remembered as text
    and matched as a substring — a leading ^ was looked for literally.
  • canger <file> opens the directory holding the file with that file selected,
    as ranger does, rather than refusing.
  • The status bar's activity badge no longer sits flush against the line beside it.

Canger 0.8.1

Choose a tag to compare

@manujchandra manujchandra released this 06 Sep 06:00

Canger 0.8.1

Documentation and the repository launcher. The program itself is unchanged from
0.8.0; the packages are rebuilt because the README ships inside them.

  • canger.sh adds /usr/local/bin and /sbin to PATH alongside ~/.local/bin, each
    only when it is missing, so a Canger started from a window-manager keybinding
    can find what its commands need and nothing accumulates across launches.
  • The README says which archivers can report progress and which cannot: .tar.*
    and .zip are counted, while .7z and .rar show the bytes written and no bar.
    7-zip emits its per-file announcements only once the job has finished, and
    suppresses its own percentage display unless it is talking to a terminal, so
    there is no live signal to read.