Citation: 6B_189/2020 E. 4

Au vu de ce qui précède, le recours doit être partiellement admis (cf. consid. 1 supra). Pour le reste, il doit être rejeté dans la mesure où il est recevable. Le recourant, qui n'obtient que partiellement gain de cause, supportera une partie des frais judiciaires (art. 66 al. 1 LTF). Il peut prétendre à des dépens réduits, à la charge du canton de Fribourg (art. 68 al. 1 LTF). La demande d'assistance judiciaire est sans objet dans la mesure où le recourant a droit à des dépens; elle doit être rejetée pour le reste, dès lors que le recours était dénué de chances de succès s'agissant des aspects sur lesquels celui-ci a succombé (art. 64 al. 1 LTF). Les frais judiciaires mis à la charge de l'intéressé seront cependant fixés en tenant compte de sa situation économique, laquelle n'apparaît pas favorable (art. 65 al. 2 LTF). Par ces motifs, le Tribunal fédéral prononce :