Skip to content

runningbruce/QingDict

 
 

Repository files navigation

QingDict

轻量级、实用主义的词典程序 for OS X

QingDict Icon

开发QingDict是基于以下一些想法:

  • 词典是为了帮助用户记住单词,而不是让用户反复查询同一个单词
  • 工具程序不应该分散用户的注意力
  • 以“实用”为目标,不拘泥于形式

获得代码

  git clone https://github.com/yingDev/QingDict.git
  cd QingDict
  git submodule init && git submodule update

结构

包含三个Target:

  • QingDict:主程序,处理鼠标取词事件、显示状态栏图标、生词表、偏好设置
  • QingDict-Result: 显示执行查词、显示查词结果、与主程序通信;出于减少内存占用的目的,这是一个可独立运行的app,每次执行失去焦点会自动退出
  • Launch-Helper(objc): ServiceManagement实现启动项所需

陷阱

  • QingDict-Result.app是放在QingDict.app/Contents/Resources中的。由于当前Swift运行时没有内置于OS X中,Xcode会拷贝所有swift的dylib到每个app中。这就导致QingDict-Result.appQingDict.app都包含独立的一堆dylib,浪费了7MB左右的空间。项目中采取的解决办法是,在Build Phase中把QingDict-Result.app中的dylib替换为指向QingDict.app中dylib的symlink。
# 与QingDict.app用到的dylib重复的,替换为symlink
theDir="${TARGET_BUILD_DIR}/${TARGETNAME}.app/Contents/Frameworks"
sourceDir="../../../../Frameworks"
dylibs="libswiftAppKit libswiftCore libswiftCoreData libswiftCoreGraphics libswiftCoreImage libswiftDarwin libswiftDispatch libswiftFoundation libswiftObjectiveC"

for lib in $dylibs
do
  theDylib="$theDir/$lib.dylib"
  rm -f $theDylib
  ln -s $sourceDir/$lib.dylib $theDylib
done
  • 取词:虽然有Accessibility API,但是OSX中许多程序是不支持此API取词的。本项目中采取了3中手段结合取词:AX、Cmd+C、模拟DragDrop,基本能应对大多数情形。这部分实现在UserTextSelectionExtractor.swfit中。

License

GPL-V3

截图

QingDict Demo

QingDict Demo

QingDict Demo

QingDict Demo

About

Lightweight & pragmatic dictionary program for OS X

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Swift 98.3%
  • Objective-C 1.7%