How to show full date and time in Nautilus/Files 3.6+ list view?
The list view of Nautilus 3.6 shows the dates files were modified in a variety of ways: the hour and minute if modified on the current day, and the month and day if modified during the current year, and the year tacked on if modified during a previous year. I would like to see the entire date and time consistently on all the files (e.g.: Sat 20 Apr 2012 01:28:34 PM EDT
).
I had this set up before, but I can't figure out how to do so with version 3.6. I did find this question, but the answers no longer apply to Nautilus 3.6: How to change the date format in Nautilus list columns?
How can I do so in Nautilus 3.6+?
You can get back the full date by recompiling nautilus:
sudo apt-get build-dep nautilus
sudo apt-get install quilt
export QUILT_PATCHES=debian/patches
apt-get source nautilus
cd nautilus*
quilt new 999_full_dates.patch
quilt edit libnautilus-private/nautilus-column-utilities.c
Change line 77 from
"attribute", "date_modified",
to
"attribute", "date_modified_full",
Rebuild and install modified package:
quilt refresh
fakeroot dpkg-buildpackage
cd ..
killall nautilus
sudo dpkg -i nautilus_*.deb
nautilus &
As always, you have to perform these steps every time there is an update for nautilus in Ubuntu.
Now, a full analysis of the problem:
The actual patch which caused this change is this one.
The function nautilus_file_get_date_as_string
gains an extra gboolean parameter "compact" - when true the abbreviated date is returned.
This function is never called directly - it is accessed through the wrapper function nautilus_file_get_string_attribute_q
. This function takes attribute parameters like "date_modified". To accommodate the new signature of nautilus_file_get_date_as_string
a new attribute is added "date_modified_full
". After this change, any code in nautilus which uses the file date string will get the abbreviated date.
Finally, the file properties dialog is updated to use "date_modified_full" attribute.
So in order to have nautilus display the full date in list view, it is only necessary to change one line of code: in libnautilus-private/nautilus-column-utilities.c, line 77 from "date_modified" to "date_modified_full".
A slightly more useful patch could add a new column type which would show the full date, making this an optional feature, and only add 10 lines of code.
This blog post shows a much easier solution. It is based on creating an extension which can be selected as an alternative "modified column". Tested under 16.04.
-
gedit ~/.local/share/nautilus-python/extensions/longdate.py
-
Use this code (always copy code you trust):
#!/usr/bin/env python import os import urllib import datetime from gi.repository import Nautilus, GObject class ColumnExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoProvider): def __init__(self): pass def get_columns(self): return (Nautilus.Column( name="NautilusPython::Longdate", attribute="longdate", label="Longdate", description="Get long date"),) def update_file_info(self, file): if file.get_uri_scheme() != 'file': return filename = urllib.unquote(file.get_uri()[7:]) statbuf = os.stat(filename) formatteddate = datetime.datetime.fromtimestamp(statbuf.st_mtime).strftime('%Y-%m-%d %H:%M:%S') file.add_string_attribute('longdate', str(formatteddate))
-
chmod +x ~/.local/share/nautilus-python/extensions/longdate.py
-
sudo apt install python-nautilus
-
nautilus -q
andnautilus .
to restart Nautilus and see if it properly loads the extension. -
Select the new "Longdate" column in the list column preferences.
The result will look like this: