Repository navigation
Releases: magnacore/Canger
Release list
Canger 0.9.8
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
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
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
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..m4awas 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.m3ubeing a text file people edit as often as
play.
Canger 0.9.4
Canger 0.9.4
A drawing fix, and a command for the shipped configuration.
- The
empty,not accessibleand...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_extnames,
so a template and a pasted copy are numbered alike. The binding it replaces
rancp --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, soproject.v2is followed by
project.v2_0rather thanproject_0.v2.
Canger 0.9.3
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
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
Canger 0.9.1
The status bar's state flags, and the audio plugin that uses them.
- The activity badge sits with
Mrk,VISandFROZENat 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-msgwith 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
pand
Spacein the mpv mode are as reliable aspap— and the word appears where
their format puts it, not in two places in turn.
Canger 0.9.0
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, soEnter,
→,land:openall go through it and removing the plugin cannot break
navigation.BackgroundActivitygives it a line in the status bar with an
optional progress bar and a highlighted badge, sharing the bar rather than
replacing it.KeyGrabhands it the keyboard ahead of the browser's bindings
until it gives them back. artifacts/plugins/mka.csuses all three: audio plays in the background while
the interface stays live, the status bar shows mpv's ownterm-status-msg
format read from the user's own mpv configuration,pamhands 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,setintagandsetinregexwork 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
onandoMwork in a
folder whose sort came fromsetinregex. nrepeats the search that was actually made.,marked the files belonging
together andnthen 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
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.