39

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+?

24

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: https://git.gnome.org/browse/nautilus/commit/?id=3fd9cba41e56f44ed955b28755ad03135026d021

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 on 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.

  • 12
    This is why I love open source - when the developers go crazy, I can fix it myself. – Alistair Buxton Apr 26 '13 at 18:58
  • 6
    Is this currently still the only way to handle this issue? – Philippe Jul 9 '13 at 17:13
  • 3
    @AlistairBuxton Have you tried submitting the second patch to the Gnome developers? It would be great if they could at least give us a choice instead of keeping the full date unavailable… – n.st May 11 '14 at 14:46
  • 3
    I no longer use Nautilus and I suggest you do the same. – Alistair Buxton May 11 '14 at 15:24
  • 2
    Has this been fixed in more recent versions (so that I don't have to recompile)? – becko May 31 '16 at 20:04
6

For those using trusty & not wishing to compile I've set up a test ppa for a patched nautilus. (using Alistair Buxton's patch

The build currently also includes 2 bug fix patches, 1 from trusty-proposed, 1 from utopic.

Additionally there are 3 minor patches that have been tested by me over quite some time & pose no issues.

  1. open with on folders

  2. real file owner name displayed instead of "Me"

  3. File Manager as name of launcher

The 'date-time' patch I've tested a bit, seen no issues. For those inclined to try - if any issue found contact me thru launchpad email.

The "Modified (full)" column can be added thru nautilus in listview > View > Visible Columns.. or thru nautilus > Edit > Preferences > List Columns

https://launchpad.net/~mc3man/+archive/nauty-mods

Read ppa page for info & how to easily revert if need be.

  • I can't seem to get this nautilus version installed. sudo apt-get install nautilus just concludes that latest is already installed. Trying sudo apt-get --reinstall install nautilus reinstalls, but the very same that there already is. Do you by any chance have something for e.g. /etc/apt/preferences.d/ that makes this thing actually get installed, or how else to do it? (on Trusty) – Hannu Jan 23 '16 at 15:11
  • @ Hannu, try again, needed to be updated – doug Jan 23 '16 at 20:47
  • dpkg --list | grep nautilus showed the ...+date version. Retried, several times. Only after having rebooted with this version installed, then delved into the Terminal and there after using nautilus --no-desktop (unsure if it appeared there) and then nautilus --force-desktop I - at last - found the "Modified (full)" option in the list view. Now it seems to be present at all times. question: Can the content be modified? e.g. I'd hope as for use of "strftime()" ? – Hannu Jan 24 '16 at 15:09
  • Hmm... might it be LC_TIME=... that specifies the format? – Hannu Jan 24 '16 at 15:22
  • 1
    An unprejudiced request for next time you update the ppa, please consider adding yet another format for the Modifed column; same as date +'%Y-%m-%d, %T' – Hannu Jan 30 '16 at 13:41
5

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.

  1. gedit ~/.local/share/nautilus-python/extensions/longdate.py

  2. Use this code:

#!/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))
  1. chmod +x ~/.local/share/nautilus-python/extensions/longdate.py

  2. nautilus -q and nautilus . to restart Nautilus and see if it properly loads the extension.

  3. Select the new "longdate" column in the list column preferences.

The result will look like this:

example

  • 2
    First install nautilus-python: sudo apt-get install python-nautilus – DrMoishe Pippik Aug 26 '18 at 4:47
  • Thanks a lot - it seems to work in Disco - Ubuntu 19.04 ! But you can not sort by Longdate. Unfortunately I can not fix that myself. Great job anyways. As @Alistair Buxton said: This is why I love open source - when the developers go crazy, I can fix it myself. Well, with your help! THX. – opinion_no9 Jan 13 '19 at 13:22
  • This isn't working on Nautilus ("Files" 3.10.1) on Ubuntu 14.04. When Nautilus is started from command line, it says Nautilus-Share-Message: Called "net usershare info" but it failed: 'net usershare' returned error 255: net usershare: cannot open usershare directory /var/lib/samba/usershares. Error No such file or directory Please ask sysadm to enable user sharing. Then six times ** (nautilus:21161): CRITICAL **: nautilus_menu_provider_get_background_items: assertion 'NAUTILUS_IS_FILE_INFO (current_folder)' failed. The would-be new column doesn't show in the choices. – wallyk Feb 20 '19 at 15:02

Not the answer you're looking for? Browse other questions tagged or ask your own question.