Coming next to donnatella...

A couple of weeks ago was the first public release of donnatella, and for those of you trying it out, you don't have to wait for the next release. The branch next on github already contains a few things.

For Arch Linux users, you can use donnatella-git in the AUR to easilly get it.

An event for log messages

Firstly, donna now has an event log for some of its log messages, specifically those at levels MESSAGE, INFO, WARNING and CRITICAL. (The others ones are for debugging purposes, and you should run donna from a terminal then, really.)

Alongside a new source (:app) for the statusbar, this will allow to have some feedback for such messages, even when running donna without a terminal, as most people would.

This new source will show the last log message, for as long as specified via option timeout (in seconds). Of course it can be set to 0 for unlimited, but you can also have it time out after a bit, and then use option format to specify what (if anything) should be shown. The same variables are available as for the window title, so that includes active list, current location, etc

Having those messages shown in the UI will become more and more useful in time, because in addition to warnings whenever something not quite right happens, donna will use INFO messages to provide non essential feedback; For example, right now it happens when you set/add nodes to a register, or when loading/saving a treeview from/to a file. Of course over time, more will be added.

Dealing with options & config

Some changes were also done regarding options & configuration. By default in donna so far, changing treeview/column options would only have the new value set in memory, nothing was saved to the configuration.

A new treeview option (which applies to all its options, i.e. including column options) allows to set the default save location: in memory, in current location, or ask.

So now you can be asked, when changing an option, where and if it should be saved to configuration.

Now, there are still a few things that can only be changed in memory, e.g. the sort order or the column layout - that is, which columns are visible & in what order. Also about that, new commands are available to toggle columns or set a new column layout.

Which is why a new command was introduced, to save a few things to configuration: treeview options, column options, column layout and (second) sort order. You can of course chose which of those to save (including which column to save options of), and where.

Updating your config to benefit from all of this

Now, there's still work to do when it comes to upgrades in donna. Specifically, there isn't currently a way to update/import new defaults, so that is a manual operation. Archers, think of this as some king of .pacnew handling! ;)

Here's the patch to update your donnatella.conf :

  1. diff --git a/misc/donnatella.conf b/misc/donnatella.conf
  2. index 57f69b1..39ac154 100644
  3. --- a/misc/donnatella.conf
  4. +++ b/misc/donnatella.conf
  5. @@ -78,7 +78,7 @@ replacement=exec:<pacman -Qlq
  6.  #
  7.  
  8.  [statusbar]
  9. -areas=tasks,active,keys,focus
  10. +areas=tasks,active,log,keys,focus
  11.  
  12.  [statusbar/tasks]
  13.  source=:task
  14. @@ -87,9 +87,16 @@ expand=false
  15.  
  16.  [statusbar/active]
  17.  source=:active
  18. +expand=false
  19.  format=%v/%a files (%V) %N
  20.  size_format=%R
  21.  
  22. +[statusbar/log]
  23. +source=:app
  24. +format=%d
  25. +format_tooltip=donnatella v%v
  26. +timeout=5
  27. +
  28.  [statusbar/keys]
  29.  source=:focused
  30.  format=%k
  31. @@ -155,12 +162,13 @@ notify=exec:&notify-send "Donnatella: A task just failed" %N
  32.  [defaults/trees]
  33.  click_mode=tree
  34.  key_mode=donna
  35. +default_save_location:save-location=ask
  36.  node_types:node-type=containers
  37.  show_hidden=false
  38.  sort_groups:sg=first
  39.  select_highlight:highlight=column
  40.  context_menu_menus=context
  41. -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>
  42. +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,-,save_tree_to_config>,-,@register,-,:register:+<@register:+>,-,:refresh<@refresh>
  43.  
  44.  [defaults/trees/arrangement]
  45.  columns=name
  46. @@ -172,6 +180,7 @@ sort_column=name
  47.  [defaults/lists]
  48.  click_mode=list
  49.  key_mode=donna
  50. +default_save_location:save-location=ask
  51.  show_hidden=true
  52.  node_types:node-type=all
  53.  sort_groups:sg=first
  54. @@ -183,7 +192,7 @@ context_menu_menus=context
  55.  context_menu=@go:tree,marks,-,add_to_tree<add_as_root>,-,!new_nodes,-,@register,-,@selection,-,column_edit<!column_edit>,-,:refresh<@refresh>
  56.  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>
  57.  context_menu_task=@selection,-,:refresh<@refresh>,-,@tasks
  58. -context_menu_colheader=columns<!columns>,-,:sort_order<!sort_order>,:second_sort_order<!second_sort_order>,-,options<column_options<!column_options>,list_options<!tv_options>>
  59. +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
  60.  
  61.  # some color filters
  62.  
  63. @@ -299,7 +308,7 @@ format_tooltip=%p (%o)
  64.  color_user=green
  65.  color_group=blue
  66.  color_mixed=#00aaaa
  67. -sort=1
  68. +sort:sort-perms=myperms
  69.  
  70.  
  71.  #   COLUMNS
  72. @@ -335,7 +344,7 @@ title=Own
  73.  width=70
  74.  format=%V:%H
  75.  format_tooltip=
  76. -sort=3
  77. +sort:sort-perms=user
  78.  
  79.  [defaults/lists/columns/desc]
  80.  type:ct=text
  81. @@ -909,6 +918,10 @@ name=Tree Options
  82.  icon=preferences-desktop
  83.  submenu:enabled=enabled
  84.  
  85. +[context_menus/tree_views/save_tree_to_config]
  86. +name=Save all options to configuration
  87. +trigger=command:tv_save_to_config (%o,:options)
  88. +
  89.  
  90.  #   LIST-SPECIFIC
  91.  
  92. @@ -963,6 +976,10 @@ type:context-type=empty
  93.  name=List Options
  94.  submenus:enabled=enabled
  95.  
  96. +[context_menus/tree_views/save_list_to_config]
  97. +name=Save to configuration...
  98. +trigger=command:tv_save_to_config (%o)
  99. +
  100.  # Selection
  101.  
  102.  [context_menus/tree_views/selection_select]

And of course there were a few bugfixes here and there, for a complete list please refer to the git log. With that, I go back to coding, with idea being that next time, hopefully we'll talk inline terminal...

In case you read all that and are wondering what donnatella is, or are looking for more information, download links, etc please refer to donnatella.

As always, bug reports, suggestions or any other form of constructive criticism is very much welcome. You can open issues on github, use the thread on Arch Linux forums, or simply email me.

Top of Page