Instantly share code, notes, and snippets.

@hb /diff
Created Aug 12, 2012

Embed
What would you like to do?
Nautilus script to "just diff the right thing"
#!/usr/bin/env python
from subprocess import call
from os import environ
# selected files and current locations of the panes
cp_selection = environ["NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"].split()
op_selection = environ["NAUTILUS_SCRIPT_NEXT_PANE_SELECTED_FILE_PATHS"].split()
cp_location = environ["NAUTILUS_SCRIPT_CURRENT_URI"][7:]
op_location = environ["NAUTILUS_SCRIPT_NEXT_PANE_CURRENT_URI"][7:]
diff_args = []
# if two files are selected in current pane -> diff them
if len(cp_selection) == 2:
diff_args = cp_selection
# else if one file is selected on each pane -> diff those
elif len(cp_selection) == 1 and len(op_selection) == 1:
diff_args = [cp_selection[0], op_selection[0]]
# two panes, no files selected -> diff the two directories
elif len(cp_selection) == 0 and len(op_selection) == 0:
diff_args = [cp_location, op_location]
# assemble and call command
if diff_args:
cmd = ["meld"]
cmd.extend(diff_args)
else:
cmd = ["zenity", "--error", "--text=No suitable diff mode for selection."]
call(cmd)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment