If you don't want to reorganize your partitions from scratch, I would:
- resize your home partition to make 3GiB free space at the end using gparted
- create a new partition on that free space
sudo mv /opt /root_opt
sudo mkdir /opt
- add record to /etc/fstab to mount that new partition as
sudo mount -a
sudo mv /opt_root/* /opt/
sudo rmdir /opt
This way you will end up with ~ 80% of used space on
As an more risky alternative, you can boot from some LiceCD, and using gparted shrink your home partition by 4GiB from the beginning and extend your root partition at the end. But make backup first. It's bit more risky operation.
Also note, that unused disk space and available disk space is something else.
For example if you create a new 100GiB partition with ext3 filesystem, then by default 5% is reserved to prevent fragmentation. So you will start with available < 95 GiB for non-root users without writing single file there. This is normal and this is good.