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

Fer*_*oss 46 nautilus

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

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

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

Ali*_*ton 26

您可以通过重新编译 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
Run Code Online (Sandbox Code Playgroud)

将第 77 行从

"attribute", "date_modified",
Run Code Online (Sandbox Code Playgroud)

"attribute", "date_modified_full",
Run Code Online (Sandbox Code Playgroud)

重建并安装修改后的包:

quilt refresh
fakeroot dpkg-buildpackage
cd ..
killall nautilus
sudo dpkg -i nautilus_*.deb
nautilus &
Run Code Online (Sandbox Code Playgroud)

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

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

导致这一变化的实际补丁是这个

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

这个函数永远不会被直接调用——它是通过包装函数访问的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 行代码。

  • 这就是我喜欢开源的原因——当开发人员发疯时,我可以自己修复它。 (16认同)
  • 这仍然是目前处理这个问题的唯一方法吗? (6认同)
  • @AlistairBuxton 您是否尝试过向 Gnome 开发人员提交第二个补丁?如果他们至少可以给我们一个选择而不是让完整日期不可用,那就太好了…… (4认同)
  • 我不再使用 Nautilus,我建议你也这样做。 (4认同)
  • 这是否在更新的版本中得到修复(这样我就不必重新编译)? (2认同)
  • 现在呢?任何更新?Ubuntu 正在放弃 Unity 以支持 GNOME,当然有些事情已经改变了。 (2认同)

blu*_*e10 15

这篇博文展示了一个更简单的解决方案。它基于创建一个可以选择作为替代“修改列”的扩展。在 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))
    
    Run Code Online (Sandbox Code Playgroud)
  3. chmod +x ~/.local/share/nautilus-python/extensions/longdate.py

  4. sudo apt install python-nautilus

  5. nautilus -qnautilus .重新启动 Nautilus 并查看它是否正确加载了扩展。

  6. 在列表列首选项中选择新的“Longdate”列。

结果将如下所示:

例子

  • 首先安装 nautilus-python:`sudo apt-get install python-nautilus` (4认同)

dou*_*oug 5

对于那些使用trusty& 不想编译的人,我已经为修补的 nautilus 设置了一个测试 ppa。(使用 Alistair Buxton 的补丁

该版本目前还包括 2 个错误修复补丁,1 个来自 trusty-proposed,1 个来自 utopic。

此外,我已经测试了 3 个小补丁,并且没有造成任何问题。

  1. 打开文件夹

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

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

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

可以通过 nautilus 在listview> View > Visible Columns.. 或通过 nautilus > Edit > Preferences > List Columns添加“修改(完整)”列

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

阅读 ppa 页面了解信息以及如何在需要时轻松恢复。