Pantheon-Files has a feature of assigning color to file/directory names displayed. I want to make a script in Bash/Python to do the same automatically.
1 Answer
Low-level sqlite approach
The file-color associations are stored in the ~/.config/marlin/marlin.db
sqlite database. You can try to reverse-engineer the format, as far as I have seen, there is one table tags
, as seen in the dump:
CREATE TABLE tags (id INTEGER PRIMARY KEY,
uri TEXT UNIQUE NOT NULL,
color INTEGER DEFAULT 0,
tags TEXT NULL,
content_type TEXT,
modified_time INTEGER DEFAULT 0,
dir TEXT );
Update/delete file color
So basically you need to either the color already in the base as in
UPDATE tags set color=1 WHERE uri = 'file:///home/user/test'
changed the color of the file ~/test
to yellow (1).
Colors seem to be 0
(no color) and 1…9
(yellow, orange, etc. as shown in the file Properties dialog).
If you want to delete the color, you only have to set color=0
.
Set file color
If there is no entry for the file specified, you should create it with some housekeeping:
id
might be NULL as in auto-assigned,uri
is the URI of the file of which you want to change the colortags
= NULL as in nothing special for now,content_type
you might find this with thefile
utility,modified_time
seems to be a simple Unix time stamp,dir
I don't really know but the parent directory seems to be a safe bet.
This line seems to work and has set the color of ~/new_file
not present in the database before to green (4):
INSERT INTO tags VALUES (NULL, 'file:///home/user/new_file', 4, NULL, 'text/plain', 1481148148, 'file:///home/user');
However, be careful and double-check this with the source code of pantheon-files
as this might render your database inconsistent. The relevant source file seems to be pantheon-files-daemon/marlind-tagging.vala
.