LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: lewbing

Archlinuxer是怎样安装的E17呢

[复制链接]
 楼主| 发表于 2007-5-6 23:35:09 | 显示全部楼层
Post by 无双

你使用的是tcsh而不是bash吗?


我有使用tcsh,zsh和bash,感觉吧, bash常用些,zsh用着也挺舒服着,由于与bash兼容,没tcsh那么多事儿!
如: 我用bash访问中文文件夹时,如"Archlinux技巧集",
   $) cd Archlinux技巧集
就会出现光标显示不正常了,表现形式就是: 你进入中文文件夹后, 再输入命令时,已经把一个单词给分割成多份了,虽然你输入正确后,bash解析没有问题。
zsh呢?对中文支持更差些,进入中文目录后,xWindow下的terminal就自动退出。
tcsh对中文支持不错,进入中文目录后,再输入命令时,不会出现指令被分割的情况。
因为这是挺简单的事,大家也可以测试测试,我相信中文linux用户肯定经常遇到这事,我也就不抓图给大家看了。
不过不推荐将root的默认SHELL给改了哦,要改还是改普通用户的吧,以免会引发问题。
我一般不喜欢开启File Manager来管理文件夹,除非是大规模整理资料时,所以呢?用tcsh挺符合我的要求的。
回复 支持 反对

使用道具 举报

发表于 2007-5-7 00:54:44 | 显示全部楼层
进入中文文件夹后有问题?应该不是bash的问题,是不是你的PS1设置有问题?
回复 支持 反对

使用道具 举报

发表于 2007-5-7 00:55:47 | 显示全部楼层
另,虽然不知道楼主问题的所在,但我想,可以试试禁用一些Module看看有没有改善。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-7 01:17:24 | 显示全部楼层
Post by diony
进入中文文件夹后有问题?应该不是bash的问题,是不是你的PS1设置有问题?


谢谢,的确是我的PS1提示符设置的问题。我的PS1的提示符设置的很漂亮,花了些功夫,想不到会带来这种问题,受教了!
我在terminal中,export PS1='\W>'后,进入中文目录后,的确很正常了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-7 01:20:38 | 显示全部楼层
Post by diony
另,虽然不知道楼主问题的所在,但我想,可以试试禁用一些Module看看有没有改善。


禁用什么Module,是禁用E17的Module吗?我现在还不知道怎么禁用它,因为现在根本没有太怎么使用E17,是根本使用不了。请问能使用更改它配置文件来禁用一些Module吗?
我现在在下载e17-cvs 20070130的版本,我看看那时候的版本有没有问题。你知道从什么版本开始,启动E17由enlightenment_start改成了enlightenment了吗?我上次试用就是使用的exec /somepath/enlightenment来启动的。如果知道具体的版本号,我就专门下载它了。
回复 支持 反对

使用道具 举报

发表于 2007-5-7 01:27:50 | 显示全部楼层
呵呵,我也不知道。只是最近两天忽然又想折腾折腾e17而已……

PS1设置的问题,一般只要注意把隐藏的字符处理好就好了。如果写得很严格,按理是不会有问题的。
很久之前我也折腾过一次PS1,当时也碰到过类似的问题。后来折腾好了,现在却记不起来当时是如何折腾的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-7 02:15:48 | 显示全部楼层
Post by diony
呵呵,我也不知道。只是最近两天忽然又想折腾折腾e17而已……

PS1设置的问题,一般只要注意把隐藏的字符处理好就好了。如果写得很严格,按理是不会有问题的。
很久之前我也折腾过一次PS1,当时也碰到过类似的问题。后来折腾好了,现在却记不起来当时是如何折腾的。


我不知道怎样的PS1才算是很严格,按理说,我的PS1也没有问题了,只是颜色设置多了些,我把我的PS1贴出来,喜欢酷酷提示的朋友可以参考修改哦!就是进入中文目录操作没有解决,算了,我一般用tcsh,只有在使用root时才使用bash。
使用酷酷的bash提示符可以很快找到自己输入的命令,在编译源码或进行一些显示很多屏的操作时,可以很好的将显示结果和自己输入的指令分开,可谓是一举二得。看起来又舒服,又提高了工作效率,花点时间来学习配置它值!

  1. #PS1="\[\033[0;31;1m\][\[\033[0;35;1m\]\u\[\033[0;31;1m\]@\[\033[0;35;1m\]\h\[\033[0;31;1m\]:\[\033[0;34;1m\]\W\[\033[0;32;1m\] #\[\033[0;31;1m\]]\[\033[0;37;0m\] " ((1))
  2. #PS1='[\u@\h \W]\$ ' ((2))
  3. PS1="\[\033[0;31;1m\][\[\033[0;35;1m\]\u\[\033[0;31;1m\]@\[\033[0;35;1m\]\h\[\033[0;31;1m\]:\[\033[0;34;1m\]\W\[\033[0;32;1m\] #\[\033[0;31;1m\]] " ((3))
  4. export PS1
