挖井

类库大魔王的挖井日记

挖一口属于自己的井


Derfla,快捷应用启动器

这是好几年前就开的坑,当年是对标Launchy,后来推翻重写,想对标Alfred,到目前为止,也仅仅是完成了很少几个功能,很多精力和时间都花在UI上了。一开始是照Launchy的完全图片自绘,最近加上了Alfred风格的UI。

主要特色包括:

  1. 比较灵活的扩展性。通过Extension机制,从外部进程获取扩展的信息和功能,通过标准输出的管道获取内容。相对来说运行效率略低,但不会受限于固定的编程语言、框架等等,同时扩展进程崩溃不会影响Derfla主进程。每个Extension有一个配置文件描述相关信息,示例如下:

    id= "com.derfla.hashdigest"
    author= "missdeer"
    name= "HashDigest"
    if derfla.os.name == "windows" then
    	executable= "hashdigest.exe"
    else
    	executable= "hashdigest"
    end
       
    description= "Calculate hash digest of string, file..."
    prefix={"md4", "md5", "sha1", "sha224", "sha256", "sha384", "sha512", "sha3-224", "sha3-256", "sha3-384", "sha3-512", "keccak224", "keccak256", "keccak384", "keccak512"}
    waitIconPath= ""
    waitTitle= "Calculating..."
    waitDescription= "Calculating..."
    
  2. 比较灵活的可定制UI。目前有Alfred风格UI和Launchy风格UI两种,每种都可以通过配置文件进行定制。其中Alfred风格UI定制被称为theme,示例如下:

    beginHeight = 125
    listWidgetY = 91
    dimensions = { width = 550, height = 75 }
    groupBoxStylesheet = "QGroupBox{background:white;border-radius: 9px;}";
    plainTextEditStylesheet = "QPlainTextEdit{border: 1px solid white}";
    listWidgetStylesheet = "QListWidget{border: 1px solid white} QListWidget::item{padding : 3px 3px 3px 3px}";
       
    if derfla.os.name == "macos" then
        fontSize = 52;
    else
        fontSize = 40
    end
       
    blurRadius = 9.0;
    shadowColor = { r = 0, g = 0, b = 0, a = 160 }
    shadowOffset = 3.0;
    

    Launchy风格UI定制为称为skin,示例如下:

    image = "derfla.png"
    inputstyle = [[
    QLineEdit { font: 48px;
    	border-width: 0px;
    	background-color: rgba(0,244,120,0%);
    	border-style: solid;
    	color: white;
    	qproperty-alignment: AlignLeft;
    	qproperty-geometry: rect(46 62 375 68); }
    ]]
    

    其中derfla.png是同目录中的一个图片文件:

    derfla.png

    目前两种风格的UI在业务行为上还没有完全统一,需要继续改进。

  3. 基于Lua语言的配置文件格式,theme、skin、extension的配置全部使用Lua语言编写。优点是可以通过当前具体环境进行特定的配置,比如Windows下的可执行文件名是以.exe结尾,其他平台都没有这个后缀,又比如在不同平台上要使用不同大小的字体才能获得相近的视觉效果等等。同时也可以从主程序侧(C++)暴露一些接口给Lua侧使用。缺点是运行期修改不方便。

  4. 主程序使用Qt/C++编写,所以支持在Windows、macOS、Linux等系统上运行。

Roadmap:

  1. 更多的extension,提供更丰富实用的功能。
  2. Plugin机制,扩展主程序的核心功能。比如目前主程序UI只有list一种展示方式,能展示的内容也很有限,可以通过Plugin实现更多展示功能,比如预览条目内容,像条目是PDF或PNG之类的文件,完全可以新开一个窗口进行实时预览。Plugin不同于extension,将是以动态库的形式插入到主程序进程中运行。
  3. 系统事件监控及hook接口,对标Hammerspoon

最后贴几张screenshot。

Everything搜索文件或目录:

everything.png

打开搜索引擎:

se.png

计算器:

calc.png

快捷应用启动:

lfs.png

Hash计算:

md5.png

天气:

weather.png

有道词典

dict.png

本文地址:

https://minidump.info/blog/2019/06/derfla-app/

感觉本文不错,不妨小额鼓励我一下!
上一篇

Qt Creator使用clang-cl

之前已经在Windows上用clang编译Qt程序,但当时的Qt Creator并没有好好地支持,所以需要在控制台上直接使用命令行进行编译。今天偶然发现最新的Qt Creator已经支持clang-cl套件了,试了一下效果不错。首先,仍然是去官网下载最新的LLVM预编译安装包:下载后安装,我习...…

CPPOOPGPXP 全文阅读
下一篇

双色球技术派app

这个app在2014年就上架过,除了一开始送出去一堆兑换码以外,以每月大约不到1个付费用户的速度卖出过几份。后来也就更新过1个版本,后来就懒得更新了,直到2017年10月因长期不更新被下架了。前些日子把胎动计数器app上架后,突然觉得这个吃灰已久的双色球app也可以继续上架,虽然用户少,但是价...…

Shareware 全文阅读