วิธีการแสดงวันที่และเวลาแบบเต็มในมุมมองรายการ 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+ ได้อย่างไร


ดูการตั้งค่าที่แม่นยำและ raring พวกเขาเหมือนกันดังนั้นฉันคิดว่ามันเป็นคุณสมบัติที่ถูกลบออกจาก nautilus อาจมีปลั๊กอินหรือสคริปต์ที่สามารถเพิ่มได้อีก
Davmor2

3
คีย์รูปแบบวันที่ใน gsettings ถูกลบโดยการกระทำนี้: git.gnome.org/browse/nautilus/commit/libnautilus-private/…ซึ่งเป็นรายงานข้อผิดพลาดนี้: bugzilla.gnome.org/show_bug.cgi?id=676898
djfun

3
ลิงก์ไปยัง "ข้อผิดพลาด" ที่ขอให้เรียกคืนการทำงาน: bugzilla.gnome.org/show_bug.cgi?id=699055
Aibara

เกิดขึ้นกับฉันใน v3.14.2 คนที่ชื่อ Carlos แสดงความคิดเห็นในgoo.gl/AE7FRAว่าสิ่งนี้ได้รับการแก้ไขใน nautilus v3.16
AlikElzin-kilaka

1
@becko Ubuntu 16.04 มาพร้อมกับ Nautilus 3.14 มันไม่ได้รับการแก้ไขในรุ่นนั้น ฉันยังไม่ได้ทดสอบ 3.16
Aibara

คำตอบ:


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 &

เช่นเคยคุณต้องทำตามขั้นตอนเหล่านี้ทุกครั้งที่มีการอัพเดตสำหรับหอยโข่งในอูบุนตู

ตอนนี้การวิเคราะห์ปัญหาทั้งหมด:

โปรแกรมแก้ไขจริงที่ทำให้เกิดการเปลี่ยนแปลงนี้คือ: https://git.gnome.org/browse/nautilus/commit/?id=3fd9cba41e56f44ed955b28755ad03135026d021

ฟังก์ชัน nautilus_file_get_date_as_string ได้รับพารามิเตอร์ gboolean พิเศษ "กระชับ" - เมื่อจริงวันที่ตัวย่อจะถูกส่งกลับ

ฟังก์ชั่นนี้ไม่เคยถูกเรียกโดยตรง - มันถูกเข้าถึงผ่านฟังก์ชั่น wrapper 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
ปัจจุบันนี้ยังคงเป็นวิธีเดียวที่จะจัดการกับปัญหานี้หรือไม่
ฟิลิปป์

3
@AlistairBuxton คุณลองส่งแพตช์ที่สองไปยังนักพัฒนา Gnome หรือไม่? มันจะดีถ้าอย่างน้อยพวกเขาสามารถให้ทางเลือกแก่เราแทนที่จะทำให้ไม่สามารถใช้งานได้เต็มวัน ...
n.st

3
ฉันไม่ใช้ Nautilus อีกต่อไปและฉันขอแนะนำให้คุณทำเช่นเดียวกัน
Alistair Buxton

2
สิ่งนี้ได้รับการแก้ไขแล้วในเวอร์ชันที่ใหม่กว่า (เพื่อที่ฉันจะได้ไม่ต้องคอมไพล์ใหม่)?
becko

6

สำหรับผู้ที่ใช้trustyและไม่ต้องการรวบรวมฉันได้ตั้งค่า ppa ทดสอบสำหรับหอยโข่งที่แพทช์ (ใช้โปรแกรมแก้ไขของ Alistair Buxton

บิลด์ปัจจุบันประกอบด้วยแพทช์แก้ไขข้อผิดพลาด 2 อัน, 1 อันจากที่เสนอโดยเชื่อถือ, 1 จาก utopic

นอกจากนี้ยังมีแพตช์เล็ก ๆ น้อย ๆ 3 ตัวที่ผ่านการทดสอบจากฉันในช่วงเวลาหนึ่งและไม่มีปัญหา

  1. เปิดด้วยบนโฟลเดอร์

  2. ชื่อเจ้าของไฟล์จริงแสดงแทน "ฉัน"

  3. ตัวจัดการไฟล์เป็นชื่อตัวเรียกใช้

แพทช์ 'วันที่ - เวลา' ที่ฉันทดสอบเล็กน้อยเห็นว่าไม่มีปัญหา สำหรับผู้ที่มีแนวโน้มที่จะลอง - หากพบปัญหาใด ๆ ติดต่อฉันผ่านทางอีเมล launchpad

คอลัมน์ "Modified (full)" สามารถเพิ่มผ่าน 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 ลองอีกครั้งจำเป็นต้องได้รับการปรับปรุง
ดั๊ก

dpkg --list | grep nautilusแสดง...+dateรุ่น ลองใหม่หลายครั้ง หลังจากรีบูตเครื่องเมื่อติดตั้งเวอร์ชั่นนี้แล้วก็เจาะเข้าไปในเทอร์มินัลและหลังจากใช้งานnautilus --no-desktop(ไม่แน่ใจว่ามันปรากฏขึ้นที่นั่น) และจากนั้นในที่สุดnautilus --force-desktopฉันก็พบตัวเลือก "ดัดแปลง (เต็ม)" ในมุมมองรายการ ดูเหมือนว่าจะมีอยู่ตลอดเวลา คำถาม : สามารถแก้ไขเนื้อหาได้หรือไม่ เช่นฉันหวังว่าจะใช้ "strftime ()"?
Hannu

อืม ... อาจเป็นไปได้LC_TIME=...ว่าจะระบุรูปแบบหรือไม่
Hannu

1
คำขอที่ไม่ได้รับการจัดเตรียมสำหรับครั้งต่อไปที่คุณอัปเดต ppa โปรดลองเพิ่มรูปแบบอื่นสำหรับคอลัมน์ Modifed เช่นเดียวกับ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 -qและnautilus .รีสตาร์ท Nautilus และดูว่าโหลดส่วนขยายถูกต้องหรือไม่

  3. เลือกคอลัมน์ "longdate" ใหม่ในการตั้งค่าคอลัมน์รายการ

ผลลัพธ์จะเป็นดังนี้:

ตัวอย่าง


2
ติดตั้งครั้งแรก nautilus-python:sudo apt-get install python-nautilus
DrMoishe Pippik

ขอบคุณมาก - ดูเหมือนว่าจะทำงานในดิสโก้ - Ubuntu 19.04! แต่คุณไม่สามารถจัดเรียงตาม Longdate ได้ น่าเสียดายที่ฉันไม่สามารถแก้ไขได้ด้วยตัวเอง เยี่ยมมากเลย ในฐานะ @Alistair Buxton กล่าวว่า: นี่คือเหตุผลที่ฉันรักโอเพ่นซอร์ส - เมื่อนักพัฒนาบ้าไปแล้วฉันสามารถแก้ไขได้ด้วยตัวเอง ด้วยความช่วยเหลือของคุณ! ขอบคุณ.
comments_no9

สิ่งนี้ใช้ไม่ได้กับ Nautilus ("Files" 3.10.1) บน Ubuntu 14.04 เมื่อ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.