# So you do not have to create a database with your role name
psql -U Username DatabaseName
# if your database is different as your login name you must add the database name
psql -U Username DatabaseName
It appears that your package manager failed to create the database named $user for you. The reason that
psql -d template1
works for you is that template1 is a database created by postgres itself, and is present on all installations. You are apparently able to log in to template1, so you must have some rights assigned to you by the database. Try this at a shell prompt:
createdb
and then see if you can log in again with
psql -h localhost