donnatella 0.2.0 released

A new version of donnatella, your GTK3 file manager, is available. A few things have happened since the last push to branch next (and obviously even more since v0.1.1).

Let's have a go over the main changes; First of all, since the last push to next there were a few fixes & optimizations, as well as some fixes/adjustements done regarding the latest GTK+ release (3.12.0), although some dialogs (e.g. error messages, etc) might still not look too good, I'll have to work on that.

Then, command terminal_add_tab() got a new argument to specify the working directory of the new (embedded) terminal. And in the same spirit, one can now define the working directory when using provider exec.

This is done simply by prefixing the command line (works in all modes but desktop file) with either WORKDIR= or simply WD= followed by the directory to use, quoted if needed.

As a simple example of this, a couple new items in the tree's default context menu allow to "Open Terminal Here" (one as embedded terminal, the other as external one).

Changes since 0.1.1

Quick recap over the different changes since last version :

  • New event "log" to process some log events in donna; Messages are sent on different occasions, e.g. loading/saving a treeview from/to a file, adding nodes to a register, dropping a register, etc See this post for more
  • New source ":app" for statusbar, supporting messages from event "log"
  • Command tv_column_set_option(): Fix setting "width" not working
  • treeview: Add option default_save_location
  • Add command tv_set_columns() to change which columns are visible
  • Command tv_set_option() & tv_column_set_option(): Allow no value to set in-memory values to configuration
  • Command tv_set_option(): Fix setting "title" not always working
  • Add command tv_save_to_config() to save group of options (treeview options, columns (layout), column options, main/second sort order) to configuration at once. See this post for more
  • ColumnType time: Fix getting "42m ago" on inline editing
  • Fix Enter/Esc not working to set/cancel on a few windows
  • Provider exec: Add options for prefixes: you can define which prefixes to use for each supported modes, as well as the default mode. See this post for more
  • treeview: Fix handling key before last key has been fully processed
  • ColumnTypes: Place floating windows on center of parent
  • Command focus_set(): Allow ":active" as treeview name
  • Add embedded terminal support (via XEMBED); See this post for more
  • Provider exec: Add mode for embedded terminal
  • Patterns: Add support of different modes: pattern, search, begin, end, case sensitive & case insensitive matches, and Perl-compatible regex. See this post for more
  • list: Fix reload possibly not doing anything
  • list: Add visual filters (commands tv_{g,s}et_visual_filter); See this post for more
  • treeview: status: Add %f for name of focused row
  • treeview: status: Add %F (current VF) and colors
  • treeview: status: Add %h/%H for nb/size of hidden rows
  • treeview: status: "avhsF" now support an extra w/ recursion; See this post for more
  • Command tv_set_visual_filter(): Add parameter toggle; and treat empty filter as if unspecified
  • Commands config_set_{boolean,int,string}: Return set value
  • Add commands config_try_get_{boolean,int,string}: Doesn't fail if option doesn't exist, but returns specified default
  • list: Fix status not refreshed after change of location
  • treeview: status: Add tooltip support (format_tooltip)
  • ColumnType name: Add filtering by node type (See this post for more)
  • list: Add option vf_items_only
  • Alias: Fix option replacement_no_args not working
  • Alias: Add options include_space & suffix
  • Provider exec: Fix output possibly truncated
  • Command terminal_add_tab(): Add param workdir
  • Provider exec: Add setting working directory on command line
  • Add "Open Terminal Here/...in new window" in tree context menu
  • Many other fixes & optimizations; see git log for details

Configuration updates

As you might know if you've read the posts about changes pushed in next alongside changes in the code, were changes in the (default) configuration as well. And since almost everything in donna is configurable, you might wanna use an updated config as well.

There are, however, no automatic process for this. You can use your favorite tool to handle the merging, even do a 3-way merge using the original .conf file if you want.

