lets see a way to embed ansi screens/logos/menus to a python script, without the need to attach external files to a package. all of our ansi stuff will be in the file of the script. to do so, we have first to convert the ansi images/files to base64 strings. in linux is easy as this: base64 the output of the command is what we want... almost... as you see below we have to put all this big string between quotes and add the plus sign at the end. the quickest way, is with this command: base64 | sed "s/^/\'/" | sed "s/$/\'+/" just copy/paste the output into your script, add the libraries we need, like base64 and os, which are standard and you are ready to go... just see the example commands at the end of this script example. --- copy here ---------------------------------------------------------------- #!/usr/bin/python3 import base64 import os screen = base64.b64decode( \ 'ChtbNTZDG1szN23fChtbMTszMG0gICAgICAgICAgICAgICAbWzQxQxtbMDszNzs0MG0gIBtbMzZt'+ '39wbWzE7MzBt3BtbMDszNzs0MG0gICAgIBtbM0MbWzMzbSAbWzBtChtbMTszMG0gICAgICAgICAg'+ 'ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1swOzM3OzQwbSAbWzM2bd/cG1sxOzMw'+ 'bdwbWzA7MzY7NDBtIBtbMTszMG0gICAgICAgICAgG1swOzM3OzQwbSAbWzM2bdvb39zb3BtbMzNt'+ 'ICDf3BtbMzA7NDNtICAgIGUbWzMzOzQwbW1hZxtbMG0KIBtbMzZtICAg3Nzc3Nzc3NwbWzE7MzBt'+ '3BtbMDszNzs0MG3fG1szQ9wgG1s1QyAbWzE7MzBt3BtbMDszNzs0MG0gIBtbN0MbWzE7MzBt3xtb'+ 'MDszNzs0MG3cG1szQxtbMzZtsLAbWzM3bSAgIBtbMzZt29uystwbWzM3bSAgG1s0QxtbMzZt3xtb'+ 'MzdtICAbWzM2bdvb29vbG1szN20gICAbWzMzbSAgG1szN20gG1szM22wsLCwsLCwsBtbMG0KG1s0'+ 'QxtbMzZt39/f39+ysrLb29vbG1sxOzMwOzQ2bd8bWzA7MzY7NDBt3NwbWzE7MzBt3BtbMDszNzs0'+ 'MG0gICAgIBtbMzZtstsbWzM3bSAgG1szNm3cG1szN20gG1s2QxtbMzZt29wbWzM3bSAbWzM2bbKy'+ 'G1szN20gICAbWzM2bdvbG1sxOzQ2bSAgG1swOzM2OzQwbdsbWzM3bSAgG1s1QxtbMzZt3xtbMzdt'+ 'IBtbMzZt29sbWzE7NDZt3xtbMDszNjs0MG3bshtbMG0KIBtbMzZtsrKy3NzcG1szN20gICAgG1sz'+ 'QxtbMzZt39/b3NvbshtbMTszMDs0Nm3fG1swOzM3OzQwbSAbWzM2bdzb29ve2xtbMzdtIBtbN0Mb'+ 'WzM2bdvb29zbG1szN20gICAbWzM2bdvbG1sxOzQ2bd8bWzA7MzY7NDBt29sbWzdDG1szN20gG1sz'+ 'Nm3b3Nvb2xtbNUMbWzMxbSAbWzMzbSAgICAgG1swbQobWzNDG1szNm3f29vb3tvcG1szN20gIBtb'+ 'MTszMG2wsLAbWzA7Mzc7NDBtICAbWzM2bdvb29vb29zf29veIBtbMzdtICAbWzE7MzBtsLCwsCAb'+ 'WzA7Mzc7NDBtIBtbMzZt29sbWzE7NDZt3xtbMDszNjs0MG3b2xtbMzdtICAgG1szNm3b2xtbMTs0'+ 'Nm3cG1swOzM2OzQwbdvbG1szN20gIBtbMTszMG3fG1s0N23cIBtbNDBt2yAbWzA7Mzc7NDBtIBtb'+ 'MzZt2xtbMTs0Nm0g3N8gG1swbQogIBtbMTszMG0gG1swOzM3OzQwbSAgG1szNm3b294bWzE7NDZt'+ '3yAbWzA7Mzc7NDBtICAbWzE7MzA7NDdtstsbWzQwbdsgG1swOzM3OzQwbSAbWzM2bdvbG1sxOzQ2'+ 'bd8bWzA7MzY7NDBt29sbWzE7NDZt3BtbMDszNjs0MG3b2xtbMTs0Nm3cIBtbMDszNjs0MG3bG1sz'+ 'N20gG1szNm3cG1szN20gG1sxOzMwbSAgICAgG1swOzM3OzQwbSAgG1szNm3bG1sxOzQ2bdzfG1sw'+ 'OzM2OzQwbdsbWzM3bSAgG1sxOzM2OzQ2bSAg39wbWzA7MzY7NDBt2xtbMzdtIN8gG1sxOzMwbSAg'+ 'G1szQxtbMDszNzs0MG0gG1szNm3bG1sxOzQ2bd/c3xtbMDszNjs0MG3bG1szN20gIBtbMTszMG3f'+ 'G1s0N23cICAbWzM3bd/cG1szMG0gICDc39wbWzQwbdsgG1swbQogG1sxOzMwbdzfG1swOzM3OzQw'+ 'bSAgG1szNm3b29wbWzE7NDZtINwbWzA7Mzc7NDBtICAbWzE7MzBt29vbIBtbMDszNzs0MG0gG1sx'+ 'OzM2bdvf2xtbNDZt3N8bWzQwbdvbG1s0Nm3cG1s0MG3b29sbWzA7Mzc7NDBtICAgG1sxOzMwOzQ3'+ 'bbLb29vbG1s0MG0gG1swOzM3OzQwbSAbWzE7MzY7NDZt29zb3BtbMDszNjs0MG3bG1szN20gG1sz'+ 'Nm3bG1sxOzQ2bdvb29sbWzZDG1s0MG2wsLCyshtbMDszNjs0MG3b39sbWzM3bSAgG1sxOzMwbd8b'+ 'WzA7Mzc7NDBt39/fG1sxbd8bWzA7Mzc7NDBt39/fG1sxOzMwbd/c39wgG1swbQogG1sxOzMwbSAg'+ 'G1swOzM3OzQwbSAgG1sxOzM2bdsbWzQ2bd/c39wbWzQwbdsbWzA7Mzc7NDBtIBtbMTszMG0gIBtb'+ 'MDszNzs0MG0gG1sxOzMwbSAbWzA7Mzc7NDBtICAbWzE7MzZt29vb29vb29vb2xtbMDszNzs0MG0g'+ 'ICAbWzE7MzBt2xtbNDdt29sbWzQwbSAbWzA7Mzc7NDBtICAgG1sxOzM2bdvb29vbINvb27KysLAb'+ 'WzA7Mzc7NDBtICAbWzE7MzBtIBtbM0MbWzM2bdvb29vbG1swOzM3OzQwbSDf3AogG1sxOzMwbSAg'+ 'ICAbWzM2bdvb29vb2xtbNEOwsLCysrLb29/f39/fG1swOzM3OzQwbSAgIBtbMTszMG2wsLAbWzA7'+ 'Mzc7NDBtICAbWzE7MzZtsLCystvb29vb29vb2xtbM0MbWzMwbSDb2yAbWzA7Mzc7NDBtIBtbMTsz'+ 'Nm3b29vb2yAgG1swOzM3OzQwbSAg3wogG1sxOzMwbSAgICAbWzA7Mzc7NDBtIBtbMTszNm3b29/f'+ '3xtbNUMbWzA7Mzc7NDBtICAbWzFt3Nzc3Nzc29vb29sbWzA7Mzc7NDBtIBtbN0MgG1sxbdzc3Nwg'+ 'G1szNm3f39/f2yAbWzA7MzY7NDBtIBtbMTszMG0gG1swOzM3OzQwbSAbWzE7MzBt39/fG1szNm0g'+ 'IN/b29vbG1s2QxtbMDszNzs0MG0gChtbNUMgG1sxbdzc3NvbIBtbNUMbWzA7Mzc7NDBtIBtbMW3b'+ '29vb29zb29vb2xtbMDszNzs0MG0gG1s3QyAbWzFt29vb29vb29vc3BtbMDszNzs0MG0gICAgG1sx'+ 'OzMwbbCwsCAbWzM3bd8g3NwgG1szNm3fG1swOzM3OzQwbSAbWzZDICAgCiAbWzE7MzBtZXVnIRtb'+ 'MDszNzs0MG0gG1sxbdvb2xtbNDZt29sbWzQwbdwbWzVDG1swOzM3OzQwbSAbWzFt29vb29vbG1sw'+ 'OzM3OzQwbSAbWzFt29vb27IbWzZDG1swOzM3OzQwbSAbWzFtstvb29vf29vb29sbWzA7Mzc7NDBt'+ 'ICAgIBtbMTszMG0gICAbWzA7Mzc7NDBtICAgG1sxbdvb29vb3BtbMDszNzs0MG3cICAgICAgIBtb'+ 'MW2wsLCwsBtbMG0KG1s1QyAgG1sxbdvb29vbG1szQxtbMDszNzs0MG0gICAgG1sxbdvbG1s0N23b'+ '29sbWzA7Mzc7NDBtIBtbMW3bG1s0N23b29vbG1s3QxtbNDBt29vb29sbWzA7Mzc7NDBtIBtbMW3b'+ '2xtbNDdt29vbG1swOzM3OzQwbSAbWzVDICAgICDfG1sxOzQ3bd8bWzQwbdvb29vb2xtbNDdt3Btb'+ 'NDBt3NwbWzA7Mzc7NDBt3CAgICAgICDcCiAbWzFtsLCwsCAbWzA7Mzc7NDBtIBtbMW3b29vb2xtb'+ 'MDszNzs0MG0g3yAg3CAgG1sxbdvbG1s0N23b298bWzA7Mzc7NDBtICAbWzE7NDdt39vb29wbWzQw'+ 'bdwbWzA7Mzc7NDBt3CAgICAbWzFt29vb29sbWzA7Mzc7NDBtICAbWzFt29sbWzQ3bdvb3BtbNDBt'+ '3BtbMDszNzs0MG3cICAgIBtbMW2wsLCwG1swOzM3OzQwbSAgIN8bWzFt3xtbNDdt3xtbNDBt29vb'+ '29vb29vb29vbG1s0N23cG1swbQrc3Nzc3CAgG1sxbdvb39wbWzQ3bd8bWzA7Mzc7NDBtICDc3yDb'+ 'IBtbMW3b3BtbNDdt3xtbMDszNzs0MG3fINwgIN8bWzE7NDdt3xtbNDBt29sbWzQ3bdwbWzA7Mzc7'+ 'NDBt3BtbMTs0N23c29wbWzA7Mzc7NDBtIBtbMTs0N23b29vb2xtbM0MbWzA7Mzc7NDBt3xtbMTs0'+ 'N23fG1s0MG3bG1s0N23b29vb29wbWzQwbdzc3Nzc3BtbMDszNzs0MG3b3CAgICAgIN8bWzFt39/f'+ 'G1s0N23fG1s0MG3b27KyshtbMG0KG1s1Q9/cIBtbMW3fG1s0N23fG1swOzM3OzQwbd8g3N8bWzND'+ '2yAbWzE7NDdt3xtbMDszNzs0MG3fINzfIN/cG1sxOzMwbSAbWzA7Mzc7NDBtIN8bWzFt398bWzQ3'+ 'bd8bWzQwbdvbG1s0N23b3BtbNDBt29vb29vcG1swOzM3OzQwbdwgICDfG1sxbd/fG1s0N23f29vf'+ 'G1swOzM3OzQwbd8bWzE7NDdt3xtbNDBt29vb29sbWzA7Mzc7NDBtICDc39/f3Nzc3CAgIBtbMW0g'+ 'ICAgIBtbMG0KG1s2QxtbMTszMG0gG1swOzM3OzQwbd/cG1sxOzMwbSAbWzA7Mzc7NDBt3N8gG1s0'+ 'Q9wgINzfICAgICDf3NzcICAgICAgG1sxbbKystsbWzQ3bd8bWzQwbd/fG1swOzM3OzQwbSAg3yDf'+ 'ICAgINzfG1sxbd8bWzA7Mzc7NDBt3xtbMW3fG1swOzM3OzQwbd8gINzc3yAgICAgICDb29vb29vf'+ '3N8bWzlD3xtbNUMgICDc3yAgICAgIBtbNUPf39/cIN8bWzFtsLCwG1swOzM3OzQwbSAgINzfG1s0'+ 'Q9wgIN8gIN/f39/f3xtbMTdDICAbWzE3Q98bWzE2Q9/c3Nzc3Nzf3yAKG1s1NUMbWzM2bWkgcyBz'+ 'IHUgZSAgIBtbMUMbWzMwOzQ2bd/cIDAwNiDf3BtbMG0KG1s3MkMbWzM2bbCwsLCwsLAbWzBtCg==') # for utf8 terminals use this: print(''.join(str(screen,"cp437"))) # for cp437 terminals use this: #os.write(1, screen) --- stop copying here -------------------------------------------------------- --- give credits here -------------------------------------------------------- i had some trouble displaying the exact ansi, in a non utf8 terminal, so i had to use the os.write function for it. you can make your script detect the terminal encoding and use the proper function, according that. .