如何在Nautilus / Files 3.6+列表视图中显示完整的日期和时间?


39

Nautilus 3.6的列表视图显示以多种方式修改日期文件:如果在当前日期修改,则为小时和分钟;如果在当前年份修改,则为月和日;如果在当前日期修改,则附加年份。前一年。我想在所有文件(例如:)上一致地看到整个日期和时间Sat 20 Apr 2012 01:28:34 PM EDT

我之前已经进行了此设置,但是我不知道如何使用3.6版进行设置。我确实找到了这个问题,但是答案不再适用于Nautilus 3.6:如何更改Nautilus列表列中的日期格式?

如何在Nautilus 3.6+中执行此操作?


看一下精确度和稀有度上的设置,它们是相同的,因此我假设它是从鹦鹉螺中删除的功能,也许有可以重新添加它的插件或脚本。
Davmor2

3
此提交删除了gsettings中的日期格式密钥:git.gnome.org/browse/nautilus/commit/libnautilus-private/…属于此bug报告:bugzilla.gnome.org/show_bug.cgi?
djfun

3
指向“错误”的链接,要求恢复功能:bugzilla.gnome.org/show_bug.cgi?
id=699055

发生在v3.14.2上。一位名叫Carlos的人在goo.gl/AE7FRA中评论说,此问题已在nautilus v3.16中修复。
AlikElzin-kilaka 2016年

1
@becko Ubuntu 16.04随附于Nautilus 3.14。该版本未修复。我尚未测试3.16。
Aibara

Answers:


24

您可以通过重新编译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

将第77行从

"attribute", "date_modified",

"attribute", "date_modified_full",

重建并安装修改后的软件包:

quilt refresh
fakeroot dpkg-buildpackage
cd ..
killall nautilus
sudo dpkg -i nautilus_*.deb
nautilus &

与往常一样,每次Ubuntu中有鹦鹉螺的更新时,您都必须执行这些步骤。

现在,对问题进行全面分析:

导致此更改的实际补丁是这样的:https : //git.gnome.org/browse/nautilus/commit/?id=3fd9cba41e56f44ed955b28755ad03135026d021

函数nautilus_file_get_date_as_string获得一个额外的gboolean参数“ compact”-如果为true,则返回缩写日期。

从不直接调用此函数-通过包装函数nautilus_file_get_string_attribute_q访问。该函数采用属性参数,例如“ date_modified”。为了适应nautilus_file_get_date_as_string的新签名,添加了一个新属性“ date_modified_full”。进行此更改之后,nautilus中使用文件日期字符串的任何代码都将获得缩写日期。

最后,文件属性对话框将更新为使用“ date_modified_full”属性。

因此,为了使Nautilus在列表视图中显示完整日期,只需更改代码行:在libnautilus-private / nautilus-column-utilities.c中,将第77行从“ date_modified”更改为“ date_modified_full”。

稍微有用的补丁程序可以添加一个新的列类型,该类型将显示完整日期,这使其成为可选功能,并且仅添加10行代码。


12
这就是为什么我喜欢开源-当开发人员发疯时,我可以自己修复它。
Alistair Buxton

6
目前是否仍然是处理此问题的唯一方法?
菲利普(Philippe)

3
@AlistairBuxton您是否尝试过将第二个补丁提交给Gnome开发人员?如果他们至少可以给我们一个选择,而不是使整个日期不可用,那将是很好的……
n.st 2014年

3
我不再使用Nautilus,建议您也这样做。
阿利斯泰尔·布克斯顿

2
是否已在较新的版本中对此进行了修复(这样我就不必重新编译)?
becko '16

6

对于那些使用trusty&不希望编译的人,我为修补的鹦鹉螺设置了测试ppa。(使用Alistair Buxton的补丁

该构建当前还包括2个错误修复补丁,其中1个来自可信赖的提议,1个来自utopic。

另外,有3个次要补丁已由我测试了一段时间,并且没有任何问题。

  1. 在文件夹上打开

  2. 显示真实的文件所有者名称,而不是“我”

  3. 文件管理器作为启动器名称

我测试了一下“日期时间”补丁,没有发现任何问题。对于那些想尝试的人-如果发现任何问题,请通过启动板电子邮件与我联系。

可以通过Nautilus在listview>视图>可见列..或通过Nautilus>编辑>首选项>列表列中添加“已修改(完整)” 列。

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

阅读ppa页以获取信息以及如何根据需要轻松还原。


我似乎无法安装此Nautilus版本。sudo apt-get install nautilus得出结论latest is already installed。尝试sudo apt-get --reinstall install nautilus重新安装,但是已经存在。您是否有任何机会例如/etc/apt/preferences.d/可以实际安装此东西,或者如何进行安装?(在Trusty上)
Hannu

@ Hannu,再试一次,需要更新
doug

dpkg --list | grep nautilus显示了...+date版本。重试了几次。仅在重新安装此版本后重新启动,然后在使用后进入终端并进入那里nautilus --no-desktop(不确定它是否在那里出现),然后nautilus --force-desktop我终于在列表视图中找到“已修改(完整)”选项。现在似乎一直存在。问题:可以修改内容吗?例如,我希望使用“ strftime()”吗?

嗯...可能是LC_TIME=...指定格式吗?
汉奴

1
对于下次更新ppa的请求没有偏见,请考虑为“修改”列添加另一种格式;与date +'%Y-%m-%d, %T'
Hannu

4

这篇博客文章显示了一个简单得多的解决方案。它基于创建扩展名,可以选择该扩展名作为替代“修改后的列”。在16.04下测试。

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

  2. 使用此代码:

#!/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 -qnautilus .重新启动Nautilus,看看它是否正确加载了扩展。

  3. 在列表列首选项中选择新的“ longdate”列。

结果将如下所示:

例


2
首次安装nautilus-python:sudo apt-get install python-nautilus
DrMoishe Pippik

非常感谢-它似乎可以在Disco中使用-Ubuntu 19.04!但是您不能按Longdate排序。不幸的是,我自己无法解决这个问题。反正很好。正如@Alistair Buxton所说:这就是为什么我喜欢开源-当开发人员发疯时,我可以自己修复它。好吧,在您的帮助下!谢谢。
opinion_no9

这在Ubuntu 14.04上的Nautilus(“文件” 3.10.1)上不起作用。从命令行启动Nautilus时,显示“ 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请询问sysadm启用用户共享”。然后六次** (nautilus:21161): CRITICAL **: nautilus_menu_provider_get_background_items: assertion 'NAUTILUS_IS_FILE_INFO (current_folder)' failed。可能的新列未显示在选择中。
wallyk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.