Everything For Linux

计划中的第二步也做出来一个雏形,基本可以使用,但需要改善的地方还有很多,以后再一点点去完善。

代码已经上传github: 

GitHub - Toormi/EverythingForLinux: Immediate search tool for linux, seems like Everything on Windows

1. 与第一版的主要区别

这一版还没有完全做好,但外观上在完成后基本与第一版preview类似,细节上有一些小变化,去掉了search按钮,去掉了前面编号的显示,加入单行下划线,加入单行hover,修改了选择行背景颜色。效果会在最终完成后第一时间补上。search按钮已经没有了存在的必要,之所以去掉,是因为后台结构发生了变化。

与前一版的区别主要体现在后台功能实现上。

第一版时使用前台QT,后台调用mlocate命令的模式,这种方式比较简单所以很快就做了出来,但有一个致命的缺点就是做不到即时搜索,完全像Windows下Everything,性能上达不到即时搜索,所以才会在当初加入了一个search按钮来进行点击搜索。

这一版中改变了原有的模式,性能提升很多,做到了真正的即时搜索,再加上做的一些性能优化,几乎可以达到Everything一样快速。这次采用了前台QT,后台连接sqlite数据库的模式。sqlite是一个轻量级的数据库,安装使用都很方便,如果采用更加重量级的数据库,比如mysql,oracle,相信速度可以做到更快,但是那样会导致安装使用变的很麻烦, 会很不方便,得不偿失,这样一个小工具没有必要去借助那样一个庞然大物。

2. 软件结构

借鉴了locate命令分locate和updatedb这样一个结构,locate命令负责从数据库中查询,updatedb负责更新数据库的,这样做可以在权限上对两个命令区别对待(后面会单独对locate数据库权限问题做一个单独讲解)。

这个版本中类似locate,同样采用查询和更新数据库分开的结构,分两个部分,everything和everything-updatedb。

everything-updatedb是一个单独的命令行命令,负责将locate命令的数据库转换并保存在sqlite数据库中,数据库文件保存在/var/lib/everything/everything.db中,表名也是everything,字段有4个,ID, NAME, PATH, TYPE。

everything是一个GUI的搜索程序,依然使用QT编写,前台负责接受用户的输入并将查询结果进行展示,后台连接到everything-updatedb创建的数据库,按照前台传入的关键字返回搜索的结果。

整体效果图:

Everything For Linux_第1张图片

3. 功能

1)搜索

搜索方式和前一版有了区别,不再需要在输入关键字后点击search按钮,只需要输入想要搜索的关键字,搜索结果后实时的在下面进行展示。

搜索关键字中可以使用通配符"*", 如果关键字中没有通配符,会在匹配到所有文件名中包含关键字的文件,不论关键字是在开始还是结尾。如果关键字中有通配符,就只匹配符合这个模式的文件,例如:输入“*123”,只匹配"123"结尾的文件。默认关键字大小写敏感。

后续还需要完善和添加一些功能,比如关键字大小写敏感可以设置,正则表达式的支持等。

2)更新数据库

程序运行时会首先弹出窗口询问是否需要更新数据库,如果需要就点击unlock按钮,如图所示:

Everything For Linux_第2张图片

点击unlock按钮后,会弹出另一个对话框,提示用户输入当前用户密码,因为everything的数据库文件只有root用户才有修改权限,所以需要在后台使用sudo命令去调用updatedb和everything-updatedb,输入密码对话框如图所示:

Everything For Linux_第3张图片

输入密码正确后(有3次机会),会开始更新数据库,首先会更新locate数据库mlocate.db,然后根据再更新everything用到的数据库everything.db,更新状态及结果会被展示在第一个弹出的对话框中。如图所示:

Everything For Linux_第4张图片

最后更新数据库成功后可以开始使用。

3)右键菜单

这个与preview版中保持一致。

Everything For Linux_第5张图片

4)双击打开

Everything For Linux_第6张图片

你可能感兴趣的:(Everything,for,linux,QT,sudo,search,快速搜索)