And in case it might help, here are the changes done between 0.1.1 and 0.2.0 :

  1. diff --git a/misc/donnatella.conf b/misc/donnatella.conf
  2. index 57f69b1..b6b2a03 100644
  3. --- a/misc/donnatella.conf
  4. +++ b/misc/donnatella.conf
  5. @@ -5,7 +5,7 @@
  6.  #
  7.  
  8.  [layouts]
  9. -std=paneH(!treeview:tree@230,treeview:list)
  10. +std=paneH(!treeview:tree@230,paneV(treeview:list@230,terminal:term))
  11.  dp=paneH(!treeview:tree@230,paneV(treeview:foo,treeview:list))
  12.  tm=paneV(paneH(!treeview:tree@230,paneV(treeview:list,treeview:list2))@300,!treeview:tm)
  13.  
  14. @@ -38,6 +38,10 @@ prefix=~
  15.  is_home_dir=true
  16.  
  17.  [donna/prefixes/]
  18. +prefix=:
  19. +replacement=exec::
  20. +
  21. +[donna/prefixes/]
  22.  prefix=>
  23.  replacement=exec:>
  24.  
  25. @@ -61,10 +65,10 @@ replacement=command:
  26.  #   ALIASES
  27.  
  28.  [donna/aliases/g]
  29. -replacement=exec:>git
  30. +replacement=exec:!git
  31.  
  32.  [donna/aliases/m]
  33. -replacement=exec:>man
  34. +replacement=exec:!man
  35.  
  36.  [donna/aliases/f]
  37.  replacement=exec:<find
  38. @@ -78,7 +82,7 @@ replacement=exec:<pacman -Qlq
  39.  #
  40.  
  41.  [statusbar]
  42. -areas=tasks,active,keys,focus
  43. +areas=tasks,active,log,keys,focus
  44.  
  45.  [statusbar/tasks]
  46.  source=:task
  47. @@ -87,8 +91,18 @@ expand=false
  48.  
  49.  [statusbar/active]
  50.  source=:active
  51. -format=%v/%a files (%V) %N
  52. +expand=false
  53. +{% raw %}format=%{%s/}s%{no rows,1 row,%v rows}v (%{%S / }s%V)%{ %h hidden (%H)}h
  54. +{% endraw %}format_tooltip=%{Current VF: %F}F
  55.  size_format=%R
  56. +colors:tree-st-colors=vf
  57. +foreground=blue
  58. +
  59. +[statusbar/log]
  60. +source=:app
  61. +format=%d
  62. +format_tooltip=donnatella v%v
  63. +timeout=5
  64.  
  65.  [statusbar/keys]
  66.  source=:focused
  67. @@ -101,7 +115,7 @@ source=:focused
  68.  format=%o %K
  69.  width=100
  70.  expand=false
  71. -key_modes_colors=true
  72. +colors:tree-st-colors=keys
  73.  key_mode_select_background-rgba=rgba(0,42,200,0.8)
  74.  key_mode_select_foreground=white
  75.  
  76. @@ -155,12 +169,13 @@ notify=exec:&notify-send "Donnatella: A task just failed" %N
  77.  [defaults/trees]
  78.  click_mode=tree
  79.  key_mode=donna
  80. +default_save_location:save-location=ask
  81.  node_types:node-type=containers
  82.  show_hidden=false
  83.  sort_groups:sg=first
  84.  select_highlight:highlight=column
  85.  context_menu_menus=context
  86. -context_menu=add_root,:move_root:up<:move_root:first>,:move_root:down<:move_root:last>,:remove_row,-,goto<goto_fs,marks>,-,save_tree<save_tree_as>,load_tree<load_tree_from>,-,tree_visuals<@tree_visuals>,-,tv_options<!tv_options>,-,@register,-,:register:+<@register:+>,-,:refresh<@refresh>
  87. +context_menu=add_root,:move_root:up<:move_root:first>,:move_root:down<:move_root:last>,:remove_row,-,goto<goto_fs,marks>,terminal<terminal_nw>,-,save_tree<save_tree_as>,load_tree<load_tree_from>,-,tree_visuals<@tree_visuals>,-,tv_options<!tv_options,-,save_tree_to_config>,-,@register,-,:register:+<@register:+>,-,:refresh<@refresh>
  88.  
  89.  [defaults/trees/arrangement]
  90.  columns=name
  91. @@ -172,23 +187,25 @@ sort_column=name
  92.  [defaults/lists]
  93.  click_mode=list
  94.  key_mode=donna
  95. +default_save_location:save-location=ask
  96.  show_hidden=true
  97.  node_types:node-type=all
  98.  sort_groups:sg=first
  99.  select_highlight:highlight=column-underline
  100.  focusing_click=true
  101.  goto_item_set:tree-set=scroll,focus
  102. +vf_items_only=false
  103.  history_max=100
  104.  context_menu_menus=context
  105.  context_menu=@go:tree,marks,-,add_to_tree<add_as_root>,-,!new_nodes,-,@register,-,@selection,-,column_edit<!column_edit>,-,:refresh<@refresh>
  106.  context_menu_fs=@go:tree,marks,-,add_to_tree<add_as_root>,-,!new_nodes,new_items,-,@register,-,:register:+<@register:+>,-,@selection,-,column_edit<!column_edit,-,@touch>,-,:refresh<@refresh>
  107.  context_menu_task=@selection,-,:refresh<@refresh>,-,@tasks
  108. -context_menu_colheader=columns<!columns>,-,:sort_order<!sort_order>,:second_sort_order<!second_sort_order>,-,options<column_options<!column_options>,list_options<!tv_options>>
  109. +context_menu_colheader=columns<!columns>,-,:sort_order<!sort_order>,:second_sort_order<!second_sort_order>,-,options<column_options<!column_options>,list_options<!tv_options>>,-,save_list_to_config
  110.  
  111.  # some color filters
  112.  
  113.  [defaults/lists/arrangement/color_filters/]
  114. -filter=*.tar.*|*.tgz|*.zip|*.rar
  115. +filter=|*.tar.*|*.tgz|*.zip|*.rar
  116.  column=name
  117.  foreground=green
  118.  
  119. @@ -299,7 +316,7 @@ format_tooltip=%p (%o)
  120.  color_user=green
  121.  color_group=blue
  122.  color_mixed=#00aaaa
  123. -sort=1
  124. +sort:sort-perms=myperms
  125.  
  126.  
  127.  #   COLUMNS
  128. @@ -335,7 +352,7 @@ title=Own
  129.  width=70
  130.  format=%V:%H
  131.  format_tooltip=
  132. -sort=3
  133. +sort:sort-perms=user
  134.  
  135.  [defaults/lists/columns/desc]
  136.  type:ct=text
  137. @@ -762,12 +779,51 @@ trigger=command:node_trigger(@ask_text(Enter FL to trigger))
  138.  [key_modes/donna/key_slash]
  139.  trigger=command:tv_start_interactive_search (%o)
  140.  
  141. +# Visual Filters
  142. +[key_modes/donna/key_f]
  143. +type:key=spec
  144. +spec:spec=lower,upper
  145. +trigger=command:tv_set_visual_filter (%o, @config_get_string (filters/%k), 1)
  146. +[key_modes/donna/key_F]
  147. +type:key=spec
  148. +spec:spec=lower,upper
  149. +trigger=command:tv_set_visual_filter (%o, @config_set_string (filters/%k, @ask_text (Enter filter %k,,@config_try_get_string (filters/%k, @tv_get_visual_filter (%o)))), 1)
  150. +
  151. +# VF: by age
  152. +[key_modes/donna/key_ampersand]
  153. +type:key=combine
  154. +spec:spec=custom
  155. +custom_chars=HMSdmVY
  156. +combine=age_unit
  157. +[key_modes/donna/key_q]
  158. +combine=age_unit
  159. +trigger=command:tv_set_visual_filter (%o, time:A%m%c)
  160. +[key_modes/donna/key_Q]
  161. +combine=age_unit
  162. +trigger=command:tv_set_visual_filter (%o, time:A<=%m%c)
  163. +
  164. +# VF: by size
  165. +[key_modes/donna/key_less]
  166. +trigger=command:tv_set_visual_filter (%o, size:<=%mM)
  167. +[key_modes/donna/key_greater]
  168. +trigger=command:tv_set_visual_filter (%o, size:>=%mM)
  169. +
  170. +
  171. +# F2 to rename
  172. +[key_modes/donna/key_F2]
  173. +trigger=command:tv_column_edit (%o, %n, name)
  174.  # F6 to edit focused item (vim in a terminal)
  175.  [key_modes/donna/key_F6]
  176. -trigger=exec:>vim %:n
  177. +trigger=exec:!vim %:n
  178.  # F9 to view focused item (less in a terminal)
  179.  [key_modes/donna/key_F9]
  180. -trigger=exec:>less %:n
  181. +trigger=exec:!less %:n
  182. +
  183. +# Terminals
  184. +[key_modes/donna/key_t]
  185. +trigger=exec:!bash
  186. +[key_modes/donna/key_T]
  187. +trigger=exec:>bash
  188.  
  189.  # selection stuff -- note that this required a patched GTK (to invert range)
  190.  [key_modes/donna/key_v]
  191. @@ -897,6 +953,17 @@ trigger=command:tv_save_tree_file (%o, %o, all)
  192.  name=Save Tree As...
  193.  trigger=command:tv_save_tree_file (%o, @ask_text (Save Tree As...,Enter the name of the file), all)
  194.  
  195. +[context_menus/tree_views/terminal]
  196. +name=Open Terminal Here
  197. +icon=terminal
  198. +is_sensitive=has_ref
  199. +trigger=exec:!WORKDIR=%:n bash
  200. +
  201. +[context_menus/tree_views/terminal_nw]
  202. +name=...In New Window
  203. +is_sensitive=has_ref
  204. +trigger=>WD=%:n bash
  205. +
  206.  [context_menus/tree_views/tree_visuals]
  207.  type:context-type=empty
  208.  is_sensitive=has_ref
  209. @@ -909,6 +976,10 @@ name=Tree Options
  210.  icon=preferences-desktop
  211.  submenu:enabled=enabled
  212.  
  213. +[context_menus/tree_views/save_tree_to_config]
  214. +name=Save all options to configuration
  215. +trigger=command:tv_save_to_config (%o,:options)
  216. +
  217.  
  218.  #   LIST-SPECIFIC
  219.  
  220. @@ -963,6 +1034,10 @@ type:context-type=empty
  221.  name=List Options
  222.  submenus:enabled=enabled
  223.  
  224. +[context_menus/tree_views/save_list_to_config]
  225. +name=Save to configuration...
  226. +trigger=command:tv_save_to_config (%o)
  227. +
  228.  # Selection
  229.  
  230.  [context_menus/tree_views/selection_select]
  231. @@ -1088,7 +1163,33 @@ not_active_list=true
  232.  #
  233.  
  234.  [providers/exec]
  235. -terminal=urxvt -hold -e
  236. +default_mode:exec-mode=exec
  237. +prefix_exec=&
  238. +prefix_exec_and_wait=:
  239. +prefix_terminal=>
  240. +prefix_embedded_terminal=!
  241. +prefix_parse_output=<
  242. +prefix_desktop_file==
  243. +[providers/exec/terminal]
  244. +cmdline=urxvt -e
  245. +[providers/exec/terminal/]
  246. +prefix=>
  247. +cmdline=urxvt -hold -e
  248. +[providers/exec/embedded_terminal]
  249. +terminal=term
  250. +[providers/exec/embedded_terminal/]
  251. +prefix=!
  252. +terminal=term
  253. +terminal_cmdline=:hold
  254. +
  255. +
  256. +#
  257. +#       TERMINALS
  258. +#
  259. +
  260. +[terminals/term]
  261. +cmdline=urxvt -embed %w -e
  262. +cmdline_hold=urxvt -embed %w -hold -e
  263.  
  264.  
  265.  #
  266. @@ -1100,4 +1201,25 @@ node=config:/
  267.  box=box-orange
  268.  
  269.  
  270. +#
  271. +#       FILTERS
  272. +#
  273. +
  274. +[filters]
  275. +# used to unset current VF (via ff)
  276. +f=
  277. +# today
  278. +t=time:A0
  279. +# yesterday
  280. +y=time:A1d
  281. +# this week
  282. +w=time:A0V
  283. +# videos
  284. +v=desc:* video
  285. +# images
  286. +i=desc:* image
  287. +# archives
  288. +a=desc:* archive*
  289. +
  290. +
  291.  # EOF

Downloads and whatnot

See donnatella for longer descriptions & all the links you should need.

And of course, as always, new bug reports, suggestions or any other form of constructive criticism is very much welcome.

Top of Page