来了deepin作文件管理器项目开发,已经有了4个月时间了,学了些许linux基础知识,这个让我联想到linux下作应用开发的一些优势和缺点,先暂时作个凌乱的总结,以便后期整理资料。这里的资料整理都基于freedesktop标准协议来进行一些知识点整理(基于deepin linux)。html
freedesktop标准node
图标主题管理是遵循freedesktop标准来构建的,不一样主题的应用图标都放在/user/share/icons目录下,在桌面环境要换一个主题的时候都是在这个目录下对应找到应用图标的。linux
上图是个人系统里边安装的主题目录,分别有deepin, oxygen, hicolor, flattr...等等。好比deepin主题的应用程序目录就是在/usr/share/icons/deepin/apps。chrome
这个目录里边还有不一样尺寸的图标集,供给不一样需求来获取图标,尺寸通常会有12,24,48,56,128,256,scalable,不一样主题的厂商作的都不尽相同。固然咱们读主题的时候还不是直接按着这个目录结构读的,主题根目录统一在/usr/share/icons,而后就是对应这不一样的主题的目录下去了,咱们是经过度index.theme这个配置文件来找到须要尺寸类型的图标。docker
index.themeshell
[Icon Theme] Name=deepin Comment=Default icon theme for deepin Inherits=flattr Example=x-directory-normal Directories=actions/scalable,actions/22,actions/24,apps/48,apps/128,apps/scalable,devices/scalable,devices/48,places/22,places/24,places/32,places/48,places/64,places/128,places/scalable,status/scalable,status/48,mimetypes/22,mimetypes/24,mimetypes/32,mimetypes/48,mimetypes/64,mimetypes/128,mimetypes/scalable [actions/scalable] Size=96 Context=Actions Type=Scalable MinSize=16 MaxSize=96 [actions/22] Size=22 Context=Actions Type=Fixed [actions/24] Size=24 Context=Actions Type=Fixed [apps/48] Size=48 Context=Applications Type=Fixed [apps/128] Size=128 Context=Applications Type=Fixed [apps/scalable] Size=128 Context=Applications Type=Scalable MinSize=16 MaxSize=512 [emblems/12] Size=12 Context=Emblems Type=Fixed [emblems/22] Size=22 Context=Emblems Type=Fixed [emblems/24] Size=24 Context=Emblems Type=Fixed [emblems/32] Size=32 Context=Emblems Type=Fixed [emblems/48] Size=48 Context=Emblems Type=Fixed [emblems/scalable] Size=96 Context=Emblems Type=Scalable MinSize=16 MaxSize=128 [devices/scalable] Size=256 Context=Devices Type=Scalable MinSize=16 MaxSize=256 [devices/48] Size=48 Context=Devices Type=Fixed [emblems/scalable] Size=24 Context=Emblems Type=Fixed [mimetypes/22] Size=22 Context=MimeTypes Type=Fixed [mimetypes/24] Size=24 Context=MimeTypes Type=Fixed [mimetypes/32] Size=32 Context=MimeTypes Type=Fixed [mimetypes/48] Size=48 Context=MimeTypes Type=Fixed [mimetypes/64] Size=64 Context=MimeTypes Type=Fixed [mimetypes/128] Size=128 Context=MimeTypes Type=Fixed [mimetypes/scalable] Size=512 Context=MimeTypes Type=Scalable MinSize=16 MaxSize=512 [places/22] Size=22 Context=Places Type=Fixed [places/24] Size=24 Context=Places Type=Fixed [places/32] Size=32 Context=Places Type=Fixed [places/48] Size=48 Context=Places Type=Fixed [places/64] Size=64 Context=Places Type=Fixed [places/128] Size=128 Context=Places Type=Fixed [places/scalable] Size=256 Context=Places Type=Scalable MinSize=16 MaxSize=256 [status/48] Size=48 Context=Status Type=Fixed [status/scalable] Size=96 Context=Status Type=Scalable MinSize=16 MaxSize=96
desktop文件是一个简单的应用程序配置文本,咱们平时能够直接打开二进制文件,同时也能够经过这个配置文件进行打开。这个配置文件的做用是在桌面环境中,直接读这个配置来管理应用,这样就不用直接找二进制文件了。desktop文件在linux下放的目录我的感受好乱,各大桌面环境或者应用都有本身的套路,并不会严格遵照freedesktop标准。我总结的desktop文件通常就在如下目录中能找到:app
/usr/share/applications/ui
/usr/local/share/applications/google
/usr/share/gnome/applications/spa
~/.local/share/applications
google-drive.desktop
[Desktop Entry] Version=1.0 Type=Application Exec=/usr/bin/dde-file-manager %u Icon=dde-file-manager StartupNotify=true Terminal=false Categories=Utility; OnlyShowIn=Deepin; Actions=new-window; MimeType=inode/directory; Name=Deepin File Manager Name[ar]=مدير الملفات Name[ast]=Xestor de Ficheros Name[bg]=Файлов мениджър Name[bn]=ফাইল ম্যানেজার Name[ca]=Gestor de fitxers Name[cs]=Správce souborů Name[da]=Filhåndtering Name[de]=Dateiverwaltung Name[el]=Διαχειριστής αρχείων Name[en_AU]=Deepin File Manager Name[en_GB]=Deepin File Manager Name[es]=Administrador de archivos Name[et]=Failihaldur Name[eu]=Fitxategi kudeatzailea Name[fi]=Tiedostonhallinta Name[fr]=Gestionnaire de fichiers Name[gl]=Xestor de ficheiros Name[he]=מנהל קבצים Name[hr]=Upravitelj datoteka Name[hu]=Fájlkezelő Name[id]=Manajer Berkas Name[is]=Skráastjóri Name[it]=Gestore dei file Name[ja]=ファイルマネージャー Name[kk]=Файлдар басқарушысы Name[ko]=파일 관리자 Name[lt]=Failų tvarkytuvė Name[lv]=Faila pārvaldnieks Name[ms]=Pengurus Fail Name[nb]=Filbehandler Name[nl]=Bestandbeheerder Name[nn]=Filhandsamar Name[oc]=Gestionari de fichièrs Name[pa]=ਫਾਇਲ ਮੈਨੇਜਰ Name[pl]=Menedżer plików Name[pt]=Gestor de ficheiros Name[pt_BR]=Gerenciador de arquivos Name[ro]=Manager de fișiere Name[ru]=Файловый менеджер Name[sk]=Správca súborov Name[sl]=Upravljalnik datotek Name[sr]=Управник датотека Name[sv]=Filhanterare Name[te]=దస్త్ర నిర్వాహకం Name[th]=โปรแกรมจัดการแฟ้ม Name[tr]=Dosya Yöneticisi Name[ug]=ھۆججەت باشقۇرغۇ Name[uk]=Файловий менеджер Name[vi]=Trình quản lý tệp tin Name[zh_CN]=深度文件管理器 Name[zh_HK]=深度檔案管理員 Name[zh_TW]=深度檔案管理員 Comment=Browse the file system Comment[ar]=تصفح ملف النظام Comment[ast]=Restola pel sistema de ficheros Comment[bg]=Преглед на файловата система Comment[bn]=ফাইল সিস্টেম ব্রাউজ করুন Comment[ca]=Navega el sistema de fitxers Comment[cs]=Procházet systém souborů Comment[da]=Gennemse filsystemet Comment[de]=Das Dateisystem durchsuchen, um einen eigenen Befehl zu wählen Comment[el]=Περιηγηθείτε στο αρχείο συστήματος Comment[en_AU]=Browse the file system Comment[en_GB]=Browse the file system Comment[es]=Navegar por el sistema de archivos Comment[et]=Sirvi failisüsteemi Comment[eu]=Arakatu fitxategi sistema Comment[fi]=Selaa tiedostojärjestelmää Comment[fr]=Parcourir le système de fichiers Comment[gl]=Examinar o sistema de ficheiros Comment[he]=עיון במערכת הקבצים Comment[hr]=Pregledaj datotečni sustav Comment[hu]=Fájlrendszer tallózása Comment[id]=Ramban sistem berkas Comment[is]=Flakka í skráakerfinu Comment[it]=Sfoglia il file system Comment[ja]=ファイルシステムを参照します Comment[kk]=Файлдық жүйені шолу Comment[ko]=파일 시스템 탐색 Comment[lt]=Naršyti failų sistemą Comment[ms]=Layar sistem fail Comment[nb]=Bla gjennom filsystemet Comment[nl]=Blader door het bestandssysteem Comment[nn]=Bla gjennom filsystemet Comment[oc]=Percórrer lo sistèma de fichièrs Comment[pa]=ਫਾਇਲ ਸਿਸਟਮ ਬਰਾਊਜ਼ਰ ਕਰੋ Comment[pl]=Przegląda system plików i zarządza jego zawartością Comment[pt]=Explorar sistema de ficheiros Comment[pt_BR]=Navegar pelo sistema de arquivos Comment[ro]=Gestionați fișierele din sistem Comment[ru]=Просмотреть файловую систему Comment[sk]=Prehliadať systém súborov Comment[sl]=Brskajte po datotečnem sistemu Comment[sr]=Разгледајте систем датотека Comment[sv]=Bläddra i filsystemet Comment[te]=దస్త్ర వ్యవస్థను విహరించు Comment[th]=ท่องดูระบบแฟ้ม Comment[tr]=Dosya sistemini tara. Comment[ug]=ھۆججەت سىستېمىسىنى كۆرىدۇ Comment[uk]=Оглянути файлову систему Comment[vi]=Duyệt hệ thống tệp tin Comment[zh_CN]=浏览文件系统 Comment[zh_HK]=瀏覽檔案系統 Comment[zh_TW]=瀏覽檔案系統 [Desktop Action new-window] Name=New Window Name[bg]=Нов прозорец Name[ca]=Finestra nova Name[cs]=Nové okno Name[da]=Nyt vindue Name[de]=Neues Fenster Name[el]=Νέο παράθυρο Name[es]=Ventana nueva Name[eu]=Leiho berria Name[fa]=پنجره نو Name[fi]=Uusi ikkuna Name[fr]=Nouvelle fenêtre Name[fur]=Gnûf barcon Name[gd]=Uinneag ùr Name[gl]=Nova xanela Name[he]=חלון חדש Name[hu]=Új ablak Name[it]=Nuova finestra Name[ja]=新しいウィンドウ Name[kk]=Жаңа терезе Name[ko]=새 창 Name[lt]=Naujas langas Name[lv]=Jauns logs Name[nb]=Nytt vindu Name[nl]=Nieuw venster Name[oc]=Fenèstra novèla Name[pl]=Nowe okno Name[pt]=Nova janela Name[pt_BR]=Nova janela Name[ru]=Создать окно Name[sk]=Nové okno Name[sr]=Нови прозор Name[sr@latin]=Novi prozor Name[sv]=Nytt fönster Name[th]=หน้าต่างใหม่ Name[tr]=Yeni Pencere Name[uk]=Нове вікно Name[zh_CN]=新建窗口 Name[zh_TW]=新增視窗 Exec=dde-file-manager --new-window
[Desktop Entry]
Version 应用版本
Type 类型(通常为Application)
Exec 执行命令(shell 会执行的命令)
Icon 应用图标(通常为主题应用名字,绝对路径)
MimeType 支持打开文件的格式
Actions 右键菜单显示项
看到上面的文件内容例子,咱们发现desktop文件能够很灵活作应用信息采集处理,甚至作应用程序的国际化显示
linux下作默认启动程序也是很奇葩的,不一样发行版本都md有他们的本身套路,搞到作文件管理器时候,要作各类兼容性问题。绝大大部分默认启动程序的配置文件:
/.config/mimeapps.list /.local/share/applications/mimeapps.list /.local/share/applications/defaults.list /.local/share/applications/mimeinfo.cache /usr/local/share/applications/mimeapps.list /usr/local/share/applications/defaults.list /usr/local/share/applications/mimeinfo.cache /usr/share/applications/mimeapps.list /usr/share/applications/defaults.list /usr/share/applications/mimeinfo.cache
鸭个蛋蛋,就是这么奇葩,作linux默认程序兼容就是做死。固然这是没办法,谁叫我是作linux开发的,先啃一波了呵呵。下面是一个默认程序的配置内容
..list ...cache
[Default Applications] application\octet-stream=FoxitReader.desktop application\pdf=FoxitReader.desktop application\ppdf=FoxitReader.desktop text\html=google-chrome.desktop text\plain=/usr/share/applications/sublime_text.desktop x-scheme-handler\about=google-chrome.desktop x-scheme-handler\http=google-chrome.desktop x-scheme-handler\https=google-chrome.desktop x-scheme-handler\unknown=google-chrome.desktop application/pdf=FoxitReader.desktop application/ppdf=FoxitReader.desktop application/octet-stream=FoxitReader.desktop
有了这些基础概念咱们就能够在linux下作简单的桌面系统开发了,好比启动器,桌面,文件管理器,docker栏等等,固然真正作开发的时候,每天踩新坑是必然事情,只能慢慢磨合着作了。