复制代码

我上传了我的 rxvt-unicode截图,名为bash2.png.
((1))拥有[USERNAME@HOSTNAMEWD #]的不同色彩提示,而且相邻的提示符颜色是不会重复的哦,觉得我搭配的还可以啦! 与((3))的区别是输入的命令是普通白色的。
((2))挺简单的,archlinux默认的配置,使用它,在进入中文目录时,没有问题。
((3))与((1))效果差不多,不过输入的命令颜色是红色。

我还上传了一张图片bash1.png,它的显示效果是使用((1))和((3))作为提示符时,进入中文目录后,输入指令的效果。

上传图片:
bash1.png
bash2.png

diony谢谢哦,我收到你的i810.tar.gz包了,不过放到/lib/.../drives目录下后,将xorg.conf中的Driver由i810更改成i810fb,它会出现找不到i810fb这个驱动,不知道你们有没有这种情况。
看你的签名,你应该是使用的AMD 64位的机器吧,我可是Intel Petinum  M的内核,不知道会不会因此而这个文件有问题呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2007-5-7 03:17:17 | 显示全部楼层
首先,你不应该擅自用#替换掉原本的\$。\$要比简单的#有意义。
其次,代码写得有点儿让人头疼了,类似\033[0;31;1m这样的,完全可以用\e[1;31m来代替……看着至少要短不少。
再其次,你可以变通一下,在最后用一个简单的\n来解决错位问题。换行之后就不会出现错位了……

最后,帖一个过去看到的PS1设置脚本,这脚本把颜色信息都设成变量了。利用它来定制自己的版本会简单、清晰得多。
你可以修改之后自己来用。这个脚本也是当初在sir上看到的:
[php]
# set cool Bash prompt

function short_pwd
{
local MAX=40

local athome=
local mypwd=${PWD#$HOME}
[ "$mypwd" = "$PWD" ] || athome=yes
[ ${#mypwd} -le $MAX ] &&
{
[ $athome ] && echo "~$mypwd" || echo "$mypwd"
return 0
}
local real_length=${#mypwd}
local offset=$((real_length - MAX))
mypwd=${mypwdoffsetMAX} # guess why I don't simply use ${mypwdoffset} ?
mypwd=/${mypwd#*/}
[ $athome ] && echo "~...$mypwd" || echo "/...$mypwd"
}

function cool_prompt
{
local black="\[\e[0;30m\]"
local Gray="\[\e[1;30m\]"

local red="\[\e[0;31m\]"
local Red="\[\e[1;31m\]"

local green="\[\e[0;32m\]"
local Green="\[\e[1;32m\]"

local brown="\[\e[0;33m\]"
local yellow="\[\e[1;33m\]"

local blue="\[\e[0;34m\]"
local Blue="\[\e[1;34m\]"

local purple="\[\e[0;35m\]"
local Purple="\[\e[1;35m\]"

local cyan="\[\e[0;36m\]"
local Cyan="\[\e[1;36m\]"

local gray="\[\e[0;37m\]"
local white="\[\e[1;37m\]"

local no_color="\[\e[m\]"

local under_score="\[\e[4m\]"
local blink="\[\e[5m\]"
local inverse="\[\e[7m\]"
local hidden="\[\e[8m\]"

local tty=$(tty | sed -e s,/dev/,,)

declare -i last_exit=0
export PROMPT_COMMAND='last_exit=$?'
PS1="$cyan-($Red\u$cyan@$Red\h$cyanRed$tty$cyan)-($Red\A$cyan)-($Red\$(short_pwd)$cyan)-$Red\n$cyan [$Red\$\$ \$last_exit$cyan] $no_color% "
}

cool_prompt
[/php]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-7 03:40:39 | 显示全部楼层
Post by diony
首先,你不应该擅自用#替换掉原本的\$。\$要比简单的#有意义。
其次,代码写得有点儿让人头疼了,类似\033[0;31;1m这样的,完全可以用\e[1;31m来代替……看着至少要短不少。
再其次,你可以变通一下,在最后用一个简单的\n来解决错位问题。换行之后就不会出现错位了……

最后,帖一个过去看到的PS1设置脚本,这脚本把颜色信息都设成变量了。利用它来定制自己的版本会简单、清晰得多。
你可以修改之后自己来用。这个脚本也是当初在sir上看到的:


的确, 原来用\$,它会根据当前用户来判断是使用#还是$提示符,不错。
还有,你的这个小脚本真的好好哦,好喜欢。做好以后,的确可以进入中文目录了,在中文目录下输入指令也没有问题了。不知道是不是因为将目录名与输入指令的地方划分了才会这样。
我的zsh提示符也差不多是这个样子,也是根据在google上找的一个zsh提示符设置脚本来做的。

你给的这个脚本看起来结构清晰,易懂,真的好不错, 好好收藏起来了!

我现在下载了几份e17-cvs源码,已经编译了二份,一份是2007-01-20左右的,一份是2006-08-20左右的。2007-01-20左右的错误依然存在,不知道是不是需要编译全部的模块,我只编译了e这个模块。还有2006-08-20这个源码,连生成./autogen都有问题,我是不想去改它的,直接过滤掉,留作与后来的代码作为对比得了。又再下载2006-10-20时候的cvs源码,看能否编译通过。如果不是我要的源码,这段时间再也不hack e17了,快把我整的没个人样了!

简单看了一下e17的源码,比较了几个新旧版本的源码,对整个框架没个了解, 一时半会是看不出什么头绪来的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-7 03:57:08 | 显示全部楼层
让大家看看Enlightenment的ewl图形库的程序示例啊,是从google上找到的。看起来,整个结构挺清晰的, 我正在考虑学哪种跨平台的图形库来着,本来打算是wxWidgets的,它跨平台效果不错;Qt开发商业软件需要买许可证,且价格不菲,暂时不考虑它。gtk+移植到win32平台,官方主页都说了会有问题。看来现在又有一种新的选择了,不过好像ewl还不能跨平台。
http://www.enlightenment.org/Libraries/Ewl/也有ewl的hello world程序示例,关注e17发展的朋友可以试试哦!

[php]
#include <Ewl.h>
#include <stdio.h>
#include <string.h>

    static void
    cb_window_destroy(Ewl_Widget *w, void *ev, void *data)
    {
        ewl_main_quit();
    }

    static void
    cb_window_close(Ewl_Widget *w, void *ev, void *data)
    {
        ewl_widget_destroy(w);
    }

    static void
    cb_key_down(Ewl_Widget *w, void *ev, void *data)
    {
        Ewl_Event_Key_Down *e;

        e = ev;

        if (!strcmp(e->base.keyname, "Escape")
                || !strcmp(e->base.keyname, "q"))
        {
            Ewl_Widget *win;

            win = ewl_widget_name_find("main_win");
            ewl_widget_destroy(win);
        }
    }

    int
    main(int argc, char ** argv)
    {
        Ewl_Widget *win, *scroll, *o;

        if (!ewl_init(&argc, argv))
        {
            fprintf(stderr, "Unable to init EWL.\n");
            return 1;
        }

        if (argc < 2)
        {
            fprintf(stderr, "Need image to view.\n");
            return 1;
        }

        win = ewl_window_new();
        ewl_window_title_set(EWL_WINDOW(win), "EWL Image Viewer");
        ewl_window_class_set(EWL_WINDOW(win), "ewl_image_viewer");
        ewl_window_name_set(EWL_WINDOW(win), "ewl_image_viewer");
        ewl_object_fill_policy_set(EWL_OBJECT(win), EWL_FLAG_FILL_ALL);
        ewl_object_size_request(EWL_OBJECT(win), 640, 480);
        ewl_callback_append(win, EWL_CALLBACK_DELETE_WINDOW, cb_window_close, NULL);
        ewl_callback_append(win, EWL_CALLBACK_KEY_DOWN, cb_key_down, NULL);
        ewl_callback_append(win, EWL_CALLBACK_DESTROY, cb_window_destroy, NULL);
        ewl_widget_name_set(win, "main_win");
        ewl_widget_show(win);

        scroll = ewl_scrollpane_new();
        ewl_container_child_append(EWL_CONTAINER(win), scroll);
        ewl_widget_show(scroll);

        o = ewl_image_new();
        ewl_image_file_path_set(EWL_IMAGE(o), argv[1]);
        ewl_container_child_append(EWL_CONTAINER(scroll), o);
        ewl_widget_show(o);

        ewl_main();

        return 0;
    }
[/php]

将以上源码保存为tmp.c后,使用:

  1. $) gcc -o eiv tmp.c `ewl-config --cflags --libs`
复制代码

来编译它。
回复 支持 反对

使用道具 举报

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

本版积分规则

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