A new version of donnatella, your GTK3 file manager, is available. A bunch of fixes and improvments/optimizations since 0.2.0, some new things as well, the most "important" ones being the addition of custom properties, and facilities for scripting
Sicne day one, things have been quite configurable in donna, but there was no scripting support. Instead, donna uses commands and lets you combine them as you want, assign them a click or key, etc And when that's not enough? Well, then you script.
It is now possible to communicate with donna, i.e. trigger commands (nodes,
really, it's not actually limited to commands) and get their return values. All
this easilly in any language of your choice, either using the socket directly or
via helper donna-trigger
And if you could always configure donna as you wanted, defining the layout and configuring columns as you'd like, things can now go even further via the addition of custom properties.
You'll now be able to have columns for video duration, uncompressed size of archives, or whatever you can come up with!
Changes since 0.2.0
Quick recap over the different changes since last version :
- Add command
exec()
See this post for more - Add event "notify-dirname" when current directory changes
- provider-exec: Parse environment variables See this post for more
- Add custom properties See this post and this one for more
- treeview:
save_to_config()
: Fix not saving right column layout - ColumnType text: Add tooltip, and option
property_tooltip
- ColumnType time: Support ":property" & ":format" in tooltip options
- treeview: Fix not refreshing column options saved to arrangement/defaults
- tree: Trigger flat item when selected
- config: Fix not exporting/saving empty categories
- Command
config_save()
: Emit event info upon save - ColumnType time: Remove tooltip versions of some options (not needed/useful)
- ColumnType time: Add new specifier
%f
for "fluid" format See this post for more - ColumnTypes time, perms & text: Add option
align
- Add a socket to communicate with donna from e.g. scripts; as well as helper
donna-trigger
See this post for more - Add command
intref_free()
- tree: Add commands
root_{g,s}et_child_visual()
to get/set tree visuals even for a row that isn't accessible or not yet loaded - Add provider filter to handle filters See this post for more
- Add command
get_node_from()
- Add command
node_set_property()
- Provider command: Add prefix '<' to make the node a container instead of an item: See this post for more
- Content menus: Add new context-type "combined" for defining both the item and the submenu (via container) part of a menu item. See this post for more
- Add command
node_get_children()
- Add command
nodes_add()
- Add provider mru to maintain Most Recently Used lists. See this post for more
- Menus: Fix keys (e.g. Enter) not triggering items
- Add
$DONNATELLA_CONFIG_DIR
& extend$PATH
(for scripts) See this post for more - Add commands
{nodes,strings}_{len,get_item}
- GTK+3.14 fixes/compatibility changes, update patchset
gtk3-donnatella
- list: Fix refreshing relative line number column (when not first one)
- 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.2.0 and 0.3.0 :
| diff --git a/misc/donnatella.conf b/misc/donnatella.conf
index b6b2a03..b9810df 100644
--- a/misc/donnatella.conf
+++ b/misc/donnatella.conf
@@ -136,6 +136,7 @@ key_mode_select_foreground=white
last_location=command:tv_set_location (:active, @config_get_string (donna/last_location))
marks=command:mark_load (,1)
registers=command:register_load_all (,1)
+filters=command:filter_load ()
# enable when using layout "tm"
#tm=@tv_set_location(tm,task:/)
@@ -205,7 +206,7 @@ context_menu_colheader=columns<!columns>,-,:sort_order<!sort_order>,:second_sort
# some color filters
[defaults/lists/arrangement/color_filters/]
-filter=|*.tar.*|*.tgz|*.zip|*.rar
+filter=|a
column=name
foreground=green
@@ -231,25 +232,25 @@ foreground-rgba=rgb(108,0,0)
[defaults/lists/arrangement/color_filters/]
# modified less than an hour ago
-filter=time:A<=1H
+filter=|h
column=time
foreground-rgba=rgb(0,80,210)
[defaults/lists/arrangement/color_filters/]
# modified today
-filter=time:A0d
+filter=|t
column=time
foreground-rgba=rgb(0,150,200)
[defaults/lists/arrangement/color_filters/]
# modified yesterday
-filter=time:A1d
+filter=|y
column=time
foreground-rgba=rgb(0,200,160)
[defaults/lists/arrangement/color_filters/]
# modified this week
-filter=time:A0V
+filter=|w
column=time
foreground-rgba=rgb(0,180,0)
@@ -410,7 +411,7 @@ type:ct=name
# File System
[arrangements/]
-mask=fs:/*
+mask=^fs:/
columns=ln,name,size,time,perms,own
sort_column=name
sort_order:order=asc
@@ -423,7 +424,7 @@ second_sort_always=true
# Search Results
[arrangements/]
-mask=exec:*
+mask=^exec:
columns=ln,path,name,size,time,perms,own
sort_column=path
sort_order:order=asc
@@ -440,7 +441,7 @@ width=285
# Configuration
[arrangements/]
-mask=config:/*
+mask=^config:/
columns=ln,name,opt-type,value
[arrangements//columns_options/name]
@@ -453,7 +454,7 @@ width=420
# Task Manager
[arrangements/]
-mask=task:/*
+mask=^task:/
columns=ln,name,progress,text,label
[arrangements//columns_options/name]
@@ -479,7 +480,7 @@ width=80
# Marks
[arrangements/]
-mask=mark:/*
+mask=^mark:/
columns=ln,name,mark-type,mark-value
[arrangements//columns_options/name]
@@ -783,11 +784,9 @@ trigger=command:tv_start_interactive_search (%o)
[key_modes/donna/key_f]
type:key=spec
spec:spec=lower,upper
-trigger=command:tv_set_visual_filter (%o, @config_get_string (filters/%k), 1)
+trigger=command:tv_set_visual_filter (%o, filter:|%k, 1)
[key_modes/donna/key_F]
-type:key=spec
-spec:spec=lower,upper
-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)
+trigger=command:tv_set_visual_filter (%o, @get_node_from (filter, @ask_text (Enter visual filter,, @node_get_property (@tv_get_visual_filter (%o), location))))
# VF: by age
[key_modes/donna/key_ampersand]
@@ -797,16 +796,16 @@ custom_chars=HMSdmVY
combine=age_unit
[key_modes/donna/key_q]
combine=age_unit
-trigger=command:tv_set_visual_filter (%o, time:A%m%c)
+trigger=command:tv_set_visual_filter (%o, filter:time:A%m%c)
[key_modes/donna/key_Q]
combine=age_unit
-trigger=command:tv_set_visual_filter (%o, time:A<=%m%c)
+trigger=command:tv_set_visual_filter (%o, filter:time:A<=%m%c)
# VF: by size
[key_modes/donna/key_less]
-trigger=command:tv_set_visual_filter (%o, size:<=%mM)
+trigger=command:tv_set_visual_filter (%o, filter:size:<=%mM)
[key_modes/donna/key_greater]
-trigger=command:tv_set_visual_filter (%o, size:>=%mM)
+trigger=command:tv_set_visual_filter (%o, filter:size:>=%mM)
# F2 to rename
@@ -814,16 +813,16 @@ trigger=command:tv_set_visual_filter (%o, size:>=%mM)
trigger=command:tv_column_edit (%o, %n, name)
# F6 to edit focused item (vim in a terminal)
[key_modes/donna/key_F6]
-trigger=exec:!vim %:n
+trigger=exec:!$EDITOR %:n
# F9 to view focused item (less in a terminal)
[key_modes/donna/key_F9]
-trigger=exec:!less %:n
+trigger=exec:!$LESS %:n
# Terminals
[key_modes/donna/key_t]
-trigger=exec:!bash
+trigger=exec:!$SHELL
[key_modes/donna/key_T]
-trigger=exec:>bash
+trigger=exec:>$SHELL
# selection stuff -- note that this required a patched GTK (to invert range)
[key_modes/donna/key_v]
@@ -957,12 +956,12 @@ trigger=command:tv_save_tree_file (%o, @ask_text (Save Tree As...,Enter the name
name=Open Terminal Here
icon=terminal
is_sensitive=has_ref
-trigger=exec:!WORKDIR=%:n bash
+trigger=exec:!WORKDIR=%:n $SHELL
[context_menus/tree_views/terminal_nw]
name=...In New Window
is_sensitive=has_ref
-trigger=>WD=%:n bash
+trigger=>WD=%:n $SHELL
[context_menus/tree_views/tree_visuals]
type:context-type=empty
@@ -1054,8 +1053,12 @@ name=Invert Selection
trigger=command:tv_selection (%o, i, :all)
[context_menus/tree_views/selection_filter]
+type:context-type=combined
name=Selection Filter...
-trigger=command:tv_selection_nodes (%o, d, @nodes_filter (@tv_get_nodes (%o, :all), @ask_text (Selection Filter,Enter the selection filter to apply), %o))
+trigger=&donna-sel_filter %o
+container=@<nodes_add (@nodes_add(@mru_get_nodes (mru:sel_filter)), filter:/)
+submenus:enabled=combine
+menu=sel_filter
# Timestamp stuff
@@ -1091,6 +1094,12 @@ children:node-type=items
sort=true
left_click=command:tv_goto_line (:active, s+f, @nodes_io (%n, c, @tv_get_location (:active), @ask_text (New Items,Enter the name of the item to create,@node_get_property(%n,name))))
+# Selection Filters
+[menus/sel_filter]
+sort=false
+submenus:enabled=enabled
+left_click=command:tv_selection_nodes (:active, d, @nodes_filter (@tv_get_nodes (:active, :all), @mru_add_node (mru:sel_filter, %n), :active))
+
# to show children but not hidden/dotFiles
[menus/children_not_hidden]
sort=true
@@ -1181,6 +1190,42 @@ terminal=term
prefix=!
terminal=term
terminal_cmdline=:hold
+[providers/filter/]
+alias=f
+name=No filtering
+icon_name=edit-delete
+filter=
+[providers/filter/]
+alias=h
+name=Within the hour
+filter=time:A<=1H
+[providers/filter/]
+alias=t
+name=Today
+icon_name=vcalendar
+filter=time:A0
+[providers/filter/]
+alias=y
+name=Yesterday
+filter=time:A1d
+[providers/filter/]
+alias=w
+name=This week
+filter=time:A0V
+[providers/filter/]
+alias=v
+name=Videos
+icon_name=video
+filter=desc:* video
+[providers/filter/]
+alias=i
+name=Images
+icon_name=image
+filter=desc:* image
+[providers/filter/]
+alias=a
+name=Archives
+filter=desc:* archive*
#
@@ -1201,25 +1246,4 @@ node=config:/
box=box-orange
-#
-# FILTERS
-#
-
-[filters]
-# used to unset current VF (via ff)
-f=
-# today
-t=time:A0
-# yesterday
-y=time:A1d
-# this week
-w=time:A0V
-# videos
-v=desc:* video
-# images
-i=desc:* image
-# archives
-a=desc:* archive*
-
-
# 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.