Firstly the reason you can't resize your partition is that others are in the way and need to be moved first (a partition can only increase size if there is
unallocated space next to it) and also you need to be running a OS that isn't running/using on any of the drives you want to move. Below there are some instructions for how to resize your partition with plenty of information and tools you will need to get this done with warnings about partitioning:
Partitioning is dangerous
From personal experience I've lost a whole partition due to a partitioning failing.
First before partitioning you should always backup important files and folders of the drives you will be moving (
/dev/sda6 doesn't need to be backed up as it is just virtual RAM.
Best practices is to image these partitions to a separate storage device but that takes up the space of the drive.
By Live Linux it means a Live Disk image of Linux, any live disk image of Linux will work but there is also GParted Live CD/USB image.
After downloading a Live Image you will need to flash it to a spare USB drive (a empty or backed up USB drive as all data will be lost), you can use any USB flashing device but I advise balenaEtcher as it will verify the flash.
You need to move
/dev/sda5 to the left all the way (so the
Free space preceding (MiB): in GParted is
0) and then you need to move your
/dev/sda6 to the left all the way.
After that you should move
/dev/sda7 all the way to the left and then resize it to the size you require for your root folder and then finally resize
/dev/sda8/ to what size you need in your home folder. I advise that you fill up all the unallocated space so you don't have to partition again as it is dangerous.
Make sure before you partition that you have a spare OS install USB/CD/DVD disk in case the partition fails.
Once you have a backup your files and have a spare OS install ready for the worst case scenario and have made a note of what you need to do then go ahead and repartition your drive.
Hope this helps,