hascard alternatives and similar packages
Based on the "Unclassified" category
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of hascard or a related project?
A minimal commandline utility for reviewing notes. 'Flashcards' can be written in markdown-like syntax.
- Miscellaneous info
Installation on Windows is not possible sadly, aside from WSL. This is because hascard depends on vty which only supports unix operating systems (this includes macOS).
Homebrew (for macOS)
For macOS users an installation using homebrew is provided via a custom tap. You can run
brew update brew install Yvee1/tools/hascard
Ubuntu and macOS binaries are available under releases. To be able to run it from any directory, it has to be added to the PATH. This can be done by copying it to e.g. the
Hascard is also on snapcraft. Installation instructions are on that site. If you already have snap installed you can just install hascard via
sudo snap install hascard. By default snap applications are isolated from the system and run in a sandbox. This means that hascard does not have permission to read or write any files on the system aside from those under
%HOME/snap/hascard. To be able to read cards also in other directories under the home directory, hascard makes use of the
home interface which might need to be enabled manually using
sudo snap connect hascard:home :home.
Note: Because of problems with snap and terminfo, the snap installation does not work directly with somewhat non-standard terminals like st-256 and alacritty. This is because the snap environment does not have the necessary terminfo files for these terminals, but copying the terminfo file from the system is a workaround (see this comment).
Install from source
git clone https://github.com/Yvee1/hascard.git cd hascard
stack install hascard or
hascard to open the main application. Menu navigation can be done with the arrow keys or with the 'j' and 'k' keys. The controls for the different cards can be found at the bottom of the screen by default. This, and a couple other things, can be changed in the settings menu. A deck of cards can be opened using the built-in filebrowser, and recently selected decks will appear in the selection menu. These decks of flashcards are written in plain text, this is explained in section Cards. After selecting a deck, some options can be specified, like whether the deck should be shuffled or how many cards should be reviewed.
After finishing a deck, there is an option to create new decks from the correctly answered or incorrectly answered cards, or both. The correct cards of a file named
deck.txt are stored in
deck+.txt in the same folder, and the incorrect ones in the file
deck-.txt. Make sure you do not have files of those names that you want to keep since these will be overwritten.
The CLI provides two commands,
hascard run is essentially the same as just
hascard, but the
run command can be given a file to run the application on directly. Instead of specifying the parameters in a menu, they are CLI options.
As an example, say you have a file
deck.txt with lots of cards in it and you want to review 5 random ones, you can use
hascard run deck -s -a 5. Here
-s shuffles the deck and
-a 5 specifies we only want to look at 5 of them.
If you have decks in a different format, you might want to convert them into files compatible with hascard. Currently tab-seperated files can be converted to definition or open question cards. For example Quizlet decks can be exported to this format. As an example, the following file
aussi ook en outre, de plus bovendien de même evenals
# ook _aussi_ --- # bovendien _en outre|de plus_ --- # evenals _de même_
with the command
hascard import input.txt output.txt -r. More info can be found in the help text at
hascard import --help.
Decks of cards are written in
.md files. Cards are seperated with a line containing three dashes
---. For examples, see the
/cards directory. In this section the 5 different types of cards are listed, with the syntax and how it is represented in the application.
This is the simplest card, it simply has a title and can be flipped to show the contents. For example the following card
# Word or question Explanation or definition of this word, or the answer to the question.
will result in
This is a typical multiple choice question. The question starts with a
# and the choices follow. Only one answer is correct, and is indicated by a
*, the other questions are preceded by a
-. As an example, the following text
# Multiple choice question, (only one answer is right) - Choice 1 * Choice 2 (this is the correct answer) - Choice 3 - Choice 4
gets rendered as
Multiple choice questions with multiple possible answers is also possible. Here again the question starts with
# and the options follow. Preceding each option is a box
[ ] that is filled with a
* or a
x if it is correct. For example
# Multiple answer question [*] Option 1 (this is a correct answer) [ ] Option 2 [*] Option 3 (this is a correct answer) [ ] Option 4
Open questions are also supported. The words that have to be filled in should be surrounded by underscores
_. Underscores can also be escaped by
\_ if they are part of the text, like is done in
cards/analysis3.txt. Multiple answer possibilities can also be given by seperating them with vertical bars
|. As an example, the card
# Fill in the gaps The symbol € is for the currency named _Euro_, and is used in the _EU|European Union_.
behaves like this
This is a question where you have to put the elements in the correct order. Each element is preceded by a number indicating their correct place. The elements are rendered in the same order as they are written. For example the card
# Order the letters in alphabetical order 4. u 1. l 2. p 3. s
will look like
Written in Haskell, UI built with brick and parsing of cards done with megaparsec. Recordings of the terminal were made using terminalizer. The filebrowser widget was mostly copied from the brick filebrowser demo program. Homebrew and Travis configurations were made much easier by the tutorial from Chris Penner.