LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1895|回复: 1

fbterm+ucimf+w3m+w3m-img设置小技巧

[复制链接]
发表于 2009-12-18 08:45:32 | 显示全部楼层 |阅读模式
fbterm+ucimf+w3m+w3m-img能完全满足在字符终端下的中文显示/输入以及图片的需求。
虽然每一个组件都有一些替代品可用,但据我最近的体验来看,这个组合是最好的。
zhcon/cce/jfbterm可以替代fbterm;
ibus+ibus_fbterm可以替代ucimf(我这几天想装ucimf,结果因为freetype库升级没安装成功,只好用了ibus_fbterm);
lynx/links/elinks可以部分替代w3m+w3m-img;

很多人可能不知道如何在fbterm中如何同时显示网页中的中文和图片,刚google了一下,发现jfbterm+w3m+w3m-img可以同时显示网页中的中文和图片。
jfbterm启动设置环境变量$TERM=jfbterm,而w3m是在源码中判断环境变量TERM的值,如果$TERM=jfbterm就开启图片显示功能,否则关闭。于是我尝试在fbterm启动后以“TERM=jfbterm w3m"方式启动w3m,结果发现可行,目前发现的唯一缺点是从字符模式切换到桌面时会出现部分图像叠加,需要刷新一下桌面。

大家不妨试试。
有条件的可以给w3m打个patch。

我的~/.bashrc设置如下:
alias fbterm="LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 ibus-fbterm-launch"
alias w3m="TERM=jfbterm w3m"
 楼主| 发表于 2009-12-21 20:13:37 | 显示全部楼层

附上w3m-0.5.2版本源码w3mimg/fb/fb_w3mimg.c文件中w3ming_fbopen函数

w3mimg_op *
w3mimg_fbopen()
{
    w3mimg_op *wop = NULL;
    wop = (w3mimg_op *) malloc(sizeof(w3mimg_op));
    if (wop == NULL)
        return NULL;
    memset(wop, 0, sizeof(w3mimg_op));

    if (!check_tty_console(getenv("W3M_TTY")) && strcmp("jfbterm", getenv("TERM")) != 0) {
        fprintf(stderr, "w3mimgdisplay/fb: tty is not console\n");
        goto error;
    }

    if (fb_open())
        goto error;

    wop->width = fb_width();
    wop->height = fb_height();

    wop->init = w3mfb_init;
    wop->finish = w3mfb_finish;
    wop->active = w3mfb_active;
    wop->set_background = w3mfb_set_background;
    wop->sync = w3mfb_sync;
    wop->close = w3mfb_close;
    wop->clear = w3mfb_clear;

    wop->load_image = w3mfb_load_image;
    wop->show_image = w3mfb_show_image;
    wop->free_image = w3mfb_free_image;
    wop->get_image_size = w3mfb_get_image_size;

    /* XXX */
    fb_image_init();

    return wop;
  error:
    free(wop);
    return NULL;
}
-------------------------------------------------------------------------
从以上代码可见,如果w3m运行在没有设置TERM=jfbterm环境变量的framebuffer终端环境中就会拒绝打开framebuffer设备文件。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表