2017-07-03 46 views
0

如果触摸一个新的文件或采取截图与scrot/escrotum,没有“新文件”是在GTK2/GTK3文件浏览器中可见在“Recent Files”标签中(你可以很容易地在Firefox或Chrome浏览器的CTRL + O窗口中看到它的一个例子)的Linux GTK2/GTK3最近的文件浏览器不显示最近的外壳创建的文件

我该怎么做才能看到我最近的“手”编辑或创建的文件在GTK Recent Files文件浏览器中更新?

例如:

$touch words.txt 
$scrot image.jpg 

这两个生成的文件都不会在Recent Files GTK选项卡中可见。

谢谢

+1

你将不得不使你使用的每个命令都支持GtkRecentManager。这听起来很有用(对任何特定的程序都不会有困难),但实际上可能不会 - 像单纯的命令一样,像touch这样的实用程序可以用来修改数以千计的文件。你真的想让所有这些文件出现在最近的文件?出于同样的原因,在Nautilus中移动文件不会使它们成为“最近的文件”... – jku

+1

@jku:一个更简单的替代方法是创建一个命令行工具,它接收一堆文件名并从GtkRecentManager中添加它们。 。这里有一些python代码:https://stackoverflow.com/a/39927261/518853 – liberforce

回答

2

因此,基于以上我的意见,这里是被称为recent小python脚本,增加了作为参数传递给新的文件传递来的文件。这当然可以改进,以更好地处理URI,而不是假设所有文件都是本地的,清理最近的文件列表,删除特定条目等。它也可以用C重写,以避免为此运行完整的Python解释器。

#! /usr/bin/env python 

import os.path 
import sys 

from gi.repository import Gtk, GObject 

def main(): 
    recent_mgr = Gtk.RecentManager.get_default() 
    for filename in sys.argv[1:]: 
     uri = 'file://{path}'.format(path=os.path.abspath(filename)) 
     recent_mgr.add_item(uri) 

    GObject.idle_add(Gtk.main_quit) 
    Gtk.main() 

if __name__ == '__main__': 
    main()