Dotfiles for my tiling window manager + terminal workflow.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines
7.5 KiB

  1. #!/usr/bin/python
  2. # coding=UTF-8
  3. # These glyphs, and the mapping of file extensions to glyphs
  4. # has been copied from the vimscript code that is present in
  5. # https://github.com/ryanoasis/vim-devicons
  6. import re;
  7. import os;
  8. # all those glyphs will show as weird squares if you don't have the correct patched font
  9. # My advice is to use NerdFonts which can be found here:
  10. # https://github.com/ryanoasis/nerd-fonts
  11. file_node_extensions = {
  12. '7z' : '',
  13. 'ai' : '',
  14. 'apk' : '',
  15. 'avi' : '',
  16. 'bat' : '',
  17. 'bmp' : '',
  18. 'bz2' : '',
  19. 'c' : '',
  20. 'c++' : '',
  21. 'cab' : '',
  22. 'cbr' : '',
  23. 'cbz' : '',
  24. 'cc' : '',
  25. 'clj' : '',
  26. 'cljc' : '',
  27. 'cljs' : '',
  28. 'coffee' : '',
  29. 'conf' : '',
  30. 'cp' : '',
  31. 'cpio' : '',
  32. 'cpp' : '',
  33. 'css' : '',
  34. 'cxx' : '',
  35. 'd' : '',
  36. 'dart' : '',
  37. 'db' : '',
  38. 'deb' : '',
  39. 'diff' : '',
  40. 'dump' : '',
  41. 'edn' : '',
  42. 'ejs' : '',
  43. 'epub' : '',
  44. 'erl' : '',
  45. 'exe' : '',
  46. 'f#' : '',
  47. 'fish' : '',
  48. 'flac' : '',
  49. 'flv' : '',
  50. 'fs' : '',
  51. 'fsi' : '',
  52. 'fsscript' : '',
  53. 'fsx' : '',
  54. 'gem' : '',
  55. 'gif' : '',
  56. 'go' : '',
  57. 'gz' : '',
  58. 'gzip' : '',
  59. 'hbs' : '',
  60. 'hrl' : '',
  61. 'hs' : '',
  62. 'htm' : '',
  63. 'html' : '',
  64. 'ico' : '',
  65. 'ini' : '',
  66. 'java' : '',
  67. 'jl' : '',
  68. 'jpeg' : '',
  69. 'jpg' : '',
  70. 'js' : '',
  71. 'json' : '',
  72. 'jsx' : '',
  73. 'less' : '',
  74. 'lha' : '',
  75. 'lhs' : '',
  76. 'log' : '',
  77. 'lua' : '',
  78. 'lzh' : '',
  79. 'lzma' : '',
  80. 'markdown' : '',
  81. 'md' : '',
  82. 'mkv' : '',
  83. 'ml' : 'λ',
  84. 'mli' : 'λ',
  85. 'mov' : '',
  86. 'mp3' : '',
  87. 'mp4' : '',
  88. 'mpeg' : '',
  89. 'mpg' : '',
  90. 'mustache' : '',
  91. 'ogg' : '',
  92. 'pdf' : '',
  93. 'php' : '',
  94. 'pl' : '',
  95. 'pm' : '',
  96. 'png' : '',
  97. 'psb' : '',
  98. 'psd' : '',
  99. 'py' : '',
  100. 'pyc' : '',
  101. 'pyd' : '',
  102. 'pyo' : '',
  103. 'rar' : '',
  104. 'rb' : '',
  105. 'rc' : '',
  106. 'rlib' : '',
  107. 'rpm' : '',
  108. 'rs' : '',
  109. 'rss' : '',
  110. 'scala' : '',
  111. 'scss' : '',
  112. 'sh' : '',
  113. 'slim' : '',
  114. 'sln' : '',
  115. 'sql' : '',
  116. 'styl' : '',
  117. 'suo' : '',
  118. 't' : '',
  119. 'tar' : '',
  120. 'tgz' : '',
  121. 'ts' : '',
  122. 'twig' : '',
  123. 'vim' : '',
  124. 'vimrc' : '',
  125. 'wav' : '',
  126. 'webm' : '',
  127. 'xml' : '',
  128. 'xul' : '',
  129. 'xz' : '',
  130. 'yml' : '',
  131. 'zip' : '',
  132. }
  133. dir_node_exact_matches = {
  134. # English
  135. '.git' : '',
  136. 'Desktop' : '',
  137. 'Documents' : '',
  138. 'Downloads' : '',
  139. 'Dropbox' : '',
  140. 'Music' : '',
  141. 'Pictures' : '',
  142. 'Public' : '',
  143. 'Templates' : '',
  144. 'Videos' : '',
  145. # Spanish
  146. 'Escritorio' : '',
  147. 'Documentos' : '',
  148. 'Descargas' : '',
  149. 'Música' : '',
  150. 'Imágenes' : '',
  151. 'Público' : '',
  152. 'Plantillas' : '',
  153. 'Vídeos' : '',
  154. # French
  155. 'Bureau' : '',
  156. 'Documents' : '',
  157. 'Images' : '',
  158. 'Musique' : '',
  159. 'Publique' : '',
  160. 'Téléchargements' : '',
  161. 'Vidéos' : '',
  162. # Portuguese
  163. 'Documentos' : '',
  164. 'Imagens' : '',
  165. 'Modelos' : '',
  166. 'Música' : '',
  167. 'Público' : '',
  168. 'Vídeos' : '',
  169. 'Área de trabalho' : '',
  170. # Italian
  171. 'Documenti' : '',
  172. 'Immagini' : '',
  173. 'Modelli' : '',
  174. 'Musica' : '',
  175. 'Pubblici' : '',
  176. 'Scaricati' : '',
  177. 'Scrivania' : '',
  178. 'Video' : '',
  179. # German
  180. 'Bilder' : '',
  181. 'Dokumente' : '',
  182. 'Musik' : '',
  183. 'Schreibtisch' : '',
  184. 'Vorlagen' : '',
  185. 'Öffentlich' : '',
  186. }
  187. file_node_exact_matches = {
  188. '.Xdefaults' : '',
  189. '.Xresources' : '',
  190. '.bashprofile' : '',
  191. '.bashrc' : '',
  192. '.dmrc' : '',
  193. '.ds_store' : '',
  194. '.fasd' : '',
  195. '.gitconfig' : '',
  196. '.gitignore' : '',
  197. '.jack-settings' : '',
  198. '.mime.types' : '',
  199. '.nvidia-settings-rc' : '',
  200. '.pam_environment' : '',
  201. '.profile' : '',
  202. '.recently-used' : '',
  203. '.selected_editor' : '',
  204. '.vimrc' : '',
  205. '.xinputrc' : '',
  206. 'config' : '',
  207. 'dropbox' : '',
  208. 'exact-match-case-sensitive-1.txt' : 'X1',
  209. 'exact-match-case-sensitive-2' : 'X2',
  210. 'favicon.ico' : '',
  211. 'gruntfile.coffee' : '',
  212. 'gruntfile.js' : '',
  213. 'gruntfile.ls' : '',
  214. 'gulpfile.coffee' : '',
  215. 'gulpfile.js' : '',
  216. 'gulpfile.ls' : '',
  217. 'ini' : '',
  218. 'ledger' : '',
  219. 'license' : '',
  220. 'mimeapps.list' : '',
  221. 'node_modules' : '',
  222. 'procfile' : '',
  223. 'react.jsx' : '',
  224. 'user-dirs.dirs' : '',
  225. }
  226. def devicon(file):
  227. if file.is_directory: return dir_node_exact_matches.get(file.relative_path, '')
  228. return file_node_exact_matches.get(file.relative_path, file_node_extensions.get(file.extension, ''))