- FriBiDi >= 0.10.4 (library AND headers)
You need the FriBidi library to compile this program. Probably you have it in your distribution. If not, get it from http://fribidi.org/ . You can install it via Homebrew as well (works on both Linux and macOS):
brew install fribidi
Installation is simple, the usual steps:
./autogen.sh
./configure
make
make install
Things seem to somewhat work, but:
- The build fails its last step because there is no
psfaddtable
on macOS. This doesn't seem to matter.- The built binary can be found at
./bicon/bicon.bin
.
- The built binary can be found at
- Sometimes programs exit abnormally:
[1] 15104 abort bicon.bin ls
. This also doesn't seem to matter, but you do need to do areset
on the terminal after it.- I have added a test file that triggers this:
bicon.bin cat ./macOS/test.txt
- I have added a test file that triggers this:
- Opening a shell with
bicon
seems to work without problems.
This program currently can be used under Linux console, or terminal emulators with basic Unicode rendering support, like gnome-terminal, xterm, or PuTTY.
Simply run "bicon" to get a console supporting Arabic or Persian. The language used is chosen according to the LANG environment variable.
You can also choose the language country by specifying the country on the country on the command line, e.g ::
bicon sa # enables Arabic (Saudi Arabia) support
bicon ir # for Persian (Iran)
You can use the alt+shift combination to switch keyboard language.
Of course, you have a man page bicon(1) to check.
This works for me:
function bicon-emc() {
bicon.bin --reshape-only emacsclient -t "$@"
reset
}
Take care not to run this from a shell that is itself running under bicon
. You need to use this function if you want to do so (you also need the wrappers defined in the known issues section):
bicon-emc () {
if isBicon
then
{
(
emacsclient -t -e "(progn (setq-default bidi-display-reordering nil) (redraw-display))" "$@"
)
} always {
emacsclient -e "(setq-default bidi-display-reordering t)"
}
return $?
fi
biconm --reshape-only emacsclient -t "$@"
reset
}
And it will still not be good for editing RTL text, as Emacs is confused by the bidi reversal that bicon
does.
- Text that is soft-wrapped, is vertically inverted. You can wrap the text yourself using, e.g.,
command ggrep -Eo ".{1,100}"
, to avoid this problem. tmux
is somewhat buggy, but still usable. (See the screenshots.)- As the RTL text is changed in order to be displayed correctly, copying it will probably not work as you intend it.
- Some zsh plugins are somewhat incompatible with running under
bicon
:- zsh-syntax-highlighting
- zdharma/fast-syntax-highlighting
- zsh-users/zsh-autosuggestions
One workaround is to wrap your invocations of bicon
in:
biconm () {
BICON_MODE=y bicon.bin "$@"
}
bicon-zsh () {
biconm zsh
reset
}
Then check if zsh
is running under bicon
:
isBicon () {
test -n "$BICON_MODE"
}
if ! isBicon ; then
antibody bundle zdharma/fast-syntax-highlighting # etc
fi
All the screenshots have been taken on iTerm 3.4.4 (macOS).
Please report all bugs to http://github.com/behdad/bicon