I decided to ditch Compiz, but I missed the screenshot plugin that allows you to take a screenshot by holding a key and selecting a region of the screen with the mouse. I made this script to mimic this behavior in GNOME Shell.
#!/usr/bin/env python
import os
import glob
import subprocess
import time
# File to save to
BASENAME = os.environ.get('HOME')+'/Desktop/screenshot'
SUFFIX = '.png'
# Delay after an ImageMagick `import` failure before trying again. This
# is necessary because the mouse isn't always available right after
# the Gnome Shell 'Activities' screen closes.
DELAY = 0.1
# Number of DELAYs before giving up. This is to keep from getting stuck
# in an infinite loop in case the failure isn't because of the expected
# reason.
RETRIES = 10
def choose_fname(basename, suffix):
fnames = glob.glob(basename+'*'+suffix)
max_id = 0
for fname in fnames:
id = fname[len(basename):-len(suffix)]
try:
id = int(id)
except ValueError:
continue
if id > max_id:
max_id = id
return basename+str(max_id+1)+suffix
def screenshot(fname):
time.sleep(0.1)
p = subprocess.Popen(('import', fname))
returncode = p.wait()
return returncode == 0
def main():
fname = choose_fname(BASENAME, SUFFIX)
tries = 0
while not screenshot(fname) and tries < RETRIES:
time.sleep(DELAY)
tries += 1
if __name__ == '__main__':
main()