initial gtk3 port

This should be reviewed before merging