Skip to content

Instantly share code, notes, and snippets.

@rbrito
Forked from Iunius118/gimp_autosave.py
Created December 7, 2018 01:27
Show Gist options
  • Save rbrito/e57c87d5376fd56113df058abf71bdf3 to your computer and use it in GitHub Desktop.
Save rbrito/e57c87d5376fd56113df058abf71bdf3 to your computer and use it in GitHub Desktop.
Auto save plug-in for GIMP [2.8, 2.9]
#!/usr/bin/env python
# Original (by yahvuu): http://www.gimpusers.com/forums/gimp-developer/11718-autosave-plugin
import tempfile, os
from time import *
from gimpfu import *
def autosave(image, layer):
backupInterval = 10 * 60
backupFiles = {}
print "Autosave activated"
while 1:
sleep(backupInterval)
print ctime(time())
curImages = {}
for k in gimp.image_list():
curImages[k.ID] = k
curIDs = curImages.keys()
oldIDs = backupFiles.keys()
newIDs = [x for x in curIDs if x not in oldIDs]; delIDs = [x for x in oldIDs if x not in curIDs];
# create (empty) backup files for new images
for id in newIDs:
prefix = 'gimpbackup-ID' + str(id) + '-'
fn = tempfile.mkstemp(prefix = prefix, suffix = '.xcf')
os.close(fn[0])
backupFiles[id] = fn[1]
# remove closed images' backups
for id in delIDs:
filename = backupFiles[id]
del(backupFiles[id])
try:
os.remove(filename)
except:
print "ERROR: ", sys.exc_info()[0]
# backup images
for id, filename in backupFiles.iteritems():
img = curImages[id]
try:
print "saving " + img.name + '-' + str(id) + ' to ' + filename
pdb.gimp_xcf_save(1, img, img.active_drawable, filename, filename)
except:
print "ERROR: ", sys.exc_info()[0]
register(
"autosave",
"Autosave dirty hack",
"Periodically saves all opened images to a %temp% directory",
"public domain",
"public domain",
"2016",
"<Image>/File/Activate Autosave",
"*",
[],
[],
autosave)
main()
@Skulptron
Copy link

Skulptron commented Jun 13, 2021

TEMP FOLDER for Windows 10
From the Start menu, open the Run dialog box or you can press the "Window + R" key to open the RUN window.
Type "%temp%" and click on the OK button.

In my case TEMP folder location:
C:\Users\username\AppData\Roaming\GIMP\2.10\tmp
...

Every 10 minutes (backupInterval = 10 * 60) the script saves backups of all opened images to a TEMP folder.
The backup files won't be deleted when GIMP exits, so some manual clean-up will be required from time to time.
...
How to add .py script to Gimp:
Gimp > Preferences > Folder > Plug-ins
Select > C:\Users\username\AppData\Local\Programs\GIMP 2\lib\gimp\2.0\plug-ins
Click icon "Show file location in the file manager" .
Paste gimp-autosave.py in that folder.
Close Gimp

Open Gimp
Menu > File > Activate Autosave (activate only once)
...

Script works for me.
GIMP 2.10.24 (revision 2)
Windows 10

@thaynos
Copy link

thaynos commented Jun 13, 2021

is there any way to make the autosave feature happen more frequently?
just curious i stopped using gimp after getting tired of crashes.
i just use a portable version of photoshop now. much better ui imo.

@Skulptron
Copy link

is there any way to make the autosave feature happen more frequently?

Edit gimp-autosave.py with Notepad or VSCode and replace 10 with prefered number...
backupInterval = 10 * 60 to backupInterval = 5 * 60
But... Real question is why your Gimp crashes so often?

@thaynos
Copy link

thaynos commented Jun 13, 2021

my slow ass pc is the only reason i can think of.
i7 5500u
8gb ram
gt 840m
dont be fooled by the i7 and gt. look up their specs. id prefer a i3 over this laptop.

@horse14t
Copy link

horse14t commented Jul 13, 2023

This claims to work for 2.8 but I haven't been able to get it to show up after installing... Help?

@rairay91
Copy link

plugin not working on linux, i mean activate auto save option not showing even after installed in system as well as in home path.

@rairay91
Copy link

plugin not working on linux, i mean activate auto save option not showing even after installed in system as well as in home path.

And also as much as i know only windows detect directories in %temp% way, linux use / as directory finder (~/ for home directory)

@Twig6943
Copy link

Just lost 30 mins of work due to a fucking crash. There's still this open issue which is literally older than me yet gimp devs refuse to add this? This is straight up fucking weird and makes no sense.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment