36

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

23

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.

  • 11
    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
  • 2
    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
  • 2
    this is why people still use Micosoft Windows ! how i love microsoft:-) Ffs it is 2016 and this basic functionality is missing? – joedotnot Oct 9 '16 at 9:26
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
  • @ Hannu, no clue as to why you found the list view option so 'hard' to find, no such issues here. As far as modifying, well download the debian.tar.xz file from ppa, you'll find the date-time.patch inside the patches folder, have at it. – doug Jan 24 '16 at 15:26
3

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

  • 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 at 13:22

protected by Community Aug 3 '16 at 16:45

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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