<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.retro-exo.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Parricc</id>
	<title>eXo Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.retro-exo.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Parricc"/>
	<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php/Special:Contributions/Parricc"/>
	<updated>2026-05-13T12:55:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1073</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1073"/>
		<updated>2026-04-25T17:06:58Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux and MacOS, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
=== Indenting multi-line nested if statements and for loops is necessary. ===&lt;br /&gt;
With the limitations of tooling, nested statements that written without indentation will fail to convert. &amp;lt;u&amp;gt;Each indentation should be specifically 2 or 3 spaces.&amp;lt;/u&amp;gt; Avoid tabs.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, anything that is nested should have spacing to indicate the level of nesting. Correct indentation on closing parentheses is especially important as that is how the converter determines the boundary.&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
  some command&lt;br /&gt;
  if [...] (&lt;br /&gt;
    some command&lt;br /&gt;
  )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Something like this is also okay:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if %nsl%==On (&lt;br /&gt;
   if %PPmode%==Off (&lt;br /&gt;
      if %filter%==On (&lt;br /&gt;
         set conf=&amp;quot;.\emulators\dosbox\Staging_noline_sl.conf&amp;quot;&lt;br /&gt;
         goto preinstall)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;When all of the closing parenthesis are together, the converter splits them apart and converts each one as appropriate.&lt;br /&gt;
&lt;br /&gt;
=== Labels must never be placed inside of loops or conditions. ===&lt;br /&gt;
The converted goto function has been designed to work through stack frames for Linux and MacOS. For this reason, a label must never be placed inside of a loop or condition. Such code will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  :mylabel&lt;br /&gt;
  echo This does not convert&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  goto mylabel&lt;br /&gt;
)&lt;br /&gt;
goto skip&lt;br /&gt;
:mylabel&lt;br /&gt;
echo This does not converts&lt;br /&gt;
:skip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1072</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1072"/>
		<updated>2026-04-25T17:06:22Z</updated>

		<summary type="html">&lt;p&gt;Parricc: Noted that each indentation should be either 2 or 3 spaces.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux and MacOS, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
=== Indenting multi-line nested if statements and for loops is necessary. ===&lt;br /&gt;
With the limitations of tooling, nested statements that written without indentation will fail to convert. &amp;lt;u&amp;gt;Each indentation should be specifically 2 or 3 spaces.&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, anything that is nested should have spacing to indicate the level of nesting. Correct indentation on closing parentheses is especially important as that is how the converter determines the boundary.&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
  some command&lt;br /&gt;
  if [...] (&lt;br /&gt;
    some command&lt;br /&gt;
  )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Something like this is also okay:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if %nsl%==On (&lt;br /&gt;
   if %PPmode%==Off (&lt;br /&gt;
      if %filter%==On (&lt;br /&gt;
         set conf=&amp;quot;.\emulators\dosbox\Staging_noline_sl.conf&amp;quot;&lt;br /&gt;
         goto preinstall)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;When all of the closing parenthesis are together, the converter splits them apart and converts each one as appropriate.&lt;br /&gt;
&lt;br /&gt;
=== Labels must never be placed inside of loops or conditions. ===&lt;br /&gt;
The converted goto function has been designed to work through stack frames for Linux and MacOS. For this reason, a label must never be placed inside of a loop or condition. Such code will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  :mylabel&lt;br /&gt;
  echo This does not convert&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  goto mylabel&lt;br /&gt;
)&lt;br /&gt;
goto skip&lt;br /&gt;
:mylabel&lt;br /&gt;
echo This does not converts&lt;br /&gt;
:skip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1071</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1071"/>
		<updated>2026-04-21T19:51:34Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux and MacOS, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
=== Indenting multi-line nested if statements and for loops is necessary. ===&lt;br /&gt;
With the limitations of tooling, nested statements that written without indentation will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, anything that is nested should have spacing to indicate the level of nesting. Correct indentation on closing parentheses is especially important as that is how the converter determines the boundary.&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
  some command&lt;br /&gt;
  if [...] (&lt;br /&gt;
    some command&lt;br /&gt;
  )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Something like this is also okay:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if %nsl%==On (&lt;br /&gt;
   if %PPmode%==Off (&lt;br /&gt;
      if %filter%==On (&lt;br /&gt;
         set conf=&amp;quot;.\emulators\dosbox\Staging_noline_sl.conf&amp;quot;&lt;br /&gt;
         goto preinstall)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;When all of the closing parenthesis are together, the converter splits them apart and converts each one as appropriate.&lt;br /&gt;
&lt;br /&gt;
=== Labels must never be placed inside of loops or conditions. ===&lt;br /&gt;
The converted goto function has been designed to work through stack frames for Linux and MacOS. For this reason, a label must never be placed inside of a loop or condition. Such code will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  :mylabel&lt;br /&gt;
  echo This does not convert&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  goto mylabel&lt;br /&gt;
)&lt;br /&gt;
goto skip&lt;br /&gt;
:mylabel&lt;br /&gt;
echo This does not converts&lt;br /&gt;
:skip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1070</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1070"/>
		<updated>2026-04-21T19:48:50Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux and MacOS, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
=== Indenting multi-line nested if statements and for loops is necessary. ===&lt;br /&gt;
With the limitations of tooling, nested statements that written without indentation will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, anything that is nested should have spacing to indicate the level of nesting. Indentation on closing parentheses is especially important as that is how the converter determines the boundary.&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
  some command&lt;br /&gt;
  if [...] (&lt;br /&gt;
    some command&lt;br /&gt;
  )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Something like this is also okay:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if %nsl%==On (&lt;br /&gt;
   if %PPmode%==Off (&lt;br /&gt;
      if %filter%==On (&lt;br /&gt;
         set conf=&amp;quot;.\emulators\dosbox\Staging_noline_sl.conf&amp;quot;&lt;br /&gt;
         goto preinstall)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels must never be placed inside of loops or conditions. ===&lt;br /&gt;
The converted goto function has been designed to work through stack frames for Linux and MacOS. For this reason, a label must never be placed inside of a loop or condition. Such code will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  :mylabel&lt;br /&gt;
  echo This does not convert&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  goto mylabel&lt;br /&gt;
)&lt;br /&gt;
goto skip&lt;br /&gt;
:mylabel&lt;br /&gt;
echo This does not converts&lt;br /&gt;
:skip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1069</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1069"/>
		<updated>2026-04-21T19:44:45Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux and MacOS, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
=== Indenting multi-line nested if statements and for loops is necessary. ===&lt;br /&gt;
With the limitations of tooling, nested statements that written without indentation will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, anything that is nested should have spacing to indicate the level of nesting. The closing parentheses are especially important.&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
  some command&lt;br /&gt;
  if [...] (&lt;br /&gt;
    some command&lt;br /&gt;
  )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Something like this is also okay:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if %nsl%==On (&lt;br /&gt;
   if %PPmode%==Off (&lt;br /&gt;
      if %filter%==On (&lt;br /&gt;
         set conf=&amp;quot;.\emulators\dosbox\Staging_noline_sl.conf&amp;quot;&lt;br /&gt;
         goto preinstall)))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels must never be placed inside of loops or conditions. ===&lt;br /&gt;
The converted goto function has been designed to work through stack frames for Linux and MacOS. For this reason, a label must never be placed inside of a loop or condition. Such code will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  :mylabel&lt;br /&gt;
  echo This does not convert&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  goto mylabel&lt;br /&gt;
)&lt;br /&gt;
goto skip&lt;br /&gt;
:mylabel&lt;br /&gt;
echo This does not converts&lt;br /&gt;
:skip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Main_Page&amp;diff=1068</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Main_Page&amp;diff=1068"/>
		<updated>2026-04-21T18:57:08Z</updated>

		<summary type="html">&lt;p&gt;Parricc: /* Linux Patch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[File:RetroeXo Logo.png]]&amp;lt;br&amp;gt;'''Retro eXo'''&amp;lt;/div&amp;gt; =&lt;br /&gt;
&amp;lt;strong&amp;gt;Project Goal&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The eXo projects' goal is preservation through playability.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Project Resources&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''[http://www.retro-exo.com www.retro-exo.com]''': Project Homepage.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[https://www.youtube.com/c/eXoRetro YouTube Channel]''': Various videos about the project and how to use it.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[https://discord.gg/37FYaUZ Discord]''': Project discussion, chat, &amp;amp; community.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[https://github.com/exoscoriae/ Github]''': Bugs, submissions, and enhancements are tracked here.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
=== Current ===&lt;br /&gt;
==== [[EXODOS|eXoDOS]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoDOS v6.04&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: November 28th, 2024&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 7,666&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: TBD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== [[EXOWin3x|eXoWin3x]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoWin3x v2&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: February 14th, 2021&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 1,138&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: eXoWin3x v3&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXOScummVM|eXoScummVM]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoScummVM v2026.1.0&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: February 14th, 2026&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 832 unique titles, multiple variations of each&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: TBD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXODREAMM|eXoDREAMM]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoDREAMM v4.0&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: March 2nd, 2026&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 62&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: Unknown&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXORLP|eXoRLP]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXo's Retro Learning Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: April 1st, 2020&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 667 titles, compiled from eXoDOS and eXoWin3x&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: None. RLP Was a one-time release. Upon merging eXoDOS and eXoWin3x however, a playlist appears that allows you to select all games that were originally included in the RLP.&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXOAppleIIGS|eXoAppleIIGS]] ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoAppleIIGS v1&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: October 31st, 2022&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 460&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: eXoAppleIIGS v2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXODemoScene|eXoDemoScene]] ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoDemoScene v2.1&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: February 21st, 2026&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Demos: 2,424&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: TBD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXOIF|eXoIF]] ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoIF v2.00&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: April 9th, 2026&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 2332&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: TBD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXOWin9x|eXoWin9x]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: Vol. 1&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: November 22, 2025&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 664&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: Vol. 2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The eXo projects originated from wanting to sit down and play MS-DOS games without spending hours trying to get them running. Games such as DiscWorld were notoriously difficult and had a fair number of forum posts and websites dedicated to attempts to get them running. However websites centered on the topic of DOSBox, the primary MS-DOS emulator, were generally less than welcoming. eXo's original goal was to get his collection of MS-DOS Adventure games setup in a front end and easily accessible. Posts regarding this project began to appear on Underground Gamer &amp;amp; Pleasuredome in 2007, eventually leading to the release of eXoDOS Vol. I: Adventure in early 2008. This first release had around 650 titles in it, with plans to continue on to a second volume dedicated to role-playing games after excitement was expressed by fellow members on Underground Gamer. It was during this time that eXo became concerned that the nature of DOS emulation was leading towards a scenario in which the number of people who had the technical knowledge to set games up on their own was dwindling. Meanwhile, only a handful of highly popular commercial games for the era were available on any store front. eXo decided to continue tackling volumes of games with the impossible goal of preserving all MS-DOS games. Fundamental changes to the structure of the project were made leading to the release of eXoDOS Version 2. Vol. I-II were re-released along with eXoDOS Vol. III: Strategy (2009). Some of these primary changes included moving the games conf files out of their archive and into the same folder as the launcher. This allowed the conf file to be modified without the need to repack the entire game. eXoDOS Vol. IV: Sim\Sports\Racing\Educational (2011) and eXoDOS Vol. V: Action (2012) were released using the same structure. Releases were originally split into volumes due to bandwidth and storage concerns, however it also helped to focus work on specific packs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the first 2 versions of eXoDOS was primarily manual. Games were originally identified by hand typing metadata from [https://www.mobygames.com/ MobyGames] into a database. Each game's launcher, conf file, and install file was copied from a base template and then modified to fit that game, with information like folder names, game name, and other variables hard coded. Soon after the release of eXoDOS Version 2, eXo began to work on a Windows 3x project. This was a very slow process due to the rocky documentation and emulation of Windows 3x. Several improvements were made to the structure of the project during this time however, leading the the release of eXoDOS Version 3. The Windows 3x project was dubbed Win3xO, and released in 2015 with just over 1,000 games in it. eXoDOS versions 1-3 and Win3xO were powered by the MEAGRE front end, which was also originally posted as a member project on the UG forums.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The release of Win3xO led to serious burnout, which resulted in a year long break in the project that coincided with the abrupt deletion of Underground Gamer's website, tracker, and forums. Eventually eXo began work on locating new games for the DOS project while addressing bug fixes within the Windows 3x project. Work continued alone during this time, however with the downfall of UG, discussion at this point was primarily limited to occasional posts on the Pleasuredome forums. During this time the author of MEAGRE, Donarumo, decided to cease development on the front end. He moved his personal collections over to [https://www.launchbox-app.com/ LaunchBox] and encouraged eXo to consider it for his projects as well. After a positive discussion with the author of LaunchBox, permission was granted to include it with the forthcoming eXoDOS Version 4 release. Changing to a new front end was a massive task however, as it meant that all metadata (release information, manuals, game images, etc...) had to be imported on a game by game basis. This time was used to begin scrubbing the project of all images that had watermarks, and replacing them with original screen shots and clean box scans.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In response to the decline of participation of forums, a [https://discord.com/ Discord] server was started for the project on June 7th, 2018. The community quickly grew with various people who had been following the project for years. The ability to communicate in real time allowed others to find ways to contribute, which quickly led to multiple volunteers stepping forward to improve key aspects of the projects. This resulted in a flood of improvements for eXoDOS Version 4, with one of the primary new features being the ability to select advanced sound card options. Since then, a steady flow of new features and improved modules have been created for each upcoming release.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In March of 2020, in response the quarantine protocols and school closings, the RLP (Retro Learning Pack) was released. This pack of 667 games from the MS-DOS and Windows 3.x era was designed to give parents of children stuck at home a way to entertain and educate their children during lockdown. [https://kotaku.com/loads-of-awesome-old-pc-games-will-keep-your-damn-kids-1842632937 Coverage] of the pack extended into the media on sites like [https://kotaku.com/ Kotaku].&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
The project and/or creator have been featured in the following articles:&lt;br /&gt;
&lt;br /&gt;
[https://blog.archive.org/2019/10/13/2500-more-ms-dos-games-playable-at-the-archive/ '''''2,500 More MS-DOS Games Playable at the Archive''''' - Scott, J. (2019, Oct. 13). Internet Archive Blog]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://kotaku.com/one-mans-quest-to-collect-every-classic-pc-game-in-exis-1839432488 '''''One Man's Quest To Collect Every Classic PC Game In Existence''''' - Plunkett, L. (2019, Dec. 16). Kotaku.]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://kotaku.com/loads-of-awesome-old-pc-games-will-keep-your-damn-kids-1842632937 '''''Loads Of Awesome Old PC Games Will Keep Your Damn Kids Busy''''' - Plunkett, L. (2020, Apr. 4). Kotaku]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.retrorgb.com/interview-with-exo-pc-ms-dos-and-windows-game-preservationist.html '''''Interview with eXo: PC, MS-DOS and Windows game preservationist''''' - Mons, D. (2022, Apr. 7). RetroRGB]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.emunewz.net/forum/showthread.php?tid=249003 '''''eXo, the author of eXoDOS''''' - nickblame (2023, Dec. 27). EmuNewz]&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
[[Project Contributors]]&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
[[EXODOS Known Issues|eXoDOS Known Issues]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[EXOScummVM#Known Issues|eXoScummVM Known Issues]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Technical Information ==&lt;br /&gt;
=== Emulated Hardware ===&lt;br /&gt;
[[3Dfx]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Sound Cards]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Video Modes]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Remote Multiplayer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ReelMagic]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common Core Systems ===&lt;br /&gt;
[[Project Setup]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Installer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Launcher]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DOSBox Configuration File]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Downloader]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[EXO Plugin|eXo Plugin]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emulators ===&lt;br /&gt;
[[DOSBox]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.scummvm.org/index.php?title=Main_Page ScummVM]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://aarongiles.com/dreamm/ DREAMM]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unique Modules ===&lt;br /&gt;
[[Save Game Transfer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Gold Box Companion]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[All-Seeing Eye]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ultimapper 5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
[[Images]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[LaunchBox Platform XML]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Interactive Code Wheels]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Manuals]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Music]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Playlists]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Video Snaps]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Media Add-On Pack ===&lt;br /&gt;
[[Books]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Catalogs]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Magazines]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Soundtracks]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Videos]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
[[Master Database]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game Specific Projects ==&lt;br /&gt;
DOOM - [[EXOWAD|eXoWAD]]&amp;lt;br&amp;gt;&lt;br /&gt;
ZZT - [[EXOZZT|eXoZZT]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Unlimited Adventures]]&lt;br /&gt;
&lt;br /&gt;
== Language Packs ==&lt;br /&gt;
&lt;br /&gt;
[[The Language Pack Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
[[German Language Pack]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Polish Language Pack]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Spanish Language Pack]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== In Progress ===&lt;br /&gt;
Chinese Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
French Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Portuguese Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== In need of a curator ===&lt;br /&gt;
Hebrew Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Italian Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Japanese Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Korean Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Russian Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;If you have any interest in assisting with these language packs (or working on an unlisted language pack), please join our [https://discord.gg/37FYaUZ Discord] server.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Patch ==&lt;br /&gt;
[[Linux Patch|Linux Patches]]&lt;br /&gt;
&lt;br /&gt;
[[Batch Conversion Limitations]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
For a list of frequently asked questions, please visit the [[FAQ]] page.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
If you would like to contribute, please contact [[User:EXO|eXo]] for registration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Getting started ==&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki] --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1067</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1067"/>
		<updated>2026-04-21T18:54:21Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux and MacOS, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
=== Indenting nested if statements and for loops is necessary. ===&lt;br /&gt;
With the limitations of tooling, nested statements that written without indentation will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, anything that is nested should have spacing to indicate the level of nesting. The closing parentheses are especially important.&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
  some command&lt;br /&gt;
  if [...] (&lt;br /&gt;
    some command&lt;br /&gt;
  )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels must never be placed inside of loops or conditions. ===&lt;br /&gt;
The converted goto function has been designed to work through stack frames for Linux and MacOS. For this reason, a label must never be placed inside of a loop or condition. Such code will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: red;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  :mylabel&lt;br /&gt;
  echo This does not convert&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;color: blue;&amp;quot;&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  goto mylabel&lt;br /&gt;
)&lt;br /&gt;
goto skip&lt;br /&gt;
:mylabel&lt;br /&gt;
echo This does not converts&lt;br /&gt;
:skip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1066</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1066"/>
		<updated>2026-04-21T18:51:57Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux and MacOS, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
=== Indenting nested if statements and for loops is necessary. ===&lt;br /&gt;
With the limitations of tooling, nested statements that written without indentation will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, anything that is nested should have spacing to indicate the level of nesting. The closing parentheses are especially important.&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
  some command&lt;br /&gt;
  if [...] (&lt;br /&gt;
    some command&lt;br /&gt;
  )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels must never be placed inside of loops or conditions. ===&lt;br /&gt;
The converted goto function has been designed to work through stack frames for Linux and MacOS. For this reason, a label must never be placed inside of a loop or condition. Such code will fail to convert.&lt;br /&gt;
&lt;br /&gt;
Example that fails to convert:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  :mylabel&lt;br /&gt;
  echo This does not convert&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  goto mylabel&lt;br /&gt;
)&lt;br /&gt;
goto skip&lt;br /&gt;
:mylabel&lt;br /&gt;
echo This does not converts&lt;br /&gt;
:skip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1065</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1065"/>
		<updated>2026-04-21T18:47:40Z</updated>

		<summary type="html">&lt;p&gt;Parricc: /* Indenting nested if statements and for loops is necessary. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux and MacOS, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
=== Indenting nested if statements and for loops is necessary. ===&lt;br /&gt;
With the limitations of tooling, nested statements that written without indentation, such as the below example, will fail to convert:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
if [...] (&lt;br /&gt;
some command&lt;br /&gt;
)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead, anything that is nested should have spacing to indicate the level of nesting. The closing parentheses are especially important.&lt;br /&gt;
&lt;br /&gt;
Example that correctly converts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [...] (&lt;br /&gt;
  some command&lt;br /&gt;
  if [...] (&lt;br /&gt;
    some command&lt;br /&gt;
  )&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labels must never be placed inside of loops or conditions. ===&lt;br /&gt;
The converted goto function has been designed to work through stack frames for Linux and MacOS. For this reason, a label must never be placed inside of a loop or condition. Such code will fail to convert.&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  :mylabel&lt;br /&gt;
  echo This does not convert&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example that successfully converts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if exist file2.txt goto mylabel&lt;br /&gt;
if exist .\mydir\file1.txt (&lt;br /&gt;
  echo file1 exists&lt;br /&gt;
  goto mylabel&lt;br /&gt;
)&lt;br /&gt;
goto skip&lt;br /&gt;
:mylabel&lt;br /&gt;
echo This does not converts&lt;br /&gt;
:skip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1064</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1064"/>
		<updated>2026-04-21T18:15:55Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
=== Indenting nested if statements and for loops is necessary. ===&lt;br /&gt;
&lt;br /&gt;
=== Labels must never be placed inside of loops. ===&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1063</id>
		<title>Batch Conversion Limitations</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Batch_Conversion_Limitations&amp;diff=1063"/>
		<updated>2026-04-21T18:13:55Z</updated>

		<summary type="html">&lt;p&gt;Parricc: describes conversion limitations that must be considered when editing batch files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For batch files to successfully convert into bash files for Linux, there are some limitations for how they can be written. This page is to ensure that team members writing batch files are aware of some of those limitations.&lt;br /&gt;
&lt;br /&gt;
Indentation of nested if statements and loops is necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Labels must never be placed inside of loops.&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Main_Page&amp;diff=1062</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Main_Page&amp;diff=1062"/>
		<updated>2026-04-21T17:53:23Z</updated>

		<summary type="html">&lt;p&gt;Parricc: Renamed Linux Patches Link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[File:RetroeXo Logo.png]]&amp;lt;br&amp;gt;'''Retro eXo'''&amp;lt;/div&amp;gt; =&lt;br /&gt;
&amp;lt;strong&amp;gt;Project Goal&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The eXo projects' goal is preservation through playability.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Project Resources&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''[http://www.retro-exo.com www.retro-exo.com]''': Project Homepage.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[https://www.youtube.com/c/eXoRetro YouTube Channel]''': Various videos about the project and how to use it.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[https://discord.gg/37FYaUZ Discord]''': Project discussion, chat, &amp;amp; community.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[https://github.com/exoscoriae/ Github]''': Bugs, submissions, and enhancements are tracked here.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
=== Current ===&lt;br /&gt;
==== [[EXODOS|eXoDOS]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoDOS v6.04&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: November 28th, 2024&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 7,666&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: TBD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== [[EXOWin3x|eXoWin3x]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoWin3x v2&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: February 14th, 2021&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 1,138&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: eXoWin3x v3&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXOScummVM|eXoScummVM]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoScummVM v2026.1.0&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: February 14th, 2026&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 832 unique titles, multiple variations of each&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: TBD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXODREAMM|eXoDREAMM]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoDREAMM v4.0&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: March 2nd, 2026&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 62&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: Unknown&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXORLP|eXoRLP]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXo's Retro Learning Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: April 1st, 2020&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 667 titles, compiled from eXoDOS and eXoWin3x&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: None. RLP Was a one-time release. Upon merging eXoDOS and eXoWin3x however, a playlist appears that allows you to select all games that were originally included in the RLP.&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXOAppleIIGS|eXoAppleIIGS]] ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoAppleIIGS v1&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: October 31st, 2022&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 460&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: eXoAppleIIGS v2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXODemoScene|eXoDemoScene]] ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoDemoScene v2.1&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: February 21st, 2026&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Demos: 2,424&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: TBD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXOIF|eXoIF]] ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoIF v2.00&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: April 9th, 2026&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 2332&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: TBD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== [[EXOWin9x|eXoWin9x]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: Vol. 1&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: November 22, 2025&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 664&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: Vol. 2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The eXo projects originated from wanting to sit down and play MS-DOS games without spending hours trying to get them running. Games such as DiscWorld were notoriously difficult and had a fair number of forum posts and websites dedicated to attempts to get them running. However websites centered on the topic of DOSBox, the primary MS-DOS emulator, were generally less than welcoming. eXo's original goal was to get his collection of MS-DOS Adventure games setup in a front end and easily accessible. Posts regarding this project began to appear on Underground Gamer &amp;amp; Pleasuredome in 2007, eventually leading to the release of eXoDOS Vol. I: Adventure in early 2008. This first release had around 650 titles in it, with plans to continue on to a second volume dedicated to role-playing games after excitement was expressed by fellow members on Underground Gamer. It was during this time that eXo became concerned that the nature of DOS emulation was leading towards a scenario in which the number of people who had the technical knowledge to set games up on their own was dwindling. Meanwhile, only a handful of highly popular commercial games for the era were available on any store front. eXo decided to continue tackling volumes of games with the impossible goal of preserving all MS-DOS games. Fundamental changes to the structure of the project were made leading to the release of eXoDOS Version 2. Vol. I-II were re-released along with eXoDOS Vol. III: Strategy (2009). Some of these primary changes included moving the games conf files out of their archive and into the same folder as the launcher. This allowed the conf file to be modified without the need to repack the entire game. eXoDOS Vol. IV: Sim\Sports\Racing\Educational (2011) and eXoDOS Vol. V: Action (2012) were released using the same structure. Releases were originally split into volumes due to bandwidth and storage concerns, however it also helped to focus work on specific packs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the first 2 versions of eXoDOS was primarily manual. Games were originally identified by hand typing metadata from [https://www.mobygames.com/ MobyGames] into a database. Each game's launcher, conf file, and install file was copied from a base template and then modified to fit that game, with information like folder names, game name, and other variables hard coded. Soon after the release of eXoDOS Version 2, eXo began to work on a Windows 3x project. This was a very slow process due to the rocky documentation and emulation of Windows 3x. Several improvements were made to the structure of the project during this time however, leading the the release of eXoDOS Version 3. The Windows 3x project was dubbed Win3xO, and released in 2015 with just over 1,000 games in it. eXoDOS versions 1-3 and Win3xO were powered by the MEAGRE front end, which was also originally posted as a member project on the UG forums.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The release of Win3xO led to serious burnout, which resulted in a year long break in the project that coincided with the abrupt deletion of Underground Gamer's website, tracker, and forums. Eventually eXo began work on locating new games for the DOS project while addressing bug fixes within the Windows 3x project. Work continued alone during this time, however with the downfall of UG, discussion at this point was primarily limited to occasional posts on the Pleasuredome forums. During this time the author of MEAGRE, Donarumo, decided to cease development on the front end. He moved his personal collections over to [https://www.launchbox-app.com/ LaunchBox] and encouraged eXo to consider it for his projects as well. After a positive discussion with the author of LaunchBox, permission was granted to include it with the forthcoming eXoDOS Version 4 release. Changing to a new front end was a massive task however, as it meant that all metadata (release information, manuals, game images, etc...) had to be imported on a game by game basis. This time was used to begin scrubbing the project of all images that had watermarks, and replacing them with original screen shots and clean box scans.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In response to the decline of participation of forums, a [https://discord.com/ Discord] server was started for the project on June 7th, 2018. The community quickly grew with various people who had been following the project for years. The ability to communicate in real time allowed others to find ways to contribute, which quickly led to multiple volunteers stepping forward to improve key aspects of the projects. This resulted in a flood of improvements for eXoDOS Version 4, with one of the primary new features being the ability to select advanced sound card options. Since then, a steady flow of new features and improved modules have been created for each upcoming release.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In March of 2020, in response the quarantine protocols and school closings, the RLP (Retro Learning Pack) was released. This pack of 667 games from the MS-DOS and Windows 3.x era was designed to give parents of children stuck at home a way to entertain and educate their children during lockdown. [https://kotaku.com/loads-of-awesome-old-pc-games-will-keep-your-damn-kids-1842632937 Coverage] of the pack extended into the media on sites like [https://kotaku.com/ Kotaku].&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
The project and/or creator have been featured in the following articles:&lt;br /&gt;
&lt;br /&gt;
[https://blog.archive.org/2019/10/13/2500-more-ms-dos-games-playable-at-the-archive/ '''''2,500 More MS-DOS Games Playable at the Archive''''' - Scott, J. (2019, Oct. 13). Internet Archive Blog]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://kotaku.com/one-mans-quest-to-collect-every-classic-pc-game-in-exis-1839432488 '''''One Man's Quest To Collect Every Classic PC Game In Existence''''' - Plunkett, L. (2019, Dec. 16). Kotaku.]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://kotaku.com/loads-of-awesome-old-pc-games-will-keep-your-damn-kids-1842632937 '''''Loads Of Awesome Old PC Games Will Keep Your Damn Kids Busy''''' - Plunkett, L. (2020, Apr. 4). Kotaku]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.retrorgb.com/interview-with-exo-pc-ms-dos-and-windows-game-preservationist.html '''''Interview with eXo: PC, MS-DOS and Windows game preservationist''''' - Mons, D. (2022, Apr. 7). RetroRGB]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.emunewz.net/forum/showthread.php?tid=249003 '''''eXo, the author of eXoDOS''''' - nickblame (2023, Dec. 27). EmuNewz]&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
[[Project Contributors]]&lt;br /&gt;
&lt;br /&gt;
== Known Issues ==&lt;br /&gt;
[[EXODOS Known Issues|eXoDOS Known Issues]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[EXOScummVM#Known Issues|eXoScummVM Known Issues]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Technical Information ==&lt;br /&gt;
=== Emulated Hardware ===&lt;br /&gt;
[[3Dfx]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Sound Cards]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Video Modes]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Remote Multiplayer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[ReelMagic]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common Core Systems ===&lt;br /&gt;
[[Project Setup]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Installer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Launcher]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DOSBox Configuration File]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Downloader]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[EXO Plugin|eXo Plugin]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Emulators ===&lt;br /&gt;
[[DOSBox]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.scummvm.org/index.php?title=Main_Page ScummVM]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://aarongiles.com/dreamm/ DREAMM]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unique Modules ===&lt;br /&gt;
[[Save Game Transfer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Gold Box Companion]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[All-Seeing Eye]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ultimapper 5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
[[Images]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[LaunchBox Platform XML]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Interactive Code Wheels]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Manuals]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Music]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Playlists]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Video Snaps]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Media Add-On Pack ===&lt;br /&gt;
[[Books]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Catalogs]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Magazines]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Soundtracks]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Videos]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
[[Master Database]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game Specific Projects ==&lt;br /&gt;
DOOM - [[EXOWAD|eXoWAD]]&amp;lt;br&amp;gt;&lt;br /&gt;
ZZT - [[EXOZZT|eXoZZT]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Unlimited Adventures]]&lt;br /&gt;
&lt;br /&gt;
== Language Packs ==&lt;br /&gt;
&lt;br /&gt;
[[The Language Pack Concept]]&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
[[German Language Pack]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Polish Language Pack]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Spanish Language Pack]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== In Progress ===&lt;br /&gt;
Chinese Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
French Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Portuguese Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== In need of a curator ===&lt;br /&gt;
Hebrew Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Italian Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Japanese Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Korean Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Russian Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;If you have any interest in assisting with these language packs (or working on an unlisted language pack), please join our [https://discord.gg/37FYaUZ Discord] server.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Patch ==&lt;br /&gt;
[[Linux Patch|Linux Patches]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
For a list of frequently asked questions, please visit the [[FAQ]] page.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
If you would like to contribute, please contact [[User:EXO|eXo]] for registration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Getting started ==&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki] --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=656</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=656"/>
		<updated>2024-09-13T04:03:03Z</updated>

		<summary type="html">&lt;p&gt;Parricc: /* Linux Flatpaks */ completed flatpak runtime list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is a complete conversion to make all features of eXoDOS work on Linux systems just as they would in Windows, including both the lite and full versions. An official Linux frontend, called exogui, is included as part of this conversion. Additionally, the patch is written to ensure that the collection works as expected in dual-boot environments. After the Linux patch is installed, if eXoDOS is updated or games are installed, this will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
As it is encouraged to seed the collection, installing the Linux patch will not alter any torrent files. The patch does not change the existing eXoDOS framework, but instead supplements it.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest eXoDOS Linux Patch is for version 6.4.&lt;br /&gt;
&lt;br /&gt;
An add-on zip is also available as a separate download to add Linux support to the Media Pack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;Note: The German Language Pack has not yet been converted*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Supported distributions include:&lt;br /&gt;
*Arch / Manjaro Linux / SteamOS&lt;br /&gt;
*Fedora&lt;br /&gt;
*Ubuntu (and Ubuntu-based distributions) / Debian&lt;br /&gt;
*Nearly any x86_64 distro that has flatpak support&lt;br /&gt;
Unsupported:&lt;br /&gt;
&lt;br /&gt;
*ARM, IBM Power, and RISC-V computers and devices are '''not''' supported at this time. This includes the Raspberry Pi. We need someone to volunteer to build ARM versions of the flatpaks for support to be added.&lt;br /&gt;
* macOS and BSD are also unsupported at this time. Until we have a volunteer to add macOS support to the frontend, this is unlikely to change. Backend support exists for the eXoDREAMM project, and the backend for eXoDOS has been partially converted in case we get a volunteer.&lt;br /&gt;
&lt;br /&gt;
===Installation Process===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive====&lt;br /&gt;
&lt;br /&gt;
:First, the '''eXoDOS 6.4 Linux Patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
:Copy the '''eXoDOS 6.4 Linux Patch.zip''' file to the root directory of your freshly downloaded eXoDOS 6.4 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located)&lt;br /&gt;
:Then, in your file manager, right click on the '''eXoDOS 6.4 Linux Patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
:Alternatively, you may open the zip with a utility such as Ark, and drag the files and folders into the root eXoDOS directory.&lt;br /&gt;
:The important thing is to ensure the files are extracted into the root directory of the collection, and not into a newly created subdirectory.&lt;br /&gt;
:If you have also downloaded the eXoDOS Media Pack, ensure it has been downloaded the the same directory as the base eXoDOS collection. Then, download and place the &amp;quot;''DOS_linux_Magazines.zip''&amp;quot; file in the Content directory. Do not unzip this file.&lt;br /&gt;
:After this has been done, proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
====Step 2 - Installing System Dependencies==== &lt;br /&gt;
&lt;br /&gt;
:The next step is to install the software needed to run the collection. The '''install_dependencies.command''' script will run you through a guided setup to do this.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; If you are using Thunar or XFCE, you will first need to enable running shell files as executables. To do this, open a terminal and run the following command:   &amp;lt;code&amp;gt;xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set true&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;In your file manager, double-click on '''install_dependencies.command''' to start the dependency installer. If you are asked whether you want to execute the file, click yes.&lt;br /&gt;
:If you are using Nautilus or Gnome and are not given this option to run by double-clicking, right click the file and select Run as Program.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; This step will need to be done on any Linux computer that has not previously ran eXoDOS 6, even if the full setup has already been completed on a portable drive. Also note that the flatpaks are installed at a user level. As such, other users will need to run the dependency installer separately as well. If you update your video drivers, you may also need to follow that up with a flatpak update. Rerunning a dependency installer installation will handle that for you.&amp;lt;/blockquote&amp;gt;Upon running the dependency installer, you will be prompted with a guided setup that gives the following options:  &amp;lt;br /&amp;gt;The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.  To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instruction.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[P]roceed with installation&lt;br /&gt;
[D]ownload the latest setup&lt;br /&gt;
[R]emove all installed eXo packages&lt;br /&gt;
[A]bort installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:The &amp;quot;''[D]ownload the latest setup''&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version. To proceed with installing the dependencies, choose &amp;quot;''[P]roceed with installation''&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
:In your file manager, double-click on the '''eXoDOS Setup.command''' file to start the setup, and then follow the on-screen instructions. If you are asked whether you want to execute the file, click yes. If you are using Nautilus or Gnome and are not given this option, right click the file and select Run as Program.&lt;br /&gt;
:&lt;br /&gt;
:The setup file will check for required files and warn you if any are missing. It will also check for files from the Media Pack Add-On.&lt;br /&gt;
&lt;br /&gt;
:This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers.&lt;br /&gt;
&lt;br /&gt;
:It is important to run the setup and not extract any files manually. Not only are the files location sensitive, but the setup makes some changes to them.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
:You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off.&lt;br /&gt;
&lt;br /&gt;
:Once it is complete, run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. However, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to run the '''eXoDOS Updater''' to update the shortcut to point to the new location. The '''eXoDOS Updater''' will allow you to reconfigure all of the installation options instead of running through the entire setup process again.&lt;br /&gt;
&lt;br /&gt;
===Using eXoDOS===&lt;br /&gt;
&lt;br /&gt;
====exogui====&lt;br /&gt;
&lt;br /&gt;
:The official Linux frontend is exogui, a fork of Flashpoint Launcher. A member of our Discord, jelcynek, created exogui and has continued to maintain it over the years. More recently, Colin, the main Flashpoint Launcher developer, has also contributed to exogui. Together, they have made a very solid frontend. We are still looking for more volunteers to improve the UI experience, especially on the Steam Deck.&lt;br /&gt;
:Simply double-click on the '''eXoDOS''' desktop icon, or execute the '''exogui.command''' file to launch the frontend. You will be presented with a list of all included games.&lt;br /&gt;
&lt;br /&gt;
:The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
:The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
:Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
:If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will be given an option to keep your saved games. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler.&lt;br /&gt;
:&lt;br /&gt;
:To launch a game or its setup from exogui, click on the game to select it, and then click on the 'Install', 'Play', or 'Setup' button in the right-hand pane.&lt;br /&gt;
&lt;br /&gt;
====Creating Desktop Shortcuts==== &lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a specific game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes to the Exec, Icon, and Name lines as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Version=1.0&lt;br /&gt;
Type=Application&lt;br /&gt;
Terminal=false&lt;br /&gt;
Exec=&amp;quot;/home/username/eXoDOS/eXo/eXoDOS/!dos/mi1/Secret of Monkey Island, The (1990).command&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/Some Monkey Island Icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changelog===&lt;br /&gt;
&lt;br /&gt;
====Changes to the eXoDOS 6.04 Linux Patch====&lt;br /&gt;
&lt;br /&gt;
:*Launch scripts directly from any file-manager: Files ending in the *.command extension can be launched directly from any file manager.&lt;br /&gt;
:*Revamped dependency installer with update support: For many distributions, sudo access is no longer needed.&lt;br /&gt;
:*Improved compatibility: The eXoDOS Linux patch will now run on virtually any x86_64 distro with flatpak support, including the Steam Deck.&lt;br /&gt;
:*Improved frontend: The exogui frontend is now feature packed with full support for extras, filters, images, playlists, and videos.&lt;br /&gt;
:*Improved backend: The backend has been completely revamped to include all eXoDOS 6 features.&lt;br /&gt;
:*Bug Squash: Hundreds of previously broken games have been fixed after thorough testing&lt;br /&gt;
&lt;br /&gt;
===Files===&lt;br /&gt;
&lt;br /&gt;
====eXoDOS 6.4 Linux Patch.zip====&lt;br /&gt;
:'''eXoDOS 6.4 Linux Patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOS_linux_metadata.zip&lt;br /&gt;
│   └── XODOS_linux_Metadata.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       ├── eXoMerge.bsh&lt;br /&gt;
│       ├── install_dependencies.bsh&lt;br /&gt;
│       ├── Setup eXoDOS.bsh&lt;br /&gt;
│       └── utilDOS_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── eXoMerge.command&lt;br /&gt;
├── install_dependencies.command&lt;br /&gt;
└── Setup eXoDOS.command&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
:*'''Content/!DOS_linux_metadata.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (bsh, command, conf) for games.&lt;br /&gt;
:*'''Content/XODOS_linux_Metadata.zip''' - This contains the exogui files and some xml scripts.&lt;br /&gt;
:*'''eXo/util/eXoMerge.bsh''' - This is a support file for eXoMerge.command.&lt;br /&gt;
:*'''eXo/util/install_dependencies.bsh''' - This is a support file for install_dependencies.command.&lt;br /&gt;
:*'''eXo/util/Setup eXoDOS.bsh''' - This is a support file for Setup eXoDOS.command.&lt;br /&gt;
:*'''eXo/util/utilDOS_linux.zip''' - This contains the eXoDOS Linux backend files.&lt;br /&gt;
:*'''eXoMerge.command''' - This script is used to help merge two eXo collections that have already been instal&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''led.&lt;br /&gt;
:* '''install_dependencies.command''' - This launches the Linux/macOS setup to &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''install system dependencies needed for eXo collections.&lt;br /&gt;
:*'''Setup eXoDOS.command''' - This launches the Linux/macOS setup for eXoDOS. While you cannot currently run eXoDOS on macOS, you can still install it for other systems.&lt;br /&gt;
&lt;br /&gt;
====util_linux.zip==== &lt;br /&gt;
:'''util_linux.zip''' contents:&lt;br /&gt;
:* '''!english/texts_linux.txt''' - support file for the eXoDOS Updater&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.bsh''' - language pack support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.msh''' - language pack support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/install.bsh''' - language pack support file for Linux game installer (called by bsh script in game directory)&lt;br /&gt;
:*'''!languagepacks/install.msh''' - language pack support file for macOS game installer (called by msh script in game directory)&lt;br /&gt;
:*'''!languagepacks/ip.bsh''' - language pack support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/ip.msh''' - language pack support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/launch.bsh''' - language pack support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''!languagepacks/launch.msh''' - language pack support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''Sumatra/CallSumatra.bsh''' - Linux support file for CallSumatra.command&lt;br /&gt;
:*'''Sumatra/CallSumatra.command''' - exogui calls this to launch Sumatra for magazine articles in Linux&lt;br /&gt;
:*'''AltLauncher.bsh''' - support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''AltLauncher.msh''' - support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''EXTDOS_linux.zip''' - contains Linux flatpaks, update files, AppImages, and emulator support files (bak, bsh, command, conf, txt) &lt;br /&gt;
:*'''alt_dosbox_linux.txt''' - defines the command to launch DOSBox for the alternate launcher (&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;must be DOSBox Staging to not break conf files)&lt;br /&gt;
:*'''alt_launch_linux.txt''' - defines the directory containing the DOSBox Staging resource folder used by eXoDOS for the alternate launcher&lt;br /&gt;
:*'''converter.bash''' - support file for regenerate.bash that converts bat files to bash files using a long series of substitution commands&lt;br /&gt;
:*'''dosbox_linux.txt''' - defines what version of DOSBox is used by each game in Linux&lt;br /&gt;
:*'''eXoLBpm_linux.py''' - The LaunchBox Parents.xml merging tool for Linux&lt;br /&gt;
:*'''eXoLPLBXMLedit_linux.py''' - The eXoDOS Language Pack LaunchBox XML edit tool for Linux&lt;br /&gt;
:*'''eXoLPPPM_linux.py''' - The eXoDOS Language Pack Playlist Parents Merger tool for Linux&lt;br /&gt;
:* '''exodos.png''' - png file that can be used as a custom icon in Steam&lt;br /&gt;
:*'''exodosvi_cover.jpg''' - Box art image that can be used as a custom background in Steam&lt;br /&gt;
:*'''install.bsh''' - support file for Linux game install scripts (gets called by the install.bsh script in the game directory)&lt;br /&gt;
:*'''install.msh''' - support file for macOS game install scripts (gets called by the install.msh script in the game directory)&lt;br /&gt;
:*'''ip.bsh''' - support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''ip.msh''' - support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''launch.bsh''' - support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''launch.msh''' - support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''regenerate.bash''' - location sensitive development script used to convert unzipped files from eXo collections to Linux and macOS&lt;br /&gt;
:*'''version.bsh''' - Linux support file for version.command&lt;br /&gt;
:*'''version.command''' - This tells the currently installed version of eXoDOS&lt;br /&gt;
:*'''version.msh''' - macOS support file for version.command&lt;br /&gt;
'''Content/DOS_linux_Magazines.zip''' - Linux supplement for the Media Pack - This contains Linux DOSBox configuration, launcher, and cue files related to magazines and disk magazines (bat, bsh, command, conf, cue).&lt;br /&gt;
&lt;br /&gt;
====Development Scripts====&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/converter.bash====&lt;br /&gt;
: The '''converter.bash''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.bash''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
:To prevent direct execution, the '''converter.bash''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.bash''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.bash''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
:Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.bash&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.bsh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.bsh&lt;br /&gt;
for currentScript in filesToConvert/*.bsh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.bash''' script is called by the '''regenerate.bash''' script. Details about those scripts will be described later in this document. These scripts are intended for development purposes, and changes periodically have to be made to them to handle any conversions that do not succeed. This could involve anything from fixing case inconsistencies to parsing batch code that was written in an unforeseen way.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function=====&lt;br /&gt;
&lt;br /&gt;
:The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed, ed, and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new substitution commands close to the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered, but not yet in a final state. If any existing text manipulation commands are changed or new ones added, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.bash''' script.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/regenerate.bash====&lt;br /&gt;
&lt;br /&gt;
:The purpose of the '''regenerate.bash''' script is to assist in the development of future Linux and macOS patches by automating the conversion of config files and Windows batch files to their Linux and macOS equivalents. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.bash''' script as well as the '''converter.bash''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging. Version 6 added much more complexity to eXoDOS than had ever previously existed. As a result, from version 5 to version 6, these files grew over 5 and a half times in size and complexity. As time goes on, new challenges are likely to be faced for maintaining these scripts.&lt;br /&gt;
&lt;br /&gt;
:The '''regenerate.bash''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, and converts all of the unzipped bat, conf, and other known support files. As case inconsistencies are found, substitutions to correct the inconsistencies are manually placed into the regenerate.bash script.&lt;br /&gt;
&lt;br /&gt;
:Most text manipulation for the above steps is done through sed commands, although there are a few situations where ed and Perl are used instead.&lt;br /&gt;
&lt;br /&gt;
:In short, when executing the '''regenerate.bash''' script, it goes through the following steps:&lt;br /&gt;
:#Gives a disclaimer that running the script will take a VERY long time&lt;br /&gt;
:#Checks that standard eXo files are located in their expected locations in relation to the script&lt;br /&gt;
:#Fixes zip archive references&lt;br /&gt;
:#Fixes batch file reference inconsistencies&lt;br /&gt;
:#Copies bat files to newly created bsh files&lt;br /&gt;
:#Prepares bsh files for conversion&lt;br /&gt;
:#Converts syntax for the Linux shell files (bsh) from Windows batch to bash&lt;br /&gt;
:#Removes unnecessary dependency checks for eXoDREAMM and eXoScummVM&lt;br /&gt;
:#Creates universal launch files for Linux and macOS (command files)&lt;br /&gt;
:#Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:#Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:#Creates DOSBox configuration files for Linux&lt;br /&gt;
:#Makes necessary changes to Linux configuration files&lt;br /&gt;
:#Applies Linux-only backend fixes&lt;br /&gt;
:#Applies Linux-only game specific fixes&lt;br /&gt;
:#Converts shell script reference txt files&lt;br /&gt;
:#Prepares macOS shell files (this step is currently skipped for eXoDOS, eXoScummVM, and eXoWin3x)&lt;br /&gt;
:#Corrects xml inconsistencies with known solutions&lt;br /&gt;
:#Removes unnecessary files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the case inconsistency fixes and game specific changes are manually added to the '''regenerate.bash''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
===Linux Flatpaks===&lt;br /&gt;
&lt;br /&gt;
:The following flatpaks use org.freedesktop.Platform 24.08:&lt;br /&gt;
:* com.retro_exo.aria2c&lt;br /&gt;
:*com.retro_exo.dosbox-staging-081-2&lt;br /&gt;
:*com.retro_exo.dosbox-x-08220&lt;br /&gt;
:*com.retro_exo.dosbox-x-20240701&lt;br /&gt;
:*com.retro_exo.gzdoom-4-11-3&lt;br /&gt;
:*com.retro_exo.mcomix&lt;br /&gt;
:*com.retro_exo.scummvm-2-2-0&lt;br /&gt;
:*com.retro_exo.scummvm-2-3-0-git15811-gf97bfb7ce1&lt;br /&gt;
:The following flatpaks use org.freedesktop.Platform 23.08:&lt;br /&gt;
:* com.retro_exo.dosbox-074r3-1&lt;br /&gt;
:* com.retro_exo.dosbox-ece-r4301&lt;br /&gt;
:* com.retro_exo.dosbox-ece-r4358&lt;br /&gt;
:* com.retro_exo.dosbox-ece-r4482&lt;br /&gt;
:* com.retro_exo.dosbox-gridc-4-3-1&lt;br /&gt;
:* com.retro_exo.mpv&lt;br /&gt;
:*com.retro_exo.wine&lt;br /&gt;
:The following flatpaks use org.gnome.Platform 46:&lt;br /&gt;
:* com.retro_exo.abiword&lt;br /&gt;
:* com.retro_exo.gnumeric&lt;br /&gt;
:The following flatpaks use org.kde.Platform 6.7:&lt;br /&gt;
:* com.retro_exo.falkon&lt;br /&gt;
:* com.retro_exo.okular&lt;br /&gt;
===Linux Update and Patch Files===&lt;br /&gt;
&lt;br /&gt;
:The Update directory is extracted from '''EXTDOS_linux.zip''' to the '''eXo/Update''' location. It contains the scripts to run the eXoDOS updater as well as subdirectories for updates and patch files. The '''eXo/Update''' directory may initially look something like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── changelog.txt&lt;br /&gt;
├── cleanup.bat&lt;br /&gt;
├── cleanup.bsh&lt;br /&gt;
├── cleanup.command&lt;br /&gt;
├── !dos&lt;br /&gt;
│   └── linux&lt;br /&gt;
│       └── release&lt;br /&gt;
│           ├── Battle Isle 2 (1993).zip&lt;br /&gt;
│           ├── Breach 2 (1990).zip&lt;br /&gt;
│           ├── Carmageddon Max Pack (1998).zip&lt;br /&gt;
│           ├── Command and Conquer (1995).zip&lt;br /&gt;
│           ├── Command and Conquer - Red Alert (1996).zip&lt;br /&gt;
│           ├── Complete Great Naval Battles, The - The Final Fury (1996).zip&lt;br /&gt;
│           ├── DOOM - eXoWAD (2021).zip&lt;br /&gt;
│           ├── Grand Theft Auto (1997).zip&lt;br /&gt;
│           ├── Hard Nova (1990).zip&lt;br /&gt;
│           ├── Heroes of Might and Magic II (Deluxe Edition) (1998).zip&lt;br /&gt;
│           ├── Jane's Combat Simulations Advanced Tactical Fighters (1996).zip&lt;br /&gt;
│           ├── Last Half of Darkness (1989).zip&lt;br /&gt;
│           ├── Lemmings (1991).zip&lt;br /&gt;
│           ├── Lemmings 3 - All New World of Lemmings (1994).zip&lt;br /&gt;
│           ├── Leo the Lion (1997).zip&lt;br /&gt;
│           ├── Living Ball (1995).zip&lt;br /&gt;
│           ├── Mean 18 (1986).zip&lt;br /&gt;
│           ├── MechWarrior 2 (Limited Edition) (1996).zip&lt;br /&gt;
│           ├── NFL Challenge (1985).zip&lt;br /&gt;
│           ├── Normality (1996).zip&lt;br /&gt;
│           ├── Picture Perfect Golf (1995).zip&lt;br /&gt;
│           ├── Prisoner of Ice (1995).zip&lt;br /&gt;
│           ├── Realms of Arkania - Blade of Destiny (1992).zip&lt;br /&gt;
│           ├── Resurrection - Rise 2 (1996).zip&lt;br /&gt;
│           ├── Sigil (2019).zip&lt;br /&gt;
│           ├── Sigil II (2023).zip&lt;br /&gt;
│           ├── Star Trek - Judgement Rites CD (1993).zip&lt;br /&gt;
│           ├── Time Gate - Knight's Chase (1995).zip&lt;br /&gt;
│           ├── Ultima VI - The False Prophet (1990).zip&lt;br /&gt;
│           ├── Ultima V - Warriors of Destiny (1988).zip&lt;br /&gt;
│           └── Zone of Artificial Resources (1997).zip&lt;br /&gt;
├── index.txt&lt;br /&gt;
├── restore.exe&lt;br /&gt;
├── restore.py&lt;br /&gt;
├── update.bat&lt;br /&gt;
├── update.bsh&lt;br /&gt;
├── update.command&lt;br /&gt;
├── update_installed.bat&lt;br /&gt;
├── update_installed.bsh&lt;br /&gt;
├── update_installed.command&lt;br /&gt;
├── update.txt&lt;br /&gt;
├── update_xml.bat&lt;br /&gt;
├── update_xml.bsh&lt;br /&gt;
├── update_xml.command&lt;br /&gt;
└── ver&lt;br /&gt;
    └── ver.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Executing the '''update.command''' script will run an update for eXoDOS. This normally will be done in exogui from the eXoDOS game entry. Both the Windows version of eXoDOS and the Linux patch download the same updates. Updates work identically regardless of the operating system.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos''' directory are for non-OS specific game file updates.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos/linux/release''' directory are Linux specific patch files that are bundled with the eXoDOS Linux patch when you download it.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos/linux''' directory are Linux specific update files that are downloaded as part of an eXoDOS update.&lt;br /&gt;
:All files extracted from Linux specific archives have unique filenames to differentiate them from files that should only be used in Windows.&lt;br /&gt;
:Files are extracted from these directories in the following order:&lt;br /&gt;
:# eXo/Update/!dos&lt;br /&gt;
:# eXo/Update/!dos/linux/release&lt;br /&gt;
:# eXo/Update/!dos/linux&lt;br /&gt;
&lt;br /&gt;
===Preparing For Manual Conversion===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
===Packaging Files For Release===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=655</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=655"/>
		<updated>2024-09-13T03:46:36Z</updated>

		<summary type="html">&lt;p&gt;Parricc: /* util_linux.zip */ add runtime details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is a complete conversion to make all features of eXoDOS work on Linux systems just as they would in Windows, including both the lite and full versions. An official Linux frontend, called exogui, is included as part of this conversion. Additionally, the patch is written to ensure that the collection works as expected in dual-boot environments. After the Linux patch is installed, if eXoDOS is updated or games are installed, this will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
As it is encouraged to seed the collection, installing the Linux patch will not alter any torrent files. The patch does not change the existing eXoDOS framework, but instead supplements it.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest eXoDOS Linux Patch is for version 6.4.&lt;br /&gt;
&lt;br /&gt;
An add-on zip is also available as a separate download to add Linux support to the Media Pack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;Note: The German Language Pack has not yet been converted*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Supported distributions include:&lt;br /&gt;
*Arch / Manjaro Linux / SteamOS&lt;br /&gt;
*Fedora&lt;br /&gt;
*Ubuntu (and Ubuntu-based distributions) / Debian&lt;br /&gt;
*Nearly any x86_64 distro that has flatpak support&lt;br /&gt;
Unsupported:&lt;br /&gt;
&lt;br /&gt;
*ARM, IBM Power, and RISC-V computers and devices are '''not''' supported at this time. This includes the Raspberry Pi. We need someone to volunteer to build ARM versions of the flatpaks for support to be added.&lt;br /&gt;
* macOS and BSD are also unsupported at this time. Until we have a volunteer to add macOS support to the frontend, this is unlikely to change. Backend support exists for the eXoDREAMM project, and the backend for eXoDOS has been partially converted in case we get a volunteer.&lt;br /&gt;
&lt;br /&gt;
===Installation Process===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive====&lt;br /&gt;
&lt;br /&gt;
:First, the '''eXoDOS 6.4 Linux Patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
:Copy the '''eXoDOS 6.4 Linux Patch.zip''' file to the root directory of your freshly downloaded eXoDOS 6.4 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located)&lt;br /&gt;
:Then, in your file manager, right click on the '''eXoDOS 6.4 Linux Patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
:Alternatively, you may open the zip with a utility such as Ark, and drag the files and folders into the root eXoDOS directory.&lt;br /&gt;
:The important thing is to ensure the files are extracted into the root directory of the collection, and not into a newly created subdirectory.&lt;br /&gt;
:If you have also downloaded the eXoDOS Media Pack, ensure it has been downloaded the the same directory as the base eXoDOS collection. Then, download and place the &amp;quot;''DOS_linux_Magazines.zip''&amp;quot; file in the Content directory. Do not unzip this file.&lt;br /&gt;
:After this has been done, proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
====Step 2 - Installing System Dependencies==== &lt;br /&gt;
&lt;br /&gt;
:The next step is to install the software needed to run the collection. The '''install_dependencies.command''' script will run you through a guided setup to do this.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; If you are using Thunar or XFCE, you will first need to enable running shell files as executables. To do this, open a terminal and run the following command:   &amp;lt;code&amp;gt;xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set true&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;In your file manager, double-click on '''install_dependencies.command''' to start the dependency installer. If you are asked whether you want to execute the file, click yes.&lt;br /&gt;
:If you are using Nautilus or Gnome and are not given this option to run by double-clicking, right click the file and select Run as Program.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; This step will need to be done on any Linux computer that has not previously ran eXoDOS 6, even if the full setup has already been completed on a portable drive. Also note that the flatpaks are installed at a user level. As such, other users will need to run the dependency installer separately as well. If you update your video drivers, you may also need to follow that up with a flatpak update. Rerunning a dependency installer installation will handle that for you.&amp;lt;/blockquote&amp;gt;Upon running the dependency installer, you will be prompted with a guided setup that gives the following options:  &amp;lt;br /&amp;gt;The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.  To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instruction.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[P]roceed with installation&lt;br /&gt;
[D]ownload the latest setup&lt;br /&gt;
[R]emove all installed eXo packages&lt;br /&gt;
[A]bort installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:The &amp;quot;''[D]ownload the latest setup''&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version. To proceed with installing the dependencies, choose &amp;quot;''[P]roceed with installation''&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
:In your file manager, double-click on the '''eXoDOS Setup.command''' file to start the setup, and then follow the on-screen instructions. If you are asked whether you want to execute the file, click yes. If you are using Nautilus or Gnome and are not given this option, right click the file and select Run as Program.&lt;br /&gt;
:&lt;br /&gt;
:The setup file will check for required files and warn you if any are missing. It will also check for files from the Media Pack Add-On.&lt;br /&gt;
&lt;br /&gt;
:This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers.&lt;br /&gt;
&lt;br /&gt;
:It is important to run the setup and not extract any files manually. Not only are the files location sensitive, but the setup makes some changes to them.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
:You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off.&lt;br /&gt;
&lt;br /&gt;
:Once it is complete, run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. However, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to run the '''eXoDOS Updater''' to update the shortcut to point to the new location. The '''eXoDOS Updater''' will allow you to reconfigure all of the installation options instead of running through the entire setup process again.&lt;br /&gt;
&lt;br /&gt;
===Using eXoDOS===&lt;br /&gt;
&lt;br /&gt;
====exogui====&lt;br /&gt;
&lt;br /&gt;
:The official Linux frontend is exogui, a fork of Flashpoint Launcher. A member of our Discord, jelcynek, created exogui and has continued to maintain it over the years. More recently, Colin, the main Flashpoint Launcher developer, has also contributed to exogui. Together, they have made a very solid frontend. We are still looking for more volunteers to improve the UI experience, especially on the Steam Deck.&lt;br /&gt;
:Simply double-click on the '''eXoDOS''' desktop icon, or execute the '''exogui.command''' file to launch the frontend. You will be presented with a list of all included games.&lt;br /&gt;
&lt;br /&gt;
:The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
:The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
:Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
:If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will be given an option to keep your saved games. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler.&lt;br /&gt;
:&lt;br /&gt;
:To launch a game or its setup from exogui, click on the game to select it, and then click on the 'Install', 'Play', or 'Setup' button in the right-hand pane.&lt;br /&gt;
&lt;br /&gt;
====Creating Desktop Shortcuts==== &lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a specific game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes to the Exec, Icon, and Name lines as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Version=1.0&lt;br /&gt;
Type=Application&lt;br /&gt;
Terminal=false&lt;br /&gt;
Exec=&amp;quot;/home/username/eXoDOS/eXo/eXoDOS/!dos/mi1/Secret of Monkey Island, The (1990).command&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/Some Monkey Island Icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changelog===&lt;br /&gt;
&lt;br /&gt;
====Changes to the eXoDOS 6.04 Linux Patch====&lt;br /&gt;
&lt;br /&gt;
:*Launch scripts directly from any file-manager: Files ending in the *.command extension can be launched directly from any file manager.&lt;br /&gt;
:*Revamped dependency installer with update support: For many distributions, sudo access is no longer needed.&lt;br /&gt;
:*Improved compatibility: The eXoDOS Linux patch will now run on virtually any x86_64 distro with flatpak support, including the Steam Deck.&lt;br /&gt;
:*Improved frontend: The exogui frontend is now feature packed with full support for extras, filters, images, playlists, and videos.&lt;br /&gt;
:*Improved backend: The backend has been completely revamped to include all eXoDOS 6 features.&lt;br /&gt;
:*Bug Squash: Hundreds of previously broken games have been fixed after thorough testing&lt;br /&gt;
&lt;br /&gt;
===Files===&lt;br /&gt;
&lt;br /&gt;
====eXoDOS 6.4 Linux Patch.zip====&lt;br /&gt;
:'''eXoDOS 6.4 Linux Patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOS_linux_metadata.zip&lt;br /&gt;
│   └── XODOS_linux_Metadata.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       ├── eXoMerge.bsh&lt;br /&gt;
│       ├── install_dependencies.bsh&lt;br /&gt;
│       ├── Setup eXoDOS.bsh&lt;br /&gt;
│       └── utilDOS_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── eXoMerge.command&lt;br /&gt;
├── install_dependencies.command&lt;br /&gt;
└── Setup eXoDOS.command&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
:*'''Content/!DOS_linux_metadata.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (bsh, command, conf) for games.&lt;br /&gt;
:*'''Content/XODOS_linux_Metadata.zip''' - This contains the exogui files and some xml scripts.&lt;br /&gt;
:*'''eXo/util/eXoMerge.bsh''' - This is a support file for eXoMerge.command.&lt;br /&gt;
:*'''eXo/util/install_dependencies.bsh''' - This is a support file for install_dependencies.command.&lt;br /&gt;
:*'''eXo/util/Setup eXoDOS.bsh''' - This is a support file for Setup eXoDOS.command.&lt;br /&gt;
:*'''eXo/util/utilDOS_linux.zip''' - This contains the eXoDOS Linux backend files.&lt;br /&gt;
:*'''eXoMerge.command''' - This script is used to help merge two eXo collections that have already been instal&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''led.&lt;br /&gt;
:* '''install_dependencies.command''' - This launches the Linux/macOS setup to &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''install system dependencies needed for eXo collections.&lt;br /&gt;
:*'''Setup eXoDOS.command''' - This launches the Linux/macOS setup for eXoDOS. While you cannot currently run eXoDOS on macOS, you can still install it for other systems.&lt;br /&gt;
&lt;br /&gt;
====util_linux.zip==== &lt;br /&gt;
:'''util_linux.zip''' contents:&lt;br /&gt;
:* '''!english/texts_linux.txt''' - support file for the eXoDOS Updater&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.bsh''' - language pack support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.msh''' - language pack support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/install.bsh''' - language pack support file for Linux game installer (called by bsh script in game directory)&lt;br /&gt;
:*'''!languagepacks/install.msh''' - language pack support file for macOS game installer (called by msh script in game directory)&lt;br /&gt;
:*'''!languagepacks/ip.bsh''' - language pack support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/ip.msh''' - language pack support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/launch.bsh''' - language pack support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''!languagepacks/launch.msh''' - language pack support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''Sumatra/CallSumatra.bsh''' - Linux support file for CallSumatra.command&lt;br /&gt;
:*'''Sumatra/CallSumatra.command''' - exogui calls this to launch Sumatra for magazine articles in Linux&lt;br /&gt;
:*'''AltLauncher.bsh''' - support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''AltLauncher.msh''' - support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''EXTDOS_linux.zip''' - contains Linux flatpaks, update files, AppImages, and emulator support files (bak, bsh, command, conf, txt) &lt;br /&gt;
:*'''alt_dosbox_linux.txt''' - defines the command to launch DOSBox for the alternate launcher (&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;must be DOSBox Staging to not break conf files)&lt;br /&gt;
:*'''alt_launch_linux.txt''' - defines the directory containing the DOSBox Staging resource folder used by eXoDOS for the alternate launcher&lt;br /&gt;
:*'''converter.bash''' - support file for regenerate.bash that converts bat files to bash files using a long series of substitution commands&lt;br /&gt;
:*'''dosbox_linux.txt''' - defines what version of DOSBox is used by each game in Linux&lt;br /&gt;
:*'''eXoLBpm_linux.py''' - The LaunchBox Parents.xml merging tool for Linux&lt;br /&gt;
:*'''eXoLPLBXMLedit_linux.py''' - The eXoDOS Language Pack LaunchBox XML edit tool for Linux&lt;br /&gt;
:*'''eXoLPPPM_linux.py''' - The eXoDOS Language Pack Playlist Parents Merger tool for Linux&lt;br /&gt;
:* '''exodos.png''' - png file that can be used as a custom icon in Steam&lt;br /&gt;
:*'''exodosvi_cover.jpg''' - Box art image that can be used as a custom background in Steam&lt;br /&gt;
:*'''install.bsh''' - support file for Linux game install scripts (gets called by the install.bsh script in the game directory)&lt;br /&gt;
:*'''install.msh''' - support file for macOS game install scripts (gets called by the install.msh script in the game directory)&lt;br /&gt;
:*'''ip.bsh''' - support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''ip.msh''' - support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''launch.bsh''' - support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''launch.msh''' - support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''regenerate.bash''' - location sensitive development script used to convert unzipped files from eXo collections to Linux and macOS&lt;br /&gt;
:*'''version.bsh''' - Linux support file for version.command&lt;br /&gt;
:*'''version.command''' - This tells the currently installed version of eXoDOS&lt;br /&gt;
:*'''version.msh''' - macOS support file for version.command&lt;br /&gt;
'''Content/DOS_linux_Magazines.zip''' - Linux supplement for the Media Pack - This contains Linux DOSBox configuration, launcher, and cue files related to magazines and disk magazines (bat, bsh, command, conf, cue).&lt;br /&gt;
&lt;br /&gt;
====Development Scripts====&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/converter.bash====&lt;br /&gt;
: The '''converter.bash''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.bash''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
:To prevent direct execution, the '''converter.bash''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.bash''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.bash''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
:Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.bash&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.bsh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.bsh&lt;br /&gt;
for currentScript in filesToConvert/*.bsh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.bash''' script is called by the '''regenerate.bash''' script. Details about those scripts will be described later in this document. These scripts are intended for development purposes, and changes periodically have to be made to them to handle any conversions that do not succeed. This could involve anything from fixing case inconsistencies to parsing batch code that was written in an unforeseen way.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function=====&lt;br /&gt;
&lt;br /&gt;
:The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed, ed, and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new substitution commands close to the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered, but not yet in a final state. If any existing text manipulation commands are changed or new ones added, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.bash''' script.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/regenerate.bash====&lt;br /&gt;
&lt;br /&gt;
:The purpose of the '''regenerate.bash''' script is to assist in the development of future Linux and macOS patches by automating the conversion of config files and Windows batch files to their Linux and macOS equivalents. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.bash''' script as well as the '''converter.bash''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging. Version 6 added much more complexity to eXoDOS than had ever previously existed. As a result, from version 5 to version 6, these files grew over 5 and a half times in size and complexity. As time goes on, new challenges are likely to be faced for maintaining these scripts.&lt;br /&gt;
&lt;br /&gt;
:The '''regenerate.bash''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, and converts all of the unzipped bat, conf, and other known support files. As case inconsistencies are found, substitutions to correct the inconsistencies are manually placed into the regenerate.bash script.&lt;br /&gt;
&lt;br /&gt;
:Most text manipulation for the above steps is done through sed commands, although there are a few situations where ed and Perl are used instead.&lt;br /&gt;
&lt;br /&gt;
:In short, when executing the '''regenerate.bash''' script, it goes through the following steps:&lt;br /&gt;
:#Gives a disclaimer that running the script will take a VERY long time&lt;br /&gt;
:#Checks that standard eXo files are located in their expected locations in relation to the script&lt;br /&gt;
:#Fixes zip archive references&lt;br /&gt;
:#Fixes batch file reference inconsistencies&lt;br /&gt;
:#Copies bat files to newly created bsh files&lt;br /&gt;
:#Prepares bsh files for conversion&lt;br /&gt;
:#Converts syntax for the Linux shell files (bsh) from Windows batch to bash&lt;br /&gt;
:#Removes unnecessary dependency checks for eXoDREAMM and eXoScummVM&lt;br /&gt;
:#Creates universal launch files for Linux and macOS (command files)&lt;br /&gt;
:#Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:#Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:#Creates DOSBox configuration files for Linux&lt;br /&gt;
:#Makes necessary changes to Linux configuration files&lt;br /&gt;
:#Applies Linux-only backend fixes&lt;br /&gt;
:#Applies Linux-only game specific fixes&lt;br /&gt;
:#Converts shell script reference txt files&lt;br /&gt;
:#Prepares macOS shell files (this step is currently skipped for eXoDOS, eXoScummVM, and eXoWin3x)&lt;br /&gt;
:#Corrects xml inconsistencies with known solutions&lt;br /&gt;
:#Removes unnecessary files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the case inconsistency fixes and game specific changes are manually added to the '''regenerate.bash''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
===Linux Flatpaks===&lt;br /&gt;
&lt;br /&gt;
:The following flatpaks use org.freedesktop.Platform 23.08:&lt;br /&gt;
:* com.retro_exo.wine&lt;br /&gt;
:* com.retro_exo.mpv&lt;br /&gt;
:* com.retro_exo.dosbox-074r3-1&lt;br /&gt;
:* com.retro_exo.dosbox-gridc-4-3-1&lt;br /&gt;
:* com.retro_exo.dosbox-ece-r4301&lt;br /&gt;
:* com.retro_exo.dosbox-ece-r4358&lt;br /&gt;
:* com.retro_exo.dosbox-ece-r4482&lt;br /&gt;
:The following flatpaks use&lt;br /&gt;
===Linux Update and Patch Files===&lt;br /&gt;
&lt;br /&gt;
:The Update directory is extracted from '''EXTDOS_linux.zip''' to the '''eXo/Update''' location. It contains the scripts to run the eXoDOS updater as well as subdirectories for updates and patch files. The '''eXo/Update''' directory may initially look something like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── changelog.txt&lt;br /&gt;
├── cleanup.bat&lt;br /&gt;
├── cleanup.bsh&lt;br /&gt;
├── cleanup.command&lt;br /&gt;
├── !dos&lt;br /&gt;
│   └── linux&lt;br /&gt;
│       └── release&lt;br /&gt;
│           ├── Battle Isle 2 (1993).zip&lt;br /&gt;
│           ├── Breach 2 (1990).zip&lt;br /&gt;
│           ├── Carmageddon Max Pack (1998).zip&lt;br /&gt;
│           ├── Command and Conquer (1995).zip&lt;br /&gt;
│           ├── Command and Conquer - Red Alert (1996).zip&lt;br /&gt;
│           ├── Complete Great Naval Battles, The - The Final Fury (1996).zip&lt;br /&gt;
│           ├── DOOM - eXoWAD (2021).zip&lt;br /&gt;
│           ├── Grand Theft Auto (1997).zip&lt;br /&gt;
│           ├── Hard Nova (1990).zip&lt;br /&gt;
│           ├── Heroes of Might and Magic II (Deluxe Edition) (1998).zip&lt;br /&gt;
│           ├── Jane's Combat Simulations Advanced Tactical Fighters (1996).zip&lt;br /&gt;
│           ├── Last Half of Darkness (1989).zip&lt;br /&gt;
│           ├── Lemmings (1991).zip&lt;br /&gt;
│           ├── Lemmings 3 - All New World of Lemmings (1994).zip&lt;br /&gt;
│           ├── Leo the Lion (1997).zip&lt;br /&gt;
│           ├── Living Ball (1995).zip&lt;br /&gt;
│           ├── Mean 18 (1986).zip&lt;br /&gt;
│           ├── MechWarrior 2 (Limited Edition) (1996).zip&lt;br /&gt;
│           ├── NFL Challenge (1985).zip&lt;br /&gt;
│           ├── Normality (1996).zip&lt;br /&gt;
│           ├── Picture Perfect Golf (1995).zip&lt;br /&gt;
│           ├── Prisoner of Ice (1995).zip&lt;br /&gt;
│           ├── Realms of Arkania - Blade of Destiny (1992).zip&lt;br /&gt;
│           ├── Resurrection - Rise 2 (1996).zip&lt;br /&gt;
│           ├── Sigil (2019).zip&lt;br /&gt;
│           ├── Sigil II (2023).zip&lt;br /&gt;
│           ├── Star Trek - Judgement Rites CD (1993).zip&lt;br /&gt;
│           ├── Time Gate - Knight's Chase (1995).zip&lt;br /&gt;
│           ├── Ultima VI - The False Prophet (1990).zip&lt;br /&gt;
│           ├── Ultima V - Warriors of Destiny (1988).zip&lt;br /&gt;
│           └── Zone of Artificial Resources (1997).zip&lt;br /&gt;
├── index.txt&lt;br /&gt;
├── restore.exe&lt;br /&gt;
├── restore.py&lt;br /&gt;
├── update.bat&lt;br /&gt;
├── update.bsh&lt;br /&gt;
├── update.command&lt;br /&gt;
├── update_installed.bat&lt;br /&gt;
├── update_installed.bsh&lt;br /&gt;
├── update_installed.command&lt;br /&gt;
├── update.txt&lt;br /&gt;
├── update_xml.bat&lt;br /&gt;
├── update_xml.bsh&lt;br /&gt;
├── update_xml.command&lt;br /&gt;
└── ver&lt;br /&gt;
    └── ver.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Executing the '''update.command''' script will run an update for eXoDOS. This normally will be done in exogui from the eXoDOS game entry. Both the Windows version of eXoDOS and the Linux patch download the same updates. Updates work identically regardless of the operating system.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos''' directory are for non-OS specific game file updates.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos/linux/release''' directory are Linux specific patch files that are bundled with the eXoDOS Linux patch when you download it.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos/linux''' directory are Linux specific update files that are downloaded as part of an eXoDOS update.&lt;br /&gt;
:All files extracted from Linux specific archives have unique filenames to differentiate them from files that should only be used in Windows.&lt;br /&gt;
:Files are extracted from these directories in the following order:&lt;br /&gt;
:# eXo/Update/!dos&lt;br /&gt;
:# eXo/Update/!dos/linux/release&lt;br /&gt;
:# eXo/Update/!dos/linux&lt;br /&gt;
&lt;br /&gt;
===Preparing For Manual Conversion===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
===Packaging Files For Release===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=654</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=654"/>
		<updated>2024-09-12T23:00:14Z</updated>

		<summary type="html">&lt;p&gt;Parricc: /* Overview */ Add overview references to the lite version, media pack, and GLP.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is a complete conversion to make all features of eXoDOS work on Linux systems just as they would in Windows, including both the lite and full versions. An official Linux frontend, called exogui, is included as part of this conversion. Additionally, the patch is written to ensure that the collection works as expected in dual-boot environments. After the Linux patch is installed, if eXoDOS is updated or games are installed, this will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
As it is encouraged to seed the collection, installing the Linux patch will not alter any torrent files. The patch does not change the existing eXoDOS framework, but instead supplements it.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest eXoDOS Linux Patch is for version 6.4.&lt;br /&gt;
&lt;br /&gt;
An add-on zip is also available as a separate download to add Linux support to the Media Pack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;Note: The German Language Pack has not yet been converted*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Supported distributions include:&lt;br /&gt;
*Arch / Manjaro Linux / SteamOS&lt;br /&gt;
*Fedora&lt;br /&gt;
*Ubuntu (and Ubuntu-based distributions) / Debian&lt;br /&gt;
*Nearly any x86_64 distro that has flatpak support&lt;br /&gt;
Unsupported:&lt;br /&gt;
&lt;br /&gt;
*ARM, IBM Power, and RISC-V computers and devices are '''not''' supported at this time. This includes the Raspberry Pi. We need someone to volunteer to build ARM versions of the flatpaks for support to be added.&lt;br /&gt;
* macOS and BSD are also unsupported at this time. Until we have a volunteer to add macOS support to the frontend, this is unlikely to change. Backend support exists for the eXoDREAMM project, and the backend for eXoDOS has been partially converted in case we get a volunteer.&lt;br /&gt;
&lt;br /&gt;
===Installation Process===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive====&lt;br /&gt;
&lt;br /&gt;
:First, the '''eXoDOS 6.4 Linux Patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
:Copy the '''eXoDOS 6.4 Linux Patch.zip''' file to the root directory of your freshly downloaded eXoDOS 6.4 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located)&lt;br /&gt;
:Then, in your file manager, right click on the '''eXoDOS 6.4 Linux Patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
:Alternatively, you may open the zip with a utility such as Ark, and drag the files and folders into the root eXoDOS directory.&lt;br /&gt;
:The important thing is to ensure the files are extracted into the root directory of the collection, and not into a newly created subdirectory.&lt;br /&gt;
:If you have also downloaded the eXoDOS Media Pack, ensure it has been downloaded the the same directory as the base eXoDOS collection. Then, download and place the &amp;quot;''DOS_linux_Magazines.zip''&amp;quot; file in the Content directory. Do not unzip this file.&lt;br /&gt;
:After this has been done, proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
====Step 2 - Installing System Dependencies==== &lt;br /&gt;
&lt;br /&gt;
:The next step is to install the software needed to run the collection. The '''install_dependencies.command''' script will run you through a guided setup to do this.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; If you are using Thunar or XFCE, you will first need to enable running shell files as executables. To do this, open a terminal and run the following command:   &amp;lt;code&amp;gt;xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set true&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;In your file manager, double-click on '''install_dependencies.command''' to start the dependency installer. If you are asked whether you want to execute the file, click yes.&lt;br /&gt;
:If you are using Nautilus or Gnome and are not given this option to run by double-clicking, right click the file and select Run as Program.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; This step will need to be done on any Linux computer that has not previously ran eXoDOS 6, even if the full setup has already been completed on a portable drive. Also note that the flatpaks are installed at a user level. As such, other users will need to run the dependency installer separately as well. If you update your video drivers, you may also need to follow that up with a flatpak update. Rerunning a dependency installer installation will handle that for you.&amp;lt;/blockquote&amp;gt;Upon running the dependency installer, you will be prompted with a guided setup that gives the following options:  &amp;lt;br /&amp;gt;The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.  To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instruction.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[P]roceed with installation&lt;br /&gt;
[D]ownload the latest setup&lt;br /&gt;
[R]emove all installed eXo packages&lt;br /&gt;
[A]bort installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:The &amp;quot;''[D]ownload the latest setup''&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version. To proceed with installing the dependencies, choose &amp;quot;''[P]roceed with installation''&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
:In your file manager, double-click on the '''eXoDOS Setup.command''' file to start the setup, and then follow the on-screen instructions. If you are asked whether you want to execute the file, click yes. If you are using Nautilus or Gnome and are not given this option, right click the file and select Run as Program.&lt;br /&gt;
:&lt;br /&gt;
:The setup file will check for required files and warn you if any are missing. It will also check for files from the Media Pack Add-On.&lt;br /&gt;
&lt;br /&gt;
:This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers.&lt;br /&gt;
&lt;br /&gt;
:It is important to run the setup and not extract any files manually. Not only are the files location sensitive, but the setup makes some changes to them.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
:You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off.&lt;br /&gt;
&lt;br /&gt;
:Once it is complete, run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. However, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to run the '''eXoDOS Updater''' to update the shortcut to point to the new location. The '''eXoDOS Updater''' will allow you to reconfigure all of the installation options instead of running through the entire setup process again.&lt;br /&gt;
&lt;br /&gt;
===Using eXoDOS===&lt;br /&gt;
&lt;br /&gt;
====exogui====&lt;br /&gt;
&lt;br /&gt;
:The official Linux frontend is exogui, a fork of Flashpoint Launcher. A member of our Discord, jelcynek, created exogui and has continued to maintain it over the years. More recently, Colin, the main Flashpoint Launcher developer, has also contributed to exogui. Together, they have made a very solid frontend. We are still looking for more volunteers to improve the UI experience, especially on the Steam Deck.&lt;br /&gt;
:Simply double-click on the '''eXoDOS''' desktop icon, or execute the '''exogui.command''' file to launch the frontend. You will be presented with a list of all included games.&lt;br /&gt;
&lt;br /&gt;
:The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
:The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
:Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
:If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will be given an option to keep your saved games. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler.&lt;br /&gt;
:&lt;br /&gt;
:To launch a game or its setup from exogui, click on the game to select it, and then click on the 'Install', 'Play', or 'Setup' button in the right-hand pane.&lt;br /&gt;
&lt;br /&gt;
====Creating Desktop Shortcuts==== &lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a specific game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes to the Exec, Icon, and Name lines as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Version=1.0&lt;br /&gt;
Type=Application&lt;br /&gt;
Terminal=false&lt;br /&gt;
Exec=&amp;quot;/home/username/eXoDOS/eXo/eXoDOS/!dos/mi1/Secret of Monkey Island, The (1990).command&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/Some Monkey Island Icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changelog===&lt;br /&gt;
&lt;br /&gt;
====Changes to the eXoDOS 6.04 Linux Patch====&lt;br /&gt;
&lt;br /&gt;
:*Launch scripts directly from any file-manager: Files ending in the *.command extension can be launched directly from any file manager.&lt;br /&gt;
:*Revamped dependency installer with update support: For many distributions, sudo access is no longer needed.&lt;br /&gt;
:*Improved compatibility: The eXoDOS Linux patch will now run on virtually any x86_64 distro with flatpak support, including the Steam Deck.&lt;br /&gt;
:*Improved frontend: The exogui frontend is now feature packed with full support for extras, filters, images, playlists, and videos.&lt;br /&gt;
:*Improved backend: The backend has been completely revamped to include all eXoDOS 6 features.&lt;br /&gt;
:*Bug Squash: Hundreds of previously broken games have been fixed after thorough testing&lt;br /&gt;
&lt;br /&gt;
===Files===&lt;br /&gt;
&lt;br /&gt;
====eXoDOS 6.4 Linux Patch.zip====&lt;br /&gt;
:'''eXoDOS 6.4 Linux Patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOS_linux_metadata.zip&lt;br /&gt;
│   └── XODOS_linux_Metadata.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       ├── eXoMerge.bsh&lt;br /&gt;
│       ├── install_dependencies.bsh&lt;br /&gt;
│       ├── Setup eXoDOS.bsh&lt;br /&gt;
│       └── utilDOS_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── eXoMerge.command&lt;br /&gt;
├── install_dependencies.command&lt;br /&gt;
└── Setup eXoDOS.command&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
:*'''Content/!DOS_linux_metadata.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (bsh, command, conf) for games.&lt;br /&gt;
:*'''Content/XODOS_linux_Metadata.zip''' - This contains the exogui files and some xml scripts.&lt;br /&gt;
:*'''eXo/util/eXoMerge.bsh''' - This is a support file for eXoMerge.command.&lt;br /&gt;
:*'''eXo/util/install_dependencies.bsh''' - This is a support file for install_dependencies.command.&lt;br /&gt;
:*'''eXo/util/Setup eXoDOS.bsh''' - This is a support file for Setup eXoDOS.command.&lt;br /&gt;
:*'''eXo/util/utilDOS_linux.zip''' - This contains the eXoDOS Linux backend files.&lt;br /&gt;
:*'''eXoMerge.command''' - This script is used to help merge two eXo collections that have already been instal&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''led.&lt;br /&gt;
:* '''install_dependencies.command''' - This launches the Linux/macOS setup to &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''install system dependencies needed for eXo collections.&lt;br /&gt;
:*'''Setup eXoDOS.command''' - This launches the Linux/macOS setup for eXoDOS. While you cannot currently run eXoDOS on macOS, you can still install it for other systems.&lt;br /&gt;
&lt;br /&gt;
====util_linux.zip==== &lt;br /&gt;
:'''util_linux.zip''' contents:&lt;br /&gt;
:* '''!english/texts_linux.txt''' - support file for the eXoDOS Updater&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.bsh''' - language pack support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.msh''' - language pack support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/install.bsh''' - language pack support file for Linux game installer (called by bsh script in game directory)&lt;br /&gt;
:*'''!languagepacks/install.msh''' - language pack support file for macOS game installer (called by msh script in game directory)&lt;br /&gt;
:*'''!languagepacks/ip.bsh''' - language pack support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/ip.msh''' - language pack support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/launch.bsh''' - language pack support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''!languagepacks/launch.msh''' - language pack support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''Sumatra/CallSumatra.bsh''' - Linux support file for CallSumatra.command&lt;br /&gt;
:*'''Sumatra/CallSumatra.command''' - exogui calls this to launch Sumatra for magazine articles in Linux&lt;br /&gt;
:*'''AltLauncher.bsh''' - support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''AltLauncher.msh''' - support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''EXTDOS_linux.zip''' - contains Linux flatpaks, update files, AppImages, and emulator support files (bak, bsh, command, conf, txt) &lt;br /&gt;
:*'''alt_dosbox_linux.txt''' - defines the command to launch DOSBox for the alternate launcher (&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;must be DOSBox Staging to not break conf files)&lt;br /&gt;
:*'''alt_launch_linux.txt''' - defines the directory containing the DOSBox Staging resource folder used by eXoDOS for the alternate launcher&lt;br /&gt;
:*'''converter.bash''' - support file for regenerate.bash that converts bat files to bash files using a long series of substitution commands&lt;br /&gt;
:*'''dosbox_linux.txt''' - defines what version of DOSBox is used by each game in Linux&lt;br /&gt;
:*'''eXoLBpm_linux.py''' - The LaunchBox Parents.xml merging tool for Linux&lt;br /&gt;
:*'''eXoLPLBXMLedit_linux.py''' - The eXoDOS Language Pack LaunchBox XML edit tool for Linux&lt;br /&gt;
:*'''eXoLPPPM_linux.py''' - The eXoDOS Language Pack Playlist Parents Merger tool for Linux&lt;br /&gt;
:* '''exodos.png''' - png file that can be used as a custom icon in Steam&lt;br /&gt;
:*'''exodosvi_cover.jpg''' - Box art image that can be used as a custom background in Steam&lt;br /&gt;
:*'''install.bsh''' - support file for Linux game install scripts (gets called by the install.bsh script in the game directory)&lt;br /&gt;
:*'''install.msh''' - support file for macOS game install scripts (gets called by the install.msh script in the game directory)&lt;br /&gt;
:*'''ip.bsh''' - support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''ip.msh''' - support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''launch.bsh''' - support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''launch.msh''' - support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''regenerate.bash''' - location sensitive development script used to convert unzipped files from eXo collections to Linux and macOS&lt;br /&gt;
:*'''version.bsh''' - Linux support file for version.command&lt;br /&gt;
:*'''version.command''' - This tells the currently installed version of eXoDOS&lt;br /&gt;
:*'''version.msh''' - macOS support file for version.command&lt;br /&gt;
'''Content/DOS_linux_Magazines.zip''' - Linux supplement for the Media Pack - This contains Linux DOSBox configuration, launcher, and cue files related to magazines and disk magazines (bat, bsh, command, conf, cue).&lt;br /&gt;
&lt;br /&gt;
====Development Scripts====&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/converter.bash====&lt;br /&gt;
: The '''converter.bash''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.bash''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
:To prevent direct execution, the '''converter.bash''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.bash''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.bash''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
:Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.bash&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.bsh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.bsh&lt;br /&gt;
for currentScript in filesToConvert/*.bsh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.bash''' script is called by the '''regenerate.bash''' script. Details about those scripts will be described later in this document. These scripts are intended for development purposes, and changes periodically have to be made to them to handle any conversions that do not succeed. This could involve anything from fixing case inconsistencies to parsing batch code that was written in an unforeseen way.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function=====&lt;br /&gt;
&lt;br /&gt;
:The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed, ed, and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new substitution commands close to the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered, but not yet in a final state. If any existing text manipulation commands are changed or new ones added, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.bash''' script.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/regenerate.bash====&lt;br /&gt;
&lt;br /&gt;
:The purpose of the '''regenerate.bash''' script is to assist in the development of future Linux and macOS patches by automating the conversion of config files and Windows batch files to their Linux and macOS equivalents. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.bash''' script as well as the '''converter.bash''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging. Version 6 added much more complexity to eXoDOS than had ever previously existed. As a result, from version 5 to version 6, these files grew over 5 and a half times in size and complexity. As time goes on, new challenges are likely to be faced for maintaining these scripts.&lt;br /&gt;
&lt;br /&gt;
:The '''regenerate.bash''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, and converts all of the unzipped bat, conf, and other known support files. As case inconsistencies are found, substitutions to correct the inconsistencies are manually placed into the regenerate.bash script.&lt;br /&gt;
&lt;br /&gt;
:Most text manipulation for the above steps is done through sed commands, although there are a few situations where ed and Perl are used instead.&lt;br /&gt;
&lt;br /&gt;
:In short, when executing the '''regenerate.bash''' script, it goes through the following steps:&lt;br /&gt;
:#Gives a disclaimer that running the script will take a VERY long time&lt;br /&gt;
:#Checks that standard eXo files are located in their expected locations in relation to the script&lt;br /&gt;
:#Fixes zip archive references&lt;br /&gt;
:#Fixes batch file reference inconsistencies&lt;br /&gt;
:#Copies bat files to newly created bsh files&lt;br /&gt;
:#Prepares bsh files for conversion&lt;br /&gt;
:#Converts syntax for the Linux shell files (bsh) from Windows batch to bash&lt;br /&gt;
:#Removes unnecessary dependency checks for eXoDREAMM and eXoScummVM&lt;br /&gt;
:#Creates universal launch files for Linux and macOS (command files)&lt;br /&gt;
:#Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:#Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:#Creates DOSBox configuration files for Linux&lt;br /&gt;
:#Makes necessary changes to Linux configuration files&lt;br /&gt;
:#Applies Linux-only backend fixes&lt;br /&gt;
:#Applies Linux-only game specific fixes&lt;br /&gt;
:#Converts shell script reference txt files&lt;br /&gt;
:#Prepares macOS shell files (this step is currently skipped for eXoDOS, eXoScummVM, and eXoWin3x)&lt;br /&gt;
:#Corrects xml inconsistencies with known solutions&lt;br /&gt;
:#Removes unnecessary files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the case inconsistency fixes and game specific changes are manually added to the '''regenerate.bash''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
===Linux Update and Patch Files===&lt;br /&gt;
&lt;br /&gt;
:The Update directory is extracted from '''EXTDOS_linux.zip''' to the '''eXo/Update''' location. It contains the scripts to run the eXoDOS updater as well as subdirectories for updates and patch files. The '''eXo/Update''' directory may initially look something like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── changelog.txt&lt;br /&gt;
├── cleanup.bat&lt;br /&gt;
├── cleanup.bsh&lt;br /&gt;
├── cleanup.command&lt;br /&gt;
├── !dos&lt;br /&gt;
│   └── linux&lt;br /&gt;
│       └── release&lt;br /&gt;
│           ├── Battle Isle 2 (1993).zip&lt;br /&gt;
│           ├── Breach 2 (1990).zip&lt;br /&gt;
│           ├── Carmageddon Max Pack (1998).zip&lt;br /&gt;
│           ├── Command and Conquer (1995).zip&lt;br /&gt;
│           ├── Command and Conquer - Red Alert (1996).zip&lt;br /&gt;
│           ├── Complete Great Naval Battles, The - The Final Fury (1996).zip&lt;br /&gt;
│           ├── DOOM - eXoWAD (2021).zip&lt;br /&gt;
│           ├── Grand Theft Auto (1997).zip&lt;br /&gt;
│           ├── Hard Nova (1990).zip&lt;br /&gt;
│           ├── Heroes of Might and Magic II (Deluxe Edition) (1998).zip&lt;br /&gt;
│           ├── Jane's Combat Simulations Advanced Tactical Fighters (1996).zip&lt;br /&gt;
│           ├── Last Half of Darkness (1989).zip&lt;br /&gt;
│           ├── Lemmings (1991).zip&lt;br /&gt;
│           ├── Lemmings 3 - All New World of Lemmings (1994).zip&lt;br /&gt;
│           ├── Leo the Lion (1997).zip&lt;br /&gt;
│           ├── Living Ball (1995).zip&lt;br /&gt;
│           ├── Mean 18 (1986).zip&lt;br /&gt;
│           ├── MechWarrior 2 (Limited Edition) (1996).zip&lt;br /&gt;
│           ├── NFL Challenge (1985).zip&lt;br /&gt;
│           ├── Normality (1996).zip&lt;br /&gt;
│           ├── Picture Perfect Golf (1995).zip&lt;br /&gt;
│           ├── Prisoner of Ice (1995).zip&lt;br /&gt;
│           ├── Realms of Arkania - Blade of Destiny (1992).zip&lt;br /&gt;
│           ├── Resurrection - Rise 2 (1996).zip&lt;br /&gt;
│           ├── Sigil (2019).zip&lt;br /&gt;
│           ├── Sigil II (2023).zip&lt;br /&gt;
│           ├── Star Trek - Judgement Rites CD (1993).zip&lt;br /&gt;
│           ├── Time Gate - Knight's Chase (1995).zip&lt;br /&gt;
│           ├── Ultima VI - The False Prophet (1990).zip&lt;br /&gt;
│           ├── Ultima V - Warriors of Destiny (1988).zip&lt;br /&gt;
│           └── Zone of Artificial Resources (1997).zip&lt;br /&gt;
├── index.txt&lt;br /&gt;
├── restore.exe&lt;br /&gt;
├── restore.py&lt;br /&gt;
├── update.bat&lt;br /&gt;
├── update.bsh&lt;br /&gt;
├── update.command&lt;br /&gt;
├── update_installed.bat&lt;br /&gt;
├── update_installed.bsh&lt;br /&gt;
├── update_installed.command&lt;br /&gt;
├── update.txt&lt;br /&gt;
├── update_xml.bat&lt;br /&gt;
├── update_xml.bsh&lt;br /&gt;
├── update_xml.command&lt;br /&gt;
└── ver&lt;br /&gt;
    └── ver.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Executing the '''update.command''' script will run an update for eXoDOS. This normally will be done in exogui from the eXoDOS game entry. Both the Windows version of eXoDOS and the Linux patch download the same updates. Updates work identically regardless of the operating system.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos''' directory are for non-OS specific game file updates.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos/linux/release''' directory are Linux specific patch files that are bundled with the eXoDOS Linux patch when you download it.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos/linux''' directory are Linux specific update files that are downloaded as part of an eXoDOS update.&lt;br /&gt;
:All files extracted from Linux specific archives have unique filenames to differentiate them from files that should only be used in Windows.&lt;br /&gt;
:Files are extracted from these directories in the following order:&lt;br /&gt;
:# eXo/Update/!dos&lt;br /&gt;
:# eXo/Update/!dos/linux/release&lt;br /&gt;
:# eXo/Update/!dos/linux&lt;br /&gt;
&lt;br /&gt;
===Preparing For Manual Conversion===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
===Packaging Files For Release===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Main_Page&amp;diff=653</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Main_Page&amp;diff=653"/>
		<updated>2024-09-12T01:58:43Z</updated>

		<summary type="html">&lt;p&gt;Parricc: Added section for Linux patch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= &amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[File:RetroeXo Logo.png]]&amp;lt;br&amp;gt;'''Retro eXo'''&amp;lt;/div&amp;gt; =&lt;br /&gt;
&amp;lt;strong&amp;gt;Project Goal&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The eXo projects' goal is preservation through playability.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Project Resources&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''[http://www.retro-exo.com www.retro-exo.com]''': Project Homepage.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[https://www.youtube.com/c/eXoRetro YouTube Channel]''': Various videos about the project and how to use it.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[https://discord.gg/37FYaUZ Discord]''': Project discussion, chat, &amp;amp; community.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[https://github.com/exoscoriae/ Github]''': Bugs, submissions, and enhancements are tracked here.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
=== Current ===&lt;br /&gt;
==== [[EXODOS]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoDOS v5&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: October 31st, 2020&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 7,200&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: eXoDOS v6, ETA 2023&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== [[EXOWin3x]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoWin3x v2&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: February 14th, 2021&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 1,138&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: eXoWin3x v3, ETA 2024&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== [[EXOScummVM]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXoScummVM r2.2.0&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: June 20th, 2021&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 387 unique titles, multiple variations of each&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: TBD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== [[EXORLP]] ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: eXo's Retro Learning Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: April 1st, 2020&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: 667 titles, compiled from eXoDOS and eXoWin3x&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: None. RLP Was a one time release. Upon merging eXoDOS and eXoWin3x however, a playlist appears that allows you to select all games that were originally included in the RLP&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Future ===&lt;br /&gt;
==== EXOWin9x ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: None&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: ?&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: ?&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: ETA Unknown. Depends on progress in emulation&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== Secret ====&lt;br /&gt;
&amp;lt;small&amp;gt;Current Version: None&amp;lt;br&amp;gt;&lt;br /&gt;
Release Date: ?&amp;lt;br&amp;gt;&lt;br /&gt;
Number of Games: ?&amp;lt;br&amp;gt;&lt;br /&gt;
Upcoming Version: ETA 2022&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The eXo projects originated from wanting to sit down and play MS-DOS games without spending hours trying to get them running. Games such as DiscWorld were notoriously difficult and had a fair number of forum posts and websites dedicated to attempts to get them running. However websites centered on the topic of DOSBox, the primary MS-DOS emulator, were generally less than welcoming. eXo's original goal was to get his collection of MS-DOS Adventure games setup in a front end and easily accessible. Posts regarding this project began to appear on Underground Gamer &amp;amp; Pleasuredome in 2007, eventually leading to the release of eXoDOS Vol. I: Adventure in early 2008. This first release had around 650 titles in it, with plans to continue on to a second volume dedicated to role-playing games after excitement was expressed by fellow members on Underground Gamer. It was during this time that eXo became concerned that the nature of DOS emulation was leading towards a scenario in which the number of people who had the technical knowledge to set games up on their own was dwindling. Meanwhile, only a handful of highly popular commercial games for the era were available on any store front. eXo decided to continue tackling volumes of games with the impossible goal of preserving all MS-DOS games. Fundamental changes to the structure of the project were made leading to the release of eXoDOS Version 2. Vol. I-II were re-released along with eXoDOS Vol. III: Strategy (2009). Some of these primary changes included moving the games conf files out of their archive and into the same folder as the launcher. This allowed the conf file to be modified without the need to repack the entire game. eXoDOS Vol. IV: Sim\Sports\Racing\Educational (2011) and eXoDOS Vol. V: Action (2012) were released using the same structure. Releases were originally split into volumes due to bandwidth and storage concerns, however it also helped to focus work on specific packs.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the first 2 versions of eXoDOS was primarily manual. Games were originally identified by hand typing metadata from [https://www.mobygames.com/ MobyGames] into a database. Each game's launcher, conf file, and install file was copied from a base template and then modified to fit that game, with information like folder names, game name, and other variables hard coded. Soon after the release of eXoDOS Version 2, eXo began to work on a Windows 3x project. This was a very slow process due to the rocky documentation and emulation of Windows 3x. Several improvements were made to the structure of the project during this time however, leading the the release of eXoDOS Version 3. The Windows 3x project was dubbed Win3xO, and released in 2015 with just over 1,000 games in it. eXoDOS versions 1-3 and Win3xO were powered by the [https://sites.google.com/site/meagrefrontend/ MEAGRE] front end, which was also originally posted as a member project on the UG forums.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The release of Win3xO led to serious burnout, which resulted in a year long break in the project that coincided with the abrupt deletion of Underground Gamer's website, tracker, and forums. Eventually eXo began work on locating new games for the DOS project while addressing bug fixes within the Windows 3x project. Work continued alone during this time, however with the downfall of UG, discussion at this point was primarily limited to occasional posts on the Pleasuredome forums. During this time the author of MEAGRE, Donarumo, decided to cease development on the front end. He moved his personal collections over to [https://www.launchbox-app.com/ LaunchBox] and encouraged eXo to consider it for his projects as well. After a positive discussion with the author of LaunchBox, permission was granted to include it with the forthcoming eXoDOS Version 4 release. Changing to a new front end was a massive task however, as it meant that all metadata (release information, manuals, game images, etc...) had to be imported on a game by game basis. This time was used to begin scrubbing the project of all images that had watermarks, and replacing them with original screen shots and clean box scans.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In response to the decline of participation of forums, a [https://discord.com/ Discord] server was started for the project on June 7th, 2018. The community quickly grew with various people who had been following the project for years. The ability to communicate in real time allowed others to find ways to contribute, which quickly led to the formation of the &amp;quot;eXoSquad&amp;quot;. This led to a flood of improvements for eXoDOS Version 4, with one of the primary new features being the ability to select advanced sound card options. Since then, a steady flow of new features and improved modules have been created for each upcoming release.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In March of 2020, in response the quarantine protocols and school closings, the RLP (Retro Learning Pack) was released. This pack of 667 games from the MS-DOS and Windows 3.x era was designed to give parents of children stuck at home a way to entertain and educate their children during lockdown. [https://kotaku.com/loads-of-awesome-old-pc-games-will-keep-your-damn-kids-1842632937 Coverage] of the pack extended into the media on sites like [https://kotaku.com/ Kotaku].&lt;br /&gt;
&lt;br /&gt;
== Media ==&lt;br /&gt;
The project and/or creator have been featured in the following articles:&lt;br /&gt;
&lt;br /&gt;
[https://blog.archive.org/2019/10/13/2500-more-ms-dos-games-playable-at-the-archive/ ''2,500 More MS-DOS Games Playable at the Archive.'' Scott, J. (2019, Oct. 13). Internet Archive Blog]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://kotaku.com/one-mans-quest-to-collect-every-classic-pc-game-in-exis-1839432488 ''One Man's Quest To Collect Every Classic PC Game In Existence.'' Plunkett, L. (2019, Dec. 16). Kotaku.]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://kotaku.com/loads-of-awesome-old-pc-games-will-keep-your-damn-kids-1842632937 ''Loads Of Awesome Old PC Games Will Keep Your Damn Kids Busy'' Plunkett, L. (2020, Apr. 4). Kotaku]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Technical Information ==&lt;br /&gt;
=== Emulated Hardware ===&lt;br /&gt;
[[3Dfx]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Sound Cards]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Video Modes]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Remote Multiplayer]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common Core Systems ===&lt;br /&gt;
[[Project Setup]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Installer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Launcher]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[DOSBox Configuration File]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Updater]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Downloader]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[EXO Plugin]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Emulators ====&lt;br /&gt;
[[DOSBox]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.scummvm.org/index.php?title=Main_Page ScummVM]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Unique Modules ===&lt;br /&gt;
[[Gold Box Companion]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[All-Seeing Eye]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ultimapper 5]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metadata ===&lt;br /&gt;
[[Images]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[LaunchBox Platform XML]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Interactive Code Wheels]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Manuals]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Magazines]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Music]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Playlists]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Save Game Transfer]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Video Snaps]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
[[Master Database]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game Specific Projects ==&lt;br /&gt;
DOOM - [[EXOWAD]]&amp;lt;br&amp;gt;&lt;br /&gt;
ZZT - [[EXOZZT]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Unlimited Adventures]]&lt;br /&gt;
&lt;br /&gt;
== Language Packs ==&lt;br /&gt;
&lt;br /&gt;
[[The Language Pack Concept]]&lt;br /&gt;
&lt;br /&gt;
==== In Progress: ====&lt;br /&gt;
[[French Language Pack]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[German Language Pack]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== On Hold: ====&lt;br /&gt;
Polish Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== In need of a curator ====&lt;br /&gt;
Chinese Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Italian Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Korean Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Russian Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
Spanish Language Pack&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;If you have any interest in assisting with these language packs (or working on an unlisted language pack), please join our [https://discord.gg/37FYaUZ Discord] server.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Patch ==&lt;br /&gt;
[[Linux Patch|eXoDOS 6.4 Linux Patch]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
For a list of frequently asked questions, please visit the [https://www.retro-exo.com/FAQ.html website FAQ].&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
If you would like to contribute, please contact [[User:EXO|EXO]] for registration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Getting started ==&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ MediaWiki release mailing list] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki] --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=652</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=652"/>
		<updated>2024-09-12T01:29:42Z</updated>

		<summary type="html">&lt;p&gt;Parricc: Finished updating document for eXoDOS 6.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is a complete conversion to make all features of eXoDOS work on Linux systems just as they would in Windows. An official Linux frontend, called exogui, is included as part of this conversion. Additionally, the patch is written to ensure that the collection works as expected in dual-boot environments. After the Linux patch is installed, if eXoDOS is updated or games are installed, this will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
As it is encouraged to seed the collection, installing the Linux patch will not alter any torrent files. The patch does not change the existing eXoDOS framework, but instead supplements it.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest eXoDOS Linux Patch is for version 6.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Supported distributions include:&lt;br /&gt;
*Arch / Manjaro Linux / SteamOS&lt;br /&gt;
*Fedora&lt;br /&gt;
*Ubuntu (and Ubuntu-based distributions) / Debian&lt;br /&gt;
*Nearly any x86_64 distro that has flatpak support&lt;br /&gt;
Unsupported:&lt;br /&gt;
&lt;br /&gt;
*ARM, IBM Power, and RISC-V computers and devices are '''not''' supported at this time. This includes the Raspberry Pi. We need someone to volunteer to build ARM versions of the flatpaks for support to be added.&lt;br /&gt;
* macOS and BSD are also unsupported at this time. Until we have a volunteer to add macOS support to the frontend, this is unlikely to change. Backend support exists for the eXoDREAMM project, and the backend for eXoDOS has been partially converted in case we get a volunteer.&lt;br /&gt;
&lt;br /&gt;
===Installation Process===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive====&lt;br /&gt;
&lt;br /&gt;
:First, the '''eXoDOS 6.4 Linux Patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
:Copy the '''eXoDOS 6.4 Linux Patch.zip''' file to the root directory of your freshly downloaded eXoDOS 6.4 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located)&lt;br /&gt;
:Then, in your file manager, right click on the '''eXoDOS 6.4 Linux Patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
:Alternatively, you may open the zip with a utility such as Ark, and drag the files and folders into the root eXoDOS directory.&lt;br /&gt;
:The important thing is to ensure the files are extracted into the root directory of the collection, and not into a newly created subdirectory.&lt;br /&gt;
:If you have also downloaded the eXoDOS Media Pack, ensure it has been downloaded the the same directory as the base eXoDOS collection. Then, download and place the &amp;quot;''DOS_linux_Magazines.zip''&amp;quot; file in the Content directory. Do not unzip this file.&lt;br /&gt;
:After this has been done, proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
====Step 2 - Installing System Dependencies==== &lt;br /&gt;
&lt;br /&gt;
:The next step is to install the software needed to run the collection. The '''install_dependencies.command''' script will run you through a guided setup to do this.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; If you are using Thunar or XFCE, you will first need to enable running shell files as executables. To do this, open a terminal and run the following command:   &amp;lt;code&amp;gt;xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set true&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;In your file manager, double-click on '''install_dependencies.command''' to start the dependency installer. If you are asked whether you want to execute the file, click yes.&lt;br /&gt;
:If you are using Nautilus or Gnome and are not given this option to run by double-clicking, right click the file and select Run as Program.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; This step will need to be done on any Linux computer that has not previously ran eXoDOS 6, even if the full setup has already been completed on a portable drive. Also note that the flatpaks are installed at a user level. As such, other users will need to run the dependency installer separately as well. If you update your video drivers, you may also need to follow that up with a flatpak update. Rerunning a dependency installer installation will handle that for you.&amp;lt;/blockquote&amp;gt;Upon running the dependency installer, you will be prompted with a guided setup that gives the following options:  &amp;lt;br /&amp;gt;The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.  To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instruction.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[P]roceed with installation&lt;br /&gt;
[D]ownload the latest setup&lt;br /&gt;
[R]emove all installed eXo packages&lt;br /&gt;
[A]bort installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:The &amp;quot;''[D]ownload the latest setup''&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version. To proceed with installing the dependencies, choose &amp;quot;''[P]roceed with installation''&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
:In your file manager, double-click on the '''eXoDOS Setup.command''' file to start the setup, and then follow the on-screen instructions. If you are asked whether you want to execute the file, click yes. If you are using Nautilus or Gnome and are not given this option, right click the file and select Run as Program.&lt;br /&gt;
:&lt;br /&gt;
:The setup file will check for required files and warn you if any are missing. It will also check for files from the Media Pack Add-On.&lt;br /&gt;
&lt;br /&gt;
:This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers.&lt;br /&gt;
&lt;br /&gt;
:It is important to run the setup and not extract any files manually. Not only are the files location sensitive, but the setup makes some changes to them.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
:You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off.&lt;br /&gt;
&lt;br /&gt;
:Once it is complete, run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. However, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to run the '''eXoDOS Updater''' to update the shortcut to point to the new location. The '''eXoDOS Updater''' will allow you to reconfigure all of the installation options instead of running through the entire setup process again.&lt;br /&gt;
&lt;br /&gt;
===Using eXoDOS===&lt;br /&gt;
&lt;br /&gt;
====exogui====&lt;br /&gt;
&lt;br /&gt;
:The official Linux frontend is exogui, a fork of Flashpoint Launcher. A member of our Discord, jelcynek, created exogui and has continued to maintain it over the years. More recently, Colin, the main Flashpoint Launcher developer, has also contributed to exogui. Together, they have made a very solid frontend. We are still looking for more volunteers to improve the UI experience, especially on the Steam Deck.&lt;br /&gt;
:Simply double-click on the '''eXoDOS''' desktop icon, or execute the '''exogui.command''' file to launch the frontend. You will be presented with a list of all included games.&lt;br /&gt;
&lt;br /&gt;
:The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
:The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
:Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
:If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will be given an option to keep your saved games. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler.&lt;br /&gt;
:&lt;br /&gt;
:To launch a game or its setup from exogui, click on the game to select it, and then click on the 'Install', 'Play', or 'Setup' button in the right-hand pane.&lt;br /&gt;
&lt;br /&gt;
====Creating Desktop Shortcuts==== &lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a specific game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes to the Exec, Icon, and Name lines as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Version=1.0&lt;br /&gt;
Type=Application&lt;br /&gt;
Terminal=false&lt;br /&gt;
Exec=&amp;quot;/home/username/eXoDOS/eXo/eXoDOS/!dos/mi1/Secret of Monkey Island, The (1990).command&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/Some Monkey Island Icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changelog===&lt;br /&gt;
&lt;br /&gt;
====Changes to the eXoDOS 6.04 Linux Patch====&lt;br /&gt;
&lt;br /&gt;
:*Launch scripts directly from any file-manager: Files ending in the *.command extension can be launched directly from any file manager.&lt;br /&gt;
:*Revamped dependency installer with update support: For many distributions, sudo access is no longer needed.&lt;br /&gt;
:*Improved compatibility: The eXoDOS Linux patch will now run on virtually any x86_64 distro with flatpak support, including the Steam Deck.&lt;br /&gt;
:*Improved frontend: The exogui frontend is now feature packed with full support for extras, filters, images, playlists, and videos.&lt;br /&gt;
:*Improved backend: The backend has been completely revamped to include all eXoDOS 6 features.&lt;br /&gt;
:*Bug Squash: Hundreds of previously broken games have been fixed after thorough testing&lt;br /&gt;
&lt;br /&gt;
===Files===&lt;br /&gt;
&lt;br /&gt;
====eXoDOS 6.4 Linux Patch.zip====&lt;br /&gt;
:'''eXoDOS 6.4 Linux Patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOS_linux_metadata.zip&lt;br /&gt;
│   └── XODOS_linux_Metadata.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       ├── eXoMerge.bsh&lt;br /&gt;
│       ├── install_dependencies.bsh&lt;br /&gt;
│       ├── Setup eXoDOS.bsh&lt;br /&gt;
│       └── utilDOS_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── eXoMerge.command&lt;br /&gt;
├── install_dependencies.command&lt;br /&gt;
└── Setup eXoDOS.command&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
:*'''Content/!DOS_linux_metadata.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (bsh, command, conf) for games.&lt;br /&gt;
:*'''Content/XODOS_linux_Metadata.zip''' - This contains the exogui files and some xml scripts.&lt;br /&gt;
:*'''eXo/util/eXoMerge.bsh''' - This is a support file for eXoMerge.command.&lt;br /&gt;
:*'''eXo/util/install_dependencies.bsh''' - This is a support file for install_dependencies.command.&lt;br /&gt;
:*'''eXo/util/Setup eXoDOS.bsh''' - This is a support file for Setup eXoDOS.command.&lt;br /&gt;
:*'''eXo/util/utilDOS_linux.zip''' - This contains the eXoDOS Linux backend files.&lt;br /&gt;
:*'''eXoMerge.command''' - This script is used to help merge two eXo collections that have already been instal&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''led.&lt;br /&gt;
:* '''install_dependencies.command''' - This launches the Linux/macOS setup to &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''install system dependencies needed for eXo collections.&lt;br /&gt;
:*'''Setup eXoDOS.command''' - This launches the Linux/macOS setup for eXoDOS. While you cannot currently run eXoDOS on macOS, you can still install it for other systems.&lt;br /&gt;
&lt;br /&gt;
====util_linux.zip==== &lt;br /&gt;
:'''util_linux.zip''' contents:&lt;br /&gt;
:* '''!english/texts_linux.txt''' - support file for the eXoDOS Updater&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.bsh''' - language pack support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.msh''' - language pack support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/install.bsh''' - language pack support file for Linux game installer (called by bsh script in game directory)&lt;br /&gt;
:*'''!languagepacks/install.msh''' - language pack support file for macOS game installer (called by msh script in game directory)&lt;br /&gt;
:*'''!languagepacks/ip.bsh''' - language pack support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/ip.msh''' - language pack support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/launch.bsh''' - language pack support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''!languagepacks/launch.msh''' - language pack support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''Sumatra/CallSumatra.bsh''' - Linux support file for CallSumatra.command&lt;br /&gt;
:*'''Sumatra/CallSumatra.command''' - exogui calls this to launch Sumatra for magazine articles in Linux&lt;br /&gt;
:*'''AltLauncher.bsh''' - support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''AltLauncher.msh''' - support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''EXTDOS_linux.zip''' - contains Linux flatpaks, update files, AppImages, and emulator support files (bak, bsh, command, conf, txt) &lt;br /&gt;
:*'''alt_dosbox_linux.txt''' - defines the command to launch DOSBox for the alternate launcher (&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;must be DOSBox Staging to not break conf files)&lt;br /&gt;
:*'''alt_launch_linux.txt''' - defines the directory containing the DOSBox Staging resource folder used by eXoDOS for the alternate launcher&lt;br /&gt;
:*'''converter.bash''' - support file for regenerate.bash that converts bat files to bash files using a long series of substitution commands&lt;br /&gt;
:*'''dosbox_linux.txt''' - defines what version of DOSBox is used by each game in Linux&lt;br /&gt;
:*'''eXoLBpm_linux.py''' - The LaunchBox Parents.xml merging tool for Linux&lt;br /&gt;
:*'''eXoLPLBXMLedit_linux.py''' - The eXoDOS Language Pack LaunchBox XML edit tool for Linux&lt;br /&gt;
:*'''eXoLPPPM_linux.py''' - The eXoDOS Language Pack Playlist Parents Merger tool for Linux&lt;br /&gt;
:* '''exodos.png''' - png file that can be used as a custom icon in Steam&lt;br /&gt;
:*'''exodosvi_cover.jpg''' - Box art image that can be used as a custom background in Steam&lt;br /&gt;
:*'''install.bsh''' - support file for Linux game install scripts (gets called by the install.bsh script in the game directory)&lt;br /&gt;
:*'''install.msh''' - support file for macOS game install scripts (gets called by the install.msh script in the game directory)&lt;br /&gt;
:*'''ip.bsh''' - support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''ip.msh''' - support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''launch.bsh''' - support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''launch.msh''' - support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''regenerate.bash''' - location sensitive development script used to convert unzipped files from eXo collections to Linux and macOS&lt;br /&gt;
:*'''version.bsh''' - Linux support file for version.command&lt;br /&gt;
:*'''version.command''' - This tells the currently installed version of eXoDOS&lt;br /&gt;
:*'''version.msh''' - macOS support file for version.command&lt;br /&gt;
'''Content/DOS_linux_Magazines.zip''' - Linux supplement for the Media Pack - This contains Linux DOSBox configuration, launcher, and cue files related to magazines and disk magazines (bat, bsh, command, conf, cue).&lt;br /&gt;
&lt;br /&gt;
====Development Scripts====&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/converter.bash====&lt;br /&gt;
: The '''converter.bash''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.bash''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
:To prevent direct execution, the '''converter.bash''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.bash''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.bash''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
:Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.bash&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.bsh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.bsh&lt;br /&gt;
for currentScript in filesToConvert/*.bsh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.bash''' script is called by the '''regenerate.bash''' script. Details about those scripts will be described later in this document. These scripts are intended for development purposes, and changes periodically have to be made to them to handle any conversions that do not succeed. This could involve anything from fixing case inconsistencies to parsing batch code that was written in an unforeseen way.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function=====&lt;br /&gt;
&lt;br /&gt;
:The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed, ed, and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new substitution commands close to the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered, but not yet in a final state. If any existing text manipulation commands are changed or new ones added, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.bash''' script.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/regenerate.bash====&lt;br /&gt;
&lt;br /&gt;
:The purpose of the '''regenerate.bash''' script is to assist in the development of future Linux and macOS patches by automating the conversion of config files and Windows batch files to their Linux and macOS equivalents. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.bash''' script as well as the '''converter.bash''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging. Version 6 added much more complexity to eXoDOS than had ever previously existed. As a result, from version 5 to version 6, these files grew over 5 and a half times in size and complexity. As time goes on, new challenges are likely to be faced for maintaining these scripts.&lt;br /&gt;
&lt;br /&gt;
:The '''regenerate.bash''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, and converts all of the unzipped bat, conf, and other known support files. As case inconsistencies are found, substitutions to correct the inconsistencies are manually placed into the regenerate.bash script.&lt;br /&gt;
&lt;br /&gt;
:Most text manipulation for the above steps is done through sed commands, although there are a few situations where ed and Perl are used instead.&lt;br /&gt;
&lt;br /&gt;
:In short, when executing the '''regenerate.bash''' script, it goes through the following steps:&lt;br /&gt;
:#Gives a disclaimer that running the script will take a VERY long time&lt;br /&gt;
:#Checks that standard eXo files are located in their expected locations in relation to the script&lt;br /&gt;
:#Fixes zip archive references&lt;br /&gt;
:#Fixes batch file reference inconsistencies&lt;br /&gt;
:#Copies bat files to newly created bsh files&lt;br /&gt;
:#Prepares bsh files for conversion&lt;br /&gt;
:#Converts syntax for the Linux shell files (bsh) from Windows batch to bash&lt;br /&gt;
:#Removes unnecessary dependency checks for eXoDREAMM and eXoScummVM&lt;br /&gt;
:#Creates universal launch files for Linux and macOS (command files)&lt;br /&gt;
:#Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:#Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:#Creates DOSBox configuration files for Linux&lt;br /&gt;
:#Makes necessary changes to Linux configuration files&lt;br /&gt;
:#Applies Linux-only backend fixes&lt;br /&gt;
:#Applies Linux-only game specific fixes&lt;br /&gt;
:#Converts shell script reference txt files&lt;br /&gt;
:#Prepares macOS shell files (this step is currently skipped for eXoDOS, eXoScummVM, and eXoWin3x)&lt;br /&gt;
:#Corrects xml inconsistencies with known solutions&lt;br /&gt;
:#Removes unnecessary files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the case inconsistency fixes and game specific changes are manually added to the '''regenerate.bash''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
===Linux Update and Patch Files===&lt;br /&gt;
&lt;br /&gt;
:The Update directory is extracted from '''EXTDOS_linux.zip''' to the '''eXo/Update''' location. It contains the scripts to run the eXoDOS updater as well as subdirectories for updates and patch files. The '''eXo/Update''' directory may initially look something like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── changelog.txt&lt;br /&gt;
├── cleanup.bat&lt;br /&gt;
├── cleanup.bsh&lt;br /&gt;
├── cleanup.command&lt;br /&gt;
├── !dos&lt;br /&gt;
│   └── linux&lt;br /&gt;
│       └── release&lt;br /&gt;
│           ├── Battle Isle 2 (1993).zip&lt;br /&gt;
│           ├── Breach 2 (1990).zip&lt;br /&gt;
│           ├── Carmageddon Max Pack (1998).zip&lt;br /&gt;
│           ├── Command and Conquer (1995).zip&lt;br /&gt;
│           ├── Command and Conquer - Red Alert (1996).zip&lt;br /&gt;
│           ├── Complete Great Naval Battles, The - The Final Fury (1996).zip&lt;br /&gt;
│           ├── DOOM - eXoWAD (2021).zip&lt;br /&gt;
│           ├── Grand Theft Auto (1997).zip&lt;br /&gt;
│           ├── Hard Nova (1990).zip&lt;br /&gt;
│           ├── Heroes of Might and Magic II (Deluxe Edition) (1998).zip&lt;br /&gt;
│           ├── Jane's Combat Simulations Advanced Tactical Fighters (1996).zip&lt;br /&gt;
│           ├── Last Half of Darkness (1989).zip&lt;br /&gt;
│           ├── Lemmings (1991).zip&lt;br /&gt;
│           ├── Lemmings 3 - All New World of Lemmings (1994).zip&lt;br /&gt;
│           ├── Leo the Lion (1997).zip&lt;br /&gt;
│           ├── Living Ball (1995).zip&lt;br /&gt;
│           ├── Mean 18 (1986).zip&lt;br /&gt;
│           ├── MechWarrior 2 (Limited Edition) (1996).zip&lt;br /&gt;
│           ├── NFL Challenge (1985).zip&lt;br /&gt;
│           ├── Normality (1996).zip&lt;br /&gt;
│           ├── Picture Perfect Golf (1995).zip&lt;br /&gt;
│           ├── Prisoner of Ice (1995).zip&lt;br /&gt;
│           ├── Realms of Arkania - Blade of Destiny (1992).zip&lt;br /&gt;
│           ├── Resurrection - Rise 2 (1996).zip&lt;br /&gt;
│           ├── Sigil (2019).zip&lt;br /&gt;
│           ├── Sigil II (2023).zip&lt;br /&gt;
│           ├── Star Trek - Judgement Rites CD (1993).zip&lt;br /&gt;
│           ├── Time Gate - Knight's Chase (1995).zip&lt;br /&gt;
│           ├── Ultima VI - The False Prophet (1990).zip&lt;br /&gt;
│           ├── Ultima V - Warriors of Destiny (1988).zip&lt;br /&gt;
│           └── Zone of Artificial Resources (1997).zip&lt;br /&gt;
├── index.txt&lt;br /&gt;
├── restore.exe&lt;br /&gt;
├── restore.py&lt;br /&gt;
├── update.bat&lt;br /&gt;
├── update.bsh&lt;br /&gt;
├── update.command&lt;br /&gt;
├── update_installed.bat&lt;br /&gt;
├── update_installed.bsh&lt;br /&gt;
├── update_installed.command&lt;br /&gt;
├── update.txt&lt;br /&gt;
├── update_xml.bat&lt;br /&gt;
├── update_xml.bsh&lt;br /&gt;
├── update_xml.command&lt;br /&gt;
└── ver&lt;br /&gt;
    └── ver.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Executing the '''update.command''' script will run an update for eXoDOS. This normally will be done in exogui from the eXoDOS game entry. Both the Windows version of eXoDOS and the Linux patch download the same updates. Updates work identically regardless of the operating system.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos''' directory are for non-OS specific game file updates.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos/linux/release''' directory are Linux specific patch files that are bundled with the eXoDOS Linux patch when you download it.&lt;br /&gt;
:* Files in the '''eXo/Update/!dos/linux''' directory are Linux specific update files that are downloaded as part of an eXoDOS update.&lt;br /&gt;
:All files extracted from Linux specific archives have unique filenames to differentiate them from files that should only be used in Windows.&lt;br /&gt;
:Files are extracted from these directories in the following order:&lt;br /&gt;
:# eXo/Update/!dos&lt;br /&gt;
:# eXo/Update/!dos/linux/release&lt;br /&gt;
:# eXo/Update/!dos/linux&lt;br /&gt;
&lt;br /&gt;
===Preparing For Manual Conversion===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
===Packaging Files For Release===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=651</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=651"/>
		<updated>2024-09-12T00:51:40Z</updated>

		<summary type="html">&lt;p&gt;Parricc: Added more updates for eXoDOS 6.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is a complete conversion to make all features of eXoDOS work on Linux systems just as they would in Windows. An official Linux frontend, called exogui, is included as part of this conversion. Additionally, the patch is written to ensure that the collection works as expected in dual-boot environments. After the Linux patch is installed, if eXoDOS is updated or games are installed, this will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
As it is encouraged to seed the collection, installing the Linux patch will not alter any torrent files. The patch does not change the existing eXoDOS framework, but instead supplements it.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest eXoDOS Linux Patch is for version 6.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Supported distributions include:&lt;br /&gt;
*Arch / Manjaro Linux / SteamOS&lt;br /&gt;
*Fedora&lt;br /&gt;
*Ubuntu (and Ubuntu-based distributions) / Debian&lt;br /&gt;
*Nearly any x86_64 distro that has flatpak support&lt;br /&gt;
Unsupported:&lt;br /&gt;
&lt;br /&gt;
*ARM, IBM Power, and RISC-V computers and devices are '''not''' supported at this time. This includes the Raspberry Pi. We need someone to volunteer to build ARM versions of the flatpaks for support to be added.&lt;br /&gt;
* macOS and BSD are also unsupported at this time. Until we have a volunteer to add macOS support to the frontend, this is unlikely to change. Backend support exists for the eXoDREAMM project, and the backend for eXoDOS has been partially converted in case we get a volunteer.&lt;br /&gt;
&lt;br /&gt;
===Installation Process===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive====&lt;br /&gt;
&lt;br /&gt;
:First, the '''eXoDOS 6.4 Linux Patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
:Copy the '''eXoDOS 6.4 Linux Patch.zip''' file to the root directory of your freshly downloaded eXoDOS 6.4 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located)&lt;br /&gt;
:Then, in your file manager, right click on the '''eXoDOS 6.4 Linux Patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
:Alternatively, you may open the zip with a utility such as Ark, and drag the files and folders into the root eXoDOS directory.&lt;br /&gt;
:The important thing is to ensure the files are extracted into the root directory of the collection, and not into a newly created subdirectory.&lt;br /&gt;
:If you have also downloaded the eXoDOS Media Pack, ensure it has been downloaded the the same directory as the base eXoDOS collection. Then, download and place the &amp;quot;''DOS_linux_Magazines.zip''&amp;quot; file in the Content directory. Do not unzip this file.&lt;br /&gt;
:After this has been done, proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
====Step 2 - Installing System Dependencies==== &lt;br /&gt;
&lt;br /&gt;
:The next step is to install the software needed to run the collection. The '''install_dependencies.command''' script will run you through a guided setup to do this.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; If you are using Thunar or XFCE, you will first need to enable running shell files as executables. To do this, open a terminal and run the following command:   &amp;lt;code&amp;gt;xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set true&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;In your file manager, double-click on '''install_dependencies.command''' to start the dependency installer. If you are asked whether you want to execute the file, click yes.&lt;br /&gt;
:If you are using Nautilus or Gnome and are not given this option to run by double-clicking, right click the file and select Run as Program.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; This step will need to be done on any Linux computer that has not previously ran eXoDOS 6, even if the full setup has already been completed on a portable drive. Also note that the flatpaks are installed at a user level. As such, other users will need to run the dependency installer separately as well. If you update your video drivers, you may also need to follow that up with a flatpak update. Rerunning a dependency installer installation will handle that for you.&amp;lt;/blockquote&amp;gt;Upon running the dependency installer, you will be prompted with a guided setup that gives the following options:  &amp;lt;br /&amp;gt;The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.  To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instruction.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[P]roceed with installation&lt;br /&gt;
[D]ownload the latest setup&lt;br /&gt;
[R]emove all installed eXo packages&lt;br /&gt;
[A]bort installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:The &amp;quot;''[D]ownload the latest setup''&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version. To proceed with installing the dependencies, choose &amp;quot;''[P]roceed with installation''&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
:In your file manager, double-click on the '''eXoDOS Setup.command''' file to start the setup, and then follow the on-screen instructions. If you are asked whether you want to execute the file, click yes. If you are using Nautilus or Gnome and are not given this option, right click the file and select Run as Program.&lt;br /&gt;
:&lt;br /&gt;
:The setup file will check for required files and warn you if any are missing. It will also check for files from the Media Pack Add-On.&lt;br /&gt;
&lt;br /&gt;
:This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers.&lt;br /&gt;
&lt;br /&gt;
:It is important to run the setup and not extract any files manually. Not only are the files location sensitive, but the setup makes some changes to them.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
:You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off.&lt;br /&gt;
&lt;br /&gt;
:Once it is complete, run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. However, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to run the '''eXoDOS Updater''' to update the shortcut to point to the new location. The '''eXoDOS Updater''' will allow you to reconfigure all of the installation options instead of running through the entire setup process again.&lt;br /&gt;
&lt;br /&gt;
===Using eXoDOS===&lt;br /&gt;
&lt;br /&gt;
====exogui====&lt;br /&gt;
&lt;br /&gt;
:The official Linux frontend is exogui, a fork of Flashpoint Launcher. A member of our Discord, jelcynek, created exogui and has continued to maintain it over the years. More recently, Colin, the main Flashpoint Launcher developer, has also contributed to exogui. Together, they have made a very solid frontend. We are still looking for more volunteers to improve the UI experience, especially on the Steam Deck.&lt;br /&gt;
:Simply double-click on the '''eXoDOS''' desktop icon, or execute the '''exogui.command''' file to launch the frontend. You will be presented with a list of all included games.&lt;br /&gt;
&lt;br /&gt;
:The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
:The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
:Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
:If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will be given an option to keep your saved games. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler.&lt;br /&gt;
:&lt;br /&gt;
:To launch a game or its setup from exogui, click on the game to select it, and then click on the 'Install', 'Play', or 'Setup' button in the right-hand pane.&lt;br /&gt;
&lt;br /&gt;
====Creating Desktop Shortcuts==== &lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a specific game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes to the Exec, Icon, and Name lines as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Version=1.0&lt;br /&gt;
Type=Application&lt;br /&gt;
Terminal=false&lt;br /&gt;
Exec=&amp;quot;/home/username/eXoDOS/eXo/eXoDOS/!dos/mi1/Secret of Monkey Island, The (1990).command&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/Some Monkey Island Icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changelog===&lt;br /&gt;
&lt;br /&gt;
====Changes to the eXoDOS 6.04 Linux Patch====&lt;br /&gt;
&lt;br /&gt;
:*Launch scripts directly from any file-manager: Files ending in the *.command extension can be launched directly from any file manager.&lt;br /&gt;
:*Revamped dependency installer with update support: For many distributions, sudo access is no longer needed.&lt;br /&gt;
:*Improved compatibility: The eXoDOS Linux patch will now run on virtually any x86_64 distro with flatpak support, including the Steam Deck.&lt;br /&gt;
:*Improved frontend: The exogui frontend is now feature packed with full support for extras, filters, images, playlists, and videos.&lt;br /&gt;
:*Improved backend: The backend has been completely revamped to include all eXoDOS 6 features.&lt;br /&gt;
:*Bug Squash: Hundreds of previously broken games have been fixed after thorough testing&lt;br /&gt;
&lt;br /&gt;
===Files===&lt;br /&gt;
&lt;br /&gt;
====eXoDOS 6.4 Linux Patch.zip====&lt;br /&gt;
:'''eXoDOS 6.4 Linux Patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOS_linux_metadata.zip&lt;br /&gt;
│   └── XODOS_linux_Metadata.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       ├── eXoMerge.bsh&lt;br /&gt;
│       ├── install_dependencies.bsh&lt;br /&gt;
│       ├── Setup eXoDOS.bsh&lt;br /&gt;
│       └── utilDOS_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── eXoMerge.command&lt;br /&gt;
├── install_dependencies.command&lt;br /&gt;
└── Setup eXoDOS.command&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
:*'''Content/!DOS_linux_metadata.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (bsh, command, conf) for games.&lt;br /&gt;
:*'''Content/XODOS_linux_Metadata.zip''' - This contains the exogui files and some xml scripts.&lt;br /&gt;
:*'''eXo/util/eXoMerge.bsh''' - This is a support file for eXoMerge.command.&lt;br /&gt;
:*'''eXo/util/install_dependencies.bsh''' - This is a support file for install_dependencies.command.&lt;br /&gt;
:*'''eXo/util/Setup eXoDOS.bsh''' - This is a support file for Setup eXoDOS.command.&lt;br /&gt;
:*'''eXo/util/utilDOS_linux.zip''' - This contains the eXoDOS Linux backend files.&lt;br /&gt;
:*'''eXoMerge.command''' - This script is used to help merge two eXo collections that have already been instal&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''led.&lt;br /&gt;
:* '''install_dependencies.command''' - This launches the Linux/macOS setup to &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''install system dependencies needed for eXo collections.&lt;br /&gt;
:*'''Setup eXoDOS.command''' - This launches the Linux/macOS setup for eXoDOS. While you cannot currently run eXoDOS on macOS, you can still install it for other systems.&lt;br /&gt;
&lt;br /&gt;
====util_linux.zip==== &lt;br /&gt;
:'''util_linux.zip''' contents:&lt;br /&gt;
:* '''!english/texts_linux.txt''' - support file for the eXoDOS Updater&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.bsh''' - language pack support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.msh''' - language pack support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/install.bsh''' - language pack support file for Linux game installer (called by bsh script in game directory)&lt;br /&gt;
:*'''!languagepacks/install.msh''' - language pack support file for macOS game installer (called by msh script in game directory)&lt;br /&gt;
:*'''!languagepacks/ip.bsh''' - language pack support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/ip.msh''' - language pack support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/launch.bsh''' - language pack support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''!languagepacks/launch.msh''' - language pack support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''Sumatra/CallSumatra.bsh''' - Linux support file for CallSumatra.command&lt;br /&gt;
:*'''Sumatra/CallSumatra.command''' - exogui calls this to launch Sumatra for magazine articles in Linux&lt;br /&gt;
:*'''AltLauncher.bsh''' - support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''AltLauncher.msh''' - support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''EXTDOS_linux.zip''' - contains Linux flatpaks, update files, AppImages, and emulator support files (bak, bsh, command, conf, txt) &lt;br /&gt;
:*'''alt_dosbox_linux.txt''' - defines the command to launch DOSBox for the alternate launcher (&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;must be DOSBox Staging to not break conf files)&lt;br /&gt;
:*'''alt_launch_linux.txt''' - defines the directory containing the DOSBox Staging resource folder used by eXoDOS for the alternate launcher&lt;br /&gt;
:*'''converter.bash''' - support file for regenerate.bash that converts bat files to bash files using a long series of substitution commands&lt;br /&gt;
:*'''dosbox_linux.txt''' - defines what version of DOSBox is used by each game in Linux&lt;br /&gt;
:*'''eXoLBpm_linux.py''' - The LaunchBox Parents.xml merging tool for Linux&lt;br /&gt;
:*'''eXoLPLBXMLedit_linux.py''' - The eXoDOS Language Pack LaunchBox XML edit tool for Linux&lt;br /&gt;
:*'''eXoLPPPM_linux.py''' - The eXoDOS Language Pack Playlist Parents Merger tool for Linux&lt;br /&gt;
:* '''exodos.png''' - png file that can be used as a custom icon in Steam&lt;br /&gt;
:*'''exodosvi_cover.jpg''' - Box art image that can be used as a custom background in Steam&lt;br /&gt;
:*'''install.bsh''' - support file for Linux game install scripts (gets called by the install.bsh script in the game directory)&lt;br /&gt;
:*'''install.msh''' - support file for macOS game install scripts (gets called by the install.msh script in the game directory)&lt;br /&gt;
:*'''ip.bsh''' - support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''ip.msh''' - support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''launch.bsh''' - support file to launch games in Linux (called by the &amp;lt;game name&amp;gt;.bsh script in the game directory)&lt;br /&gt;
:*'''launch.msh''' - support file to launch games in macOS (called by the &amp;lt;game name&amp;gt;.msh script in the game directory)&lt;br /&gt;
:*'''regenerate.bash''' - location sensitive development script used to convert unzipped files from eXo collections to Linux and macOS&lt;br /&gt;
:*'''version.bsh''' - Linux support file for version.command&lt;br /&gt;
:*'''version.command''' - This tells the currently installed version of eXoDOS&lt;br /&gt;
:*'''version.msh''' - macOS support file for version.command&lt;br /&gt;
'''Content/DOS_linux_Magazines.zip''' - Linux supplement for the Media Pack - This contains Linux DOSBox configuration, launcher, and cue files related to magazines and disk magazines (bat, bsh, command, conf, cue).&lt;br /&gt;
&lt;br /&gt;
====Custom Scripts====&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/converter.bash====&lt;br /&gt;
: The '''converter.bash''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.bash''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
:To prevent direct execution, the '''converter.bash''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.bash''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.bash''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
:Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.bash&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.bsh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.bsh&lt;br /&gt;
for currentScript in filesToConvert/*.bsh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.bash''' script is called by the '''regenerate.bash''' script. Details about those scripts will be described later in this document. These scripts are intended for development purposes, and changes periodically have to be made to them to handle any conversions that do not succeed. This could involve anything from fixing case inconsistencies to parsing batch code that was written in an unforeseen way.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function=====&lt;br /&gt;
&lt;br /&gt;
:The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed, ed, and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new substitution commands close to the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered, but not yet in a final state. If any existing text manipulation commands are changed or new ones added, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.bash''' script.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/regenerate.bash====&lt;br /&gt;
&lt;br /&gt;
:The purpose of the '''regenerate.bash''' script is to assist in the development of future Linux and macOS patches by automating the conversion of config files and Windows batch files to their Linux and macOS equivalents. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.bash''' script as well as the '''converter.bash''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging. Version 6 added much more complexity to eXoDOS than had ever previously existed. As a result, from version 5 to version 6, these files grew over 5 and a half times in size and complexity. As time goes on, new challenges are likely to be faced for maintaining these scripts.&lt;br /&gt;
&lt;br /&gt;
:The '''regenerate.bash''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, and converts all of the unzipped bat, conf, and other known support files. As case inconsistencies are found, substitutions to correct the inconsistencies are manually placed into the regenerate.bash script.&lt;br /&gt;
&lt;br /&gt;
:Most text manipulation for the above steps is done through sed commands, although there are a few situations where ed and Perl are used instead.&lt;br /&gt;
&lt;br /&gt;
:In short, when executing the '''regenerate.bash''' script, it goes through the following steps:&lt;br /&gt;
:#Gives a disclaimer that running the script will take a VERY long time&lt;br /&gt;
:#Checks that standard eXo files are located in their expected locations in relation to the script&lt;br /&gt;
:#Fixes zip archive references&lt;br /&gt;
:#Fixes batch file reference inconsistencies&lt;br /&gt;
:#Copies bat files to newly created bsh files&lt;br /&gt;
:#Prepares bsh files for conversion&lt;br /&gt;
:#Converts syntax for the Linux shell files (bsh) from Windows batch to bash&lt;br /&gt;
:#Removes unnecessary dependency checks for eXoDREAMM and eXoScummVM&lt;br /&gt;
:#Creates universal launch files for Linux and macOS (command files)&lt;br /&gt;
:#Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:#Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:#Creates DOSBox configuration files for Linux&lt;br /&gt;
:#Makes necessary changes to Linux configuration files&lt;br /&gt;
:#Applies Linux-only backend fixes&lt;br /&gt;
:#Applies Linux-only game specific fixes&lt;br /&gt;
:#Converts shell script reference txt files&lt;br /&gt;
:#Prepares macOS shell files (this step is currently skipped for eXoDOS, eXoScummVM, and eXoWin3x)&lt;br /&gt;
:#Corrects xml inconsistencies with known solutions&lt;br /&gt;
:#Removes unnecessary files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the case inconsistency fixes and game specific changes are manually added to the '''regenerate.bash''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
===Note on Updates===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''IMPORTANT:'''&amp;lt;/span&amp;gt; If preparing a full copy of the eXoDOS Linux patch, any existing eXoDOS update files should be considered before packaging the files for final release. The initial eXoDOS 5 Linux patch included the eXoDOS 5.1 update. For completeness as well as the convenience of anyone installing the Linux patch without an active Internet connection, any new versions of '''exodos5-linux-patch.zip''' should always include the latest updates. At the same time, a cumulative update patch file, '''update_linux.zip''', is also maintained for people that would like to simply update their already installed version of eXoDOS 5. The details of how the update works will be discussed later. However, it should be noted that both the '''exodos5-linux-patch.zip''' file as well as '''update_linux.zip''' should contain the latest versions of everything at their time of release.&lt;br /&gt;
&lt;br /&gt;
:In the '''exodos5-linux-patch.zip''' file, any cumulative updates for bat, conf, and sh files are merged into the '''Content/!DOSmetadata_linux.zip''' and '''Content/Magazines_linux.zip''' files, overwriting the ones from the eXoDOS 5.0 release. Updates to game archives, on the other hand, are included in the '''eXo/util/update_linux.zip''' file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''CAUTION:'''&amp;lt;/span&amp;gt; The '''update_linux.zip''' file hosted online is for cumulative updates and is different than the '''eXo/util/update_linux.zip''' file contained in the full release of the Linux patch. Any references in this document to the two files can be differentiated by the presence or absence of '''eXo/util/'''.&lt;br /&gt;
&lt;br /&gt;
===Preparing For Manual Conversion===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
===Packaging Files For Release===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=650</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=650"/>
		<updated>2024-09-11T22:32:41Z</updated>

		<summary type="html">&lt;p&gt;Parricc: /* Using eXoDOS */ WIP to update for eXoDOS 6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is a complete conversion to make all features of eXoDOS work on Linux systems just as they would in Windows. An official Linux frontend, called exogui, is included as part of this conversion. Additionally, the patch is written to ensure that the collection works as expected in dual-boot environments. After the Linux patch is installed, if eXoDOS is updated or games are installed, this will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
As it is encouraged to seed the collection, installing the Linux patch will not alter any torrent files. The patch does not change the existing eXoDOS framework, but instead supplements it.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest eXoDOS Linux Patch is for version 6.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Supported distributions include:&lt;br /&gt;
*Arch / Manjaro Linux / SteamOS&lt;br /&gt;
*Fedora&lt;br /&gt;
*Ubuntu (and Ubuntu-based distributions) / Debian&lt;br /&gt;
*Nearly any x86_64 distro that has flatpak support&lt;br /&gt;
Unsupported:&lt;br /&gt;
&lt;br /&gt;
*ARM, IBM Power, and RISC-V computers and devices are '''not''' supported at this time. This includes the Raspberry Pi. We need someone to volunteer to build ARM versions of the flatpaks for support to be added.&lt;br /&gt;
* macOS and BSD are also unsupported at this time. Until we have a volunteer to add macOS support to the frontend, this is unlikely to change. Backend support exists for the eXoDREAMM project, and the backend for eXoDOS has been partially converted in case we get a volunteer.&lt;br /&gt;
&lt;br /&gt;
===Installation Process===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive====&lt;br /&gt;
&lt;br /&gt;
:First, the '''eXoDOS 6.4 Linux Patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
:Copy the '''eXoDOS 6.4 Linux Patch.zip''' file to the root directory of your freshly downloaded eXoDOS 6.4 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located)&lt;br /&gt;
:Then, in your file manager, right click on the '''eXoDOS 6.4 Linux Patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
:Alternatively, you may open the zip with a utility such as Ark, and drag the files and folders into the root eXoDOS directory.&lt;br /&gt;
:The important thing is to ensure the files are extracted into the root directory of the collection, and not into a newly created subdirectory.&lt;br /&gt;
:If you have also downloaded the eXoDOS Media Pack, ensure it has been downloaded the the same directory as the base eXoDOS collection. Then, download and place the &amp;quot;''DOS_linux_Magazines.zip''&amp;quot; file in the Content directory. Do not unzip this file.&lt;br /&gt;
:After this has been done, proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
====Step 2 - Installing System Dependencies==== &lt;br /&gt;
&lt;br /&gt;
:The next step is to install the software needed to run the collection. The '''install_dependencies.command''' script will run you through a guided setup to do this.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; If you are using Thunar or XFCE, you will first need to enable running shell files as executables. To do this, open a terminal and run the following command:   &amp;lt;code&amp;gt;xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set true&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;In your file manager, double-click on '''install_dependencies.command''' to start the dependency installer. If you are asked whether you want to execute the file, click yes.&lt;br /&gt;
:If you are using Nautilus or Gnome and are not given this option to run by double-clicking, right click the file and select Run as Program.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; This step will need to be done on any Linux computer that has not previously ran eXoDOS 6, even if the full setup has already been completed on a portable drive. Also note that the flatpaks are installed at a user level. As such, other users will need to run the dependency installer separately as well. If you update your video drivers, you may also need to follow that up with a flatpak update. Rerunning a dependency installer installation will handle that for you.&amp;lt;/blockquote&amp;gt;Upon running the dependency installer, you will be prompted with a guided setup that gives the following options:  &amp;lt;br /&amp;gt;The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.  To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instruction.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[P]roceed with installation&lt;br /&gt;
[D]ownload the latest setup&lt;br /&gt;
[R]emove all installed eXo packages&lt;br /&gt;
[A]bort installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:The &amp;quot;''[D]ownload the latest setup''&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version. To proceed with installing the dependencies, choose &amp;quot;''[P]roceed with installation''&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
:In your file manager, double-click on the '''eXoDOS Setup.command''' file to start the setup, and then follow the on-screen instructions. If you are asked whether you want to execute the file, click yes. If you are using Nautilus or Gnome and are not given this option, right click the file and select Run as Program.&lt;br /&gt;
:&lt;br /&gt;
:The setup file will check for required files and warn you if any are missing. It will also check for files from the Media Pack Add-On.&lt;br /&gt;
&lt;br /&gt;
:This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers.&lt;br /&gt;
&lt;br /&gt;
:It is important to run the setup and not extract any files manually. Not only are the files location sensitive, but the setup makes some changes to them.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
:You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off.&lt;br /&gt;
&lt;br /&gt;
:Once it is complete, run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. However, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to run the '''eXoDOS Updater''' to update the shortcut to point to the new location. The '''eXoDOS Updater''' will allow you to reconfigure all of the installation options instead of running through the entire setup process again.&lt;br /&gt;
&lt;br /&gt;
===Using eXoDOS===&lt;br /&gt;
&lt;br /&gt;
====exogui====&lt;br /&gt;
&lt;br /&gt;
:The official Linux frontend is exogui, a fork of Flashpoint Launcher. A member of our Discord, jelcynek, created exogui and has continued to maintain it over the years. More recently, Colin, the main Flashpoint Launcher developer, has also contributed to exogui. Together, they have made a very solid frontend. We are still looking for more volunteers to improve the UI experience, especially on the Steam Deck.&lt;br /&gt;
:Simply double-click on the '''eXoDOS''' desktop icon, or execute the '''exogui.command''' file to launch the frontend. You will be presented with a list of all included games.&lt;br /&gt;
&lt;br /&gt;
:The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
:The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
:Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
:If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will be given an option to keep your saved games. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler.&lt;br /&gt;
:&lt;br /&gt;
:To launch a game or its setup from exogui, click on the game to select it, and then click on the 'Install', 'Play', or 'Setup' button in the right-hand pane.&lt;br /&gt;
&lt;br /&gt;
====Creating Desktop Shortcuts==== &lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a specific game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes to the Exec, Icon, and Name lines as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Version=1.0&lt;br /&gt;
Type=Application&lt;br /&gt;
Terminal=false&lt;br /&gt;
Exec=&amp;quot;/home/username/eXoDOS/eXo/eXoDOS/!dos/mi1/Secret of Monkey Island, The (1990).command&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/Some Monkey Island Icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changelog===&lt;br /&gt;
&lt;br /&gt;
====Changes to the eXoDOS 6.04 Linux Patch====&lt;br /&gt;
&lt;br /&gt;
:*Launch scripts directly from any file-manager: Files ending in the *.command extension can be launched directly from any file manager.&lt;br /&gt;
:*Revamped dependency installer with update support: For many distributions, sudo access is no longer needed.&lt;br /&gt;
:*Improved compatibility: The eXoDOS Linux patch will now run on virtually any x86_64 distro with flatpak support, including the Steam Deck.&lt;br /&gt;
:*Improved frontend: The exogui frontend is now feature packed with full support for extras, filters, images, playlists, and videos.&lt;br /&gt;
:*Improved backend: The backend has been completely revamped to include all eXoDOS 6 features.&lt;br /&gt;
:*Bug Squash: Hundreds of previously broken games have been fixed after thorough testing&lt;br /&gt;
&lt;br /&gt;
===Files===&lt;br /&gt;
&lt;br /&gt;
====eXoDOS 6.4 Linux Patch.zip====&lt;br /&gt;
:'''eXoDOS 6.4 Linux Patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOS_linux_metadata.zip&lt;br /&gt;
│   └── XODOS_linux_Metadata.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       ├── eXoMerge.bsh&lt;br /&gt;
│       ├── install_dependencies.bsh&lt;br /&gt;
│       ├── Setup eXoDOS.bsh&lt;br /&gt;
│       └── utilDOS_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── eXoMerge.command&lt;br /&gt;
├── install_dependencies.command&lt;br /&gt;
└── Setup eXoDOS.command&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
:*'''Content/!DOS_linux_metadata.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (bsh, command, conf) for games.&lt;br /&gt;
:*'''Content/XODOS_linux_Metadata.zip''' - This contains the exogui files and some xml scripts.&lt;br /&gt;
:*'''eXo/util/eXoMerge.bsh''' - This is a support file for eXoMerge.command.&lt;br /&gt;
:*'''eXo/util/install_dependencies.bsh''' - This is a support file for install_dependencies.command.&lt;br /&gt;
:*'''eXo/util/Setup eXoDOS.bsh''' - This is a support file for Setup eXoDOS.command.&lt;br /&gt;
:*'''eXo/util/utilDOS_linux.zip''' - This contains the eXoDOS Linux backend files.&lt;br /&gt;
:*'''eXoMerge.command''' - This script is used to help merge two eXo collections that have already been instal&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''led.&lt;br /&gt;
:* '''install_dependencies.command''' - This launches the Linux/macOS setup to &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''install system dependencies needed for eXo collections.&lt;br /&gt;
:*'''Setup eXoDOS.command''' - This launches the Linux/macOS setup for eXoDOS. While you cannot currently run eXoDOS on macOS, you can still install it for other systems.&lt;br /&gt;
&lt;br /&gt;
====util_linux.zip==== &lt;br /&gt;
:'''util_linux.zip''' contents:&lt;br /&gt;
:* '''!english/texts_linux.txt''' - support file for the eXoDOS Updater&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.bsh''' - language pack support file for Linux alternate launcher (called by bsh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/Alternate Launcher.msh''' - language pack support file for macOS alternate launcher (called by msh script in the game Extras directory)&lt;br /&gt;
:*'''!languagepacks/install.bsh''' - language pack support file for Linux game installer (called by bsh script in game directory)&lt;br /&gt;
:*'''!languagepacks/install.msh''' - language pack support file for macOS game installer (called by msh script in game directory)&lt;br /&gt;
:*'''!languagepacks/ip.bsh''' - language pack support file to determine IP address for multiplayer games in Linux (called by the launch.bsh script in the same directory)&lt;br /&gt;
:*'''!languagepacks/ip.msh''' - language pack support file to determine IP address for multiplayer games in macOS (called by the launch.msh script in the same directory)&lt;br /&gt;
:*'''Sumatra/CallSumatra.bsh''' - Linux support file for CallSumatra.command&lt;br /&gt;
:*'''Sumatra/CallSumatra.command''' - exogui calls this to launch Sumatra for magazine articles in Linux&lt;br /&gt;
:*'''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:*'''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:*'''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
'''Content/DOS_linux_Magazines.zip''' - Linux supplement for the Media Pack - This contains Linux DOSBox configuration, launcher, and cue files related to magazines and disk magazines (bat, bsh, command, conf, cue).&lt;br /&gt;
&lt;br /&gt;
====Custom Scripts====&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:*'''eXo/Update/update.bat'''&lt;br /&gt;
:*'''eXo/Update/update.sh'''&lt;br /&gt;
:*'''eXo/Update/update_installed.sh'''&lt;br /&gt;
:*'''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
====eXo/util/converter.sh====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
:To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
:Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function=====&lt;br /&gt;
&lt;br /&gt;
:The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/regenerate.sh====&lt;br /&gt;
&lt;br /&gt;
:The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; '''Setup_with_regeneration.sh''' does not handle the flatpak/native check in the '''update.sh''' or '''update.bat''' file. The '''util_linux.zip''' file is different from '''util.zip''' in many ways. This script does not focus on the contents of those files, even if was used to prepare them originally. If '''regenerate.sh''' or '''converter.sh''' have been updated, please ensure that you have also updated the '''util_linux.zip''' file with the newer versions. &lt;br /&gt;
&lt;br /&gt;
:The '''regenerate.sh''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, copies the '''Setup.bat''' file to '''Setup_with_regeneration.sh''', and converts the newly created file to bash. From here, the script makes several changes to the '''Setup_with_regeneration.sh''' file: &lt;br /&gt;
:#Any file reference case inconsistencies are fixed, all '''util.zip''' references are changed to '''util_linux.zip''', and additionally needed unzip directives are added.&lt;br /&gt;
:#Checks are added to the beginning of the script to ensure it is located in the root directory of the eXoDOS collection.&lt;br /&gt;
:#Additional code is added to the end of the script to generate Linux versions for all config files and Windows batch files.&lt;br /&gt;
&lt;br /&gt;
:All text manipulation for the above steps is done through sed commands. The final step will scare many people away as it involves numerous sed commands within a sed command. This means each line has a great deal of escape sequences.&lt;br /&gt;
&lt;br /&gt;
:Here is a code snippet to give an idea of what some of this looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sed -i -e '$a\&lt;br /&gt;
\&lt;br /&gt;
clear\&lt;br /&gt;
echo &amp;quot;The rest of the setup is automated but could take over an hour.&amp;quot;\&lt;br /&gt;
echo &amp;quot;&amp;quot;\&lt;br /&gt;
cd &amp;quot;$initialDir&amp;quot;\&lt;br /&gt;
cd eXo\&lt;br /&gt;
echo &amp;quot;Copying scummvm svn application data to Wine.&amp;quot;\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;md %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;copy .\\\util\\\scummvm.ini %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM\\\scummvm.ini&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing zip archive references.&amp;quot;\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing batch file reference inconsistencies. This may take several minutes.&amp;quot;\&lt;br /&gt;
[ `ls -1 Update/*.bat 2&amp;gt;/dev/null | wc -w` -gt 0 ] &amp;amp;&amp;amp; sed -i -e &amp;quot;s/^goto :eof/goto :end/&amp;quot; Update/*.bat 2&amp;gt;/dev/null\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.\\\\\\download\\\\\\/.\\\\\\DOWNLOAD\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exodos\\\\\\/eXoDOS\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\/eXo\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\update/eXo\\\\\\Update/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/PPMode/PPmode/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/c\\*\\.rom/C*.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.rom/.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s|mt32\\\\\\soundcanvas\\.sf2|mt32\\\\\\SoundCanvas.sf2|I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/update\\.zip/update_linux.zip/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.exo/ver_linux.exo/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.txt/ver_linux.txt/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/findstr \\/C/ s/\\&amp;quot;%GameName/\\&amp;quot;:%GameName/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/fullindex=/ s/\\&amp;quot;\\$gamename/\\&amp;quot;:\\$gamename/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
echo &amp;quot;Creating game shell files.&amp;quot;\&lt;br /&gt;
echo &amp;quot;Preparing files for conversion...&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*.sh\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*/*.sh\&lt;br /&gt;
chmod +x Update/*.sh\&lt;br /&gt;
chmod +x Magazines/*.sh\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Creating Linux configuration references. Please wait.&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\!*/*/install.sh\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/^\\(.*\\)\\.bat\\(.*\\)/&amp;amp;\\n\\1.sh\\2/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:In short, when the '''Setup_with_regeneration.sh''' script is executed, the code added to the bottom does the following:&lt;br /&gt;
:#Copies the ScummVM SVN application data to Wine&lt;br /&gt;
:#Fixes zip archive references&lt;br /&gt;
:#Fixes batch file reference inconsistencies&lt;br /&gt;
:#Creates shell files&lt;br /&gt;
:# Makes shell files executable&lt;br /&gt;
:#Prepares shell files for conversion&lt;br /&gt;
:#Adds Linux configuration references to Linux game setups&lt;br /&gt;
:#Adds Linux configuration references to Windows game setups&lt;br /&gt;
:#Adds Linux configuration references to Linux game and magazine launchers&lt;br /&gt;
:#Adds Windows configuration references to Linux game setups&lt;br /&gt;
:#Converts syntax for the Linux shell files from Windows batch to bash&lt;br /&gt;
:#Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:#Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:#Creates DOSBox configuration files for Linux&lt;br /&gt;
:#Makes necessary changes to Linux configuration files&lt;br /&gt;
:#Applies game specific fixes to Linux files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the inconsistency fixes and game specific changes are manually added to the '''regenerate.sh''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
===Note on Updates===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''IMPORTANT:'''&amp;lt;/span&amp;gt; If preparing a full copy of the eXoDOS Linux patch, any existing eXoDOS update files should be considered before packaging the files for final release. The initial eXoDOS 5 Linux patch included the eXoDOS 5.1 update. For completeness as well as the convenience of anyone installing the Linux patch without an active Internet connection, any new versions of '''exodos5-linux-patch.zip''' should always include the latest updates. At the same time, a cumulative update patch file, '''update_linux.zip''', is also maintained for people that would like to simply update their already installed version of eXoDOS 5. The details of how the update works will be discussed later. However, it should be noted that both the '''exodos5-linux-patch.zip''' file as well as '''update_linux.zip''' should contain the latest versions of everything at their time of release.&lt;br /&gt;
&lt;br /&gt;
:In the '''exodos5-linux-patch.zip''' file, any cumulative updates for bat, conf, and sh files are merged into the '''Content/!DOSmetadata_linux.zip''' and '''Content/Magazines_linux.zip''' files, overwriting the ones from the eXoDOS 5.0 release. Updates to game archives, on the other hand, are included in the '''eXo/util/update_linux.zip''' file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''CAUTION:'''&amp;lt;/span&amp;gt; The '''update_linux.zip''' file hosted online is for cumulative updates and is different than the '''eXo/util/update_linux.zip''' file contained in the full release of the Linux patch. Any references in this document to the two files can be differentiated by the presence or absence of '''eXo/util/'''.&lt;br /&gt;
&lt;br /&gt;
===Preparing For Manual Conversion===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
===Packaging Files For Release===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=649</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=649"/>
		<updated>2024-09-11T21:06:35Z</updated>

		<summary type="html">&lt;p&gt;Parricc: /* Step 3 - Installing eXoDOS */ Updated to eXoDOS 6.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is a complete conversion to make all features of eXoDOS work on Linux systems just as they would in Windows. An official Linux frontend, called exogui, is included as part of this conversion. Additionally, the patch is written to ensure that the collection works as expected in dual-boot environments. After the Linux patch is installed, if eXoDOS is updated or games are installed, this will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
As it is encouraged to seed the collection, installing the Linux patch will not alter any torrent files. The patch does not change the existing eXoDOS framework, but instead supplements it.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest eXoDOS Linux Patch is for version 6.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Supported distributions include:&lt;br /&gt;
*Arch / Manjaro Linux / SteamOS&lt;br /&gt;
*Fedora&lt;br /&gt;
*Ubuntu (and Ubuntu-based distributions) / Debian&lt;br /&gt;
*Nearly any x86_64 distro that has flatpak support&lt;br /&gt;
Unsupported:&lt;br /&gt;
&lt;br /&gt;
*ARM, IBM Power, and RISC-V computers and devices are '''not''' supported at this time. This includes the Raspberry Pi. We need someone to volunteer to build ARM versions of the flatpaks for support to be added.&lt;br /&gt;
* macOS and BSD are also unsupported at this time. Until we have a volunteer to add macOS support to the frontend, this is unlikely to change. Backend support exists for the eXoDREAMM project, and the backend for eXoDOS has been partially converted in case we get a volunteer.&lt;br /&gt;
&lt;br /&gt;
===Installation Process===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive====&lt;br /&gt;
&lt;br /&gt;
:First, the '''eXoDOS 6.4 Linux Patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
:Copy the '''eXoDOS 6.4 Linux Patch.zip''' file to the root directory of your freshly downloaded eXoDOS 6.4 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located)&lt;br /&gt;
:Then, in your file manager, right click on the '''eXoDOS 6.4 Linux Patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
:Alternatively, you may open the zip with a utility such as Ark, and drag the files and folders into the root eXoDOS directory.&lt;br /&gt;
:The important thing is to ensure the files are extracted into the root directory of the collection, and not into a newly created subdirectory.&lt;br /&gt;
:If you have also downloaded the eXoDOS Media Pack, ensure it has been downloaded the the same directory as the base eXoDOS collection. Then, download and place the &amp;quot;''DOS_linux_Magazines.zip''&amp;quot; file in the Content directory. Do not unzip this file.&lt;br /&gt;
:After this has been done, proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
====Step 2 - Installing System Dependencies==== &lt;br /&gt;
&lt;br /&gt;
:The next step is to install the software needed to run the collection. The '''install_dependencies.command''' script will run you through a guided setup to do this.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; If you are using Thunar or XFCE, you will first need to enable running shell files as executables. To do this, open a terminal and run the following command:   &amp;lt;code&amp;gt;xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set true&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;In your file manager, double-click on '''install_dependencies.command''' to start the dependency installer. If you are asked whether you want to execute the file, click yes.&lt;br /&gt;
:If you are using Nautilus or Gnome and are not given this option to run by double-clicking, right click the file and select Run as Program.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; This step will need to be done on any Linux computer that has not previously ran eXoDOS 6, even if the full setup has already been completed on a portable drive. Also note that the flatpaks are installed at a user level. As such, other users will need to run the dependency installer separately as well. If you update your video drivers, you may also need to follow that up with a flatpak update. Rerunning a dependency installer installation will handle that for you.&amp;lt;/blockquote&amp;gt;Upon running the dependency installer, you will be prompted with a guided setup that gives the following options:  &amp;lt;br /&amp;gt;The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.  To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instruction.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[P]roceed with installation&lt;br /&gt;
[D]ownload the latest setup&lt;br /&gt;
[R]emove all installed eXo packages&lt;br /&gt;
[A]bort installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:The &amp;quot;''[D]ownload the latest setup''&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version. To proceed with installing the dependencies, choose &amp;quot;''[P]roceed with installation''&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
:In your file manager, double-click on the '''eXoDOS Setup.command''' file to start the setup, and then follow the on-screen instructions. If you are asked whether you want to execute the file, click yes. If you are using Nautilus or Gnome and are not given this option, right click the file and select Run as Program.&lt;br /&gt;
:&lt;br /&gt;
:The setup file will check for required files and warn you if any are missing. It will also check for files from the Media Pack Add-On.&lt;br /&gt;
&lt;br /&gt;
:This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers.&lt;br /&gt;
&lt;br /&gt;
:It is important to run the setup and not extract any files manually. Not only are the files location sensitive, but the setup makes some changes to them.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
:You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off.&lt;br /&gt;
&lt;br /&gt;
:Once it is complete, run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. However, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to run the '''eXoDOS Updater''' to update the shortcut to point to the new location. The '''eXoDOS Updater''' will allow you to reconfigure all of the installation options instead of running through the entire setup process again.&lt;br /&gt;
&lt;br /&gt;
===Using eXoDOS===&lt;br /&gt;
&lt;br /&gt;
====exogui====&lt;br /&gt;
&lt;br /&gt;
:A member of our Discord, jelcynek, has currently created a Linux frontend, exogui, which is a fork of Flashpoint Launcher. It is still very much a work in progress, but it has been bundled with eXoDOS. As the frontend improves, newer versions will be included with updates.&lt;br /&gt;
:Running '''start-exogui''' will start the frontend.&lt;br /&gt;
&lt;br /&gt;
:The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
====Playing Without Frontend ====&lt;br /&gt;
&lt;br /&gt;
:After downloading the collection, installing the dependencies with '''install_linux_dependencies.sh''', and running '''Setup.sh''', you can play the games in the following way without a frontend:&lt;br /&gt;
:Navigate to the '''eXo/eXoDOS/!dos/''' directory. Here, you will find 7200 game directories that contain launcher and setup shell files. These files should be executed from a terminal window.&lt;br /&gt;
&lt;br /&gt;
:For example, from the root directory of the collection, you could type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd eXo/eXoDOS/\!dos/mi2/&lt;br /&gt;
bash Monkey\ Island\ 2\ -\ LeChuck\'s\ Revenge\ \(1991\).sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; if you have bash completion enabled, you can press the tab key to make typing name of a script easier.&lt;br /&gt;
&lt;br /&gt;
:The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
:Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
:If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will lose any saved games, high scores, or other settings you have defined since the game was installed. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler. If the scaler refuses to change, you will have to rerun the Setup file in order to extract clean copies of each games conf file.&lt;br /&gt;
&lt;br /&gt;
====Creating Desktop Shortcuts==== &lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Exec=x-terminal-emulator -e &amp;quot;/home/username/eXoDOS/eXo/eXoDOS/\\!dos/mi1/Secret\\ of\\ Monkey\\ Island\\,\\ The\\ \\(1990\\).sh&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/monkeyisland_icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
Type=Application&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changelog===&lt;br /&gt;
&lt;br /&gt;
====Changes to Version 5.1.linux1====&lt;br /&gt;
&lt;br /&gt;
:Utilities:&lt;br /&gt;
:*Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:*120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:*Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:*LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
===Files===&lt;br /&gt;
&lt;br /&gt;
====exodos5-linux-patch.zip====&lt;br /&gt;
:'''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This builds upon the existing file and directory structure of eXoDOS. &lt;br /&gt;
&lt;br /&gt;
:*'''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:*'''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:*'''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:*'''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:*'''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:*'''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
====util_linux.zip==== &lt;br /&gt;
:'''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:*'''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:*'''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:*'''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:*'''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:*'''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:*'''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
====Custom Scripts====&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:*'''eXo/Update/update.bat'''&lt;br /&gt;
:*'''eXo/Update/update.sh'''&lt;br /&gt;
:*'''eXo/Update/update_installed.sh'''&lt;br /&gt;
:*'''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
====eXo/util/converter.sh====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
:To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
:Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function=====&lt;br /&gt;
&lt;br /&gt;
:The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/regenerate.sh====&lt;br /&gt;
&lt;br /&gt;
:The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; '''Setup_with_regeneration.sh''' does not handle the flatpak/native check in the '''update.sh''' or '''update.bat''' file. The '''util_linux.zip''' file is different from '''util.zip''' in many ways. This script does not focus on the contents of those files, even if was used to prepare them originally. If '''regenerate.sh''' or '''converter.sh''' have been updated, please ensure that you have also updated the '''util_linux.zip''' file with the newer versions. &lt;br /&gt;
&lt;br /&gt;
:The '''regenerate.sh''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, copies the '''Setup.bat''' file to '''Setup_with_regeneration.sh''', and converts the newly created file to bash. From here, the script makes several changes to the '''Setup_with_regeneration.sh''' file: &lt;br /&gt;
:#Any file reference case inconsistencies are fixed, all '''util.zip''' references are changed to '''util_linux.zip''', and additionally needed unzip directives are added.&lt;br /&gt;
:#Checks are added to the beginning of the script to ensure it is located in the root directory of the eXoDOS collection.&lt;br /&gt;
:#Additional code is added to the end of the script to generate Linux versions for all config files and Windows batch files.&lt;br /&gt;
&lt;br /&gt;
:All text manipulation for the above steps is done through sed commands. The final step will scare many people away as it involves numerous sed commands within a sed command. This means each line has a great deal of escape sequences.&lt;br /&gt;
&lt;br /&gt;
:Here is a code snippet to give an idea of what some of this looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sed -i -e '$a\&lt;br /&gt;
\&lt;br /&gt;
clear\&lt;br /&gt;
echo &amp;quot;The rest of the setup is automated but could take over an hour.&amp;quot;\&lt;br /&gt;
echo &amp;quot;&amp;quot;\&lt;br /&gt;
cd &amp;quot;$initialDir&amp;quot;\&lt;br /&gt;
cd eXo\&lt;br /&gt;
echo &amp;quot;Copying scummvm svn application data to Wine.&amp;quot;\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;md %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;copy .\\\util\\\scummvm.ini %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM\\\scummvm.ini&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing zip archive references.&amp;quot;\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing batch file reference inconsistencies. This may take several minutes.&amp;quot;\&lt;br /&gt;
[ `ls -1 Update/*.bat 2&amp;gt;/dev/null | wc -w` -gt 0 ] &amp;amp;&amp;amp; sed -i -e &amp;quot;s/^goto :eof/goto :end/&amp;quot; Update/*.bat 2&amp;gt;/dev/null\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.\\\\\\download\\\\\\/.\\\\\\DOWNLOAD\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exodos\\\\\\/eXoDOS\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\/eXo\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\update/eXo\\\\\\Update/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/PPMode/PPmode/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/c\\*\\.rom/C*.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.rom/.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s|mt32\\\\\\soundcanvas\\.sf2|mt32\\\\\\SoundCanvas.sf2|I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/update\\.zip/update_linux.zip/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.exo/ver_linux.exo/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.txt/ver_linux.txt/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/findstr \\/C/ s/\\&amp;quot;%GameName/\\&amp;quot;:%GameName/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/fullindex=/ s/\\&amp;quot;\\$gamename/\\&amp;quot;:\\$gamename/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
echo &amp;quot;Creating game shell files.&amp;quot;\&lt;br /&gt;
echo &amp;quot;Preparing files for conversion...&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*.sh\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*/*.sh\&lt;br /&gt;
chmod +x Update/*.sh\&lt;br /&gt;
chmod +x Magazines/*.sh\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Creating Linux configuration references. Please wait.&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\!*/*/install.sh\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/^\\(.*\\)\\.bat\\(.*\\)/&amp;amp;\\n\\1.sh\\2/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:In short, when the '''Setup_with_regeneration.sh''' script is executed, the code added to the bottom does the following:&lt;br /&gt;
:#Copies the ScummVM SVN application data to Wine&lt;br /&gt;
:#Fixes zip archive references&lt;br /&gt;
:#Fixes batch file reference inconsistencies&lt;br /&gt;
:#Creates shell files&lt;br /&gt;
:# Makes shell files executable&lt;br /&gt;
:#Prepares shell files for conversion&lt;br /&gt;
:#Adds Linux configuration references to Linux game setups&lt;br /&gt;
:#Adds Linux configuration references to Windows game setups&lt;br /&gt;
:#Adds Linux configuration references to Linux game and magazine launchers&lt;br /&gt;
:#Adds Windows configuration references to Linux game setups&lt;br /&gt;
:#Converts syntax for the Linux shell files from Windows batch to bash&lt;br /&gt;
:#Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:#Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:#Creates DOSBox configuration files for Linux&lt;br /&gt;
:#Makes necessary changes to Linux configuration files&lt;br /&gt;
:#Applies game specific fixes to Linux files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the inconsistency fixes and game specific changes are manually added to the '''regenerate.sh''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
===Note on Updates===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''IMPORTANT:'''&amp;lt;/span&amp;gt; If preparing a full copy of the eXoDOS Linux patch, any existing eXoDOS update files should be considered before packaging the files for final release. The initial eXoDOS 5 Linux patch included the eXoDOS 5.1 update. For completeness as well as the convenience of anyone installing the Linux patch without an active Internet connection, any new versions of '''exodos5-linux-patch.zip''' should always include the latest updates. At the same time, a cumulative update patch file, '''update_linux.zip''', is also maintained for people that would like to simply update their already installed version of eXoDOS 5. The details of how the update works will be discussed later. However, it should be noted that both the '''exodos5-linux-patch.zip''' file as well as '''update_linux.zip''' should contain the latest versions of everything at their time of release.&lt;br /&gt;
&lt;br /&gt;
:In the '''exodos5-linux-patch.zip''' file, any cumulative updates for bat, conf, and sh files are merged into the '''Content/!DOSmetadata_linux.zip''' and '''Content/Magazines_linux.zip''' files, overwriting the ones from the eXoDOS 5.0 release. Updates to game archives, on the other hand, are included in the '''eXo/util/update_linux.zip''' file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''CAUTION:'''&amp;lt;/span&amp;gt; The '''update_linux.zip''' file hosted online is for cumulative updates and is different than the '''eXo/util/update_linux.zip''' file contained in the full release of the Linux patch. Any references in this document to the two files can be differentiated by the presence or absence of '''eXo/util/'''.&lt;br /&gt;
&lt;br /&gt;
===Preparing For Manual Conversion===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
===Packaging Files For Release===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=648</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=648"/>
		<updated>2024-09-11T20:41:42Z</updated>

		<summary type="html">&lt;p&gt;Parricc: eXoDOS 6 description, and installation process steps 1-2.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is a complete conversion to make all features of eXoDOS work on Linux systems just as they would in Windows. An official Linux frontend, called exogui, is included as part of this conversion. Additionally, the patch is written to ensure that the collection works as expected in dual-boot environments. After the Linux patch is installed, if eXoDOS is updated or games are installed, this will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
As it is encouraged to seed the collection, installing the Linux patch will not alter any torrent files. The patch does not change the existing eXoDOS framework, but instead supplements it.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest eXoDOS Linux Patch is for version 6.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Supported distributions include:&lt;br /&gt;
*Arch / Manjaro Linux / SteamOS&lt;br /&gt;
*Fedora&lt;br /&gt;
*Ubuntu (and Ubuntu-based distributions) / Debian&lt;br /&gt;
*Nearly any x86_64 distro that has flatpak support&lt;br /&gt;
Unsupported:&lt;br /&gt;
&lt;br /&gt;
*ARM, IBM Power, and RISC-V computers and devices are '''not''' supported at this time. This includes the Raspberry Pi. We need someone to volunteer to build ARM versions of the flatpaks for support to be added.&lt;br /&gt;
* macOS and BSD are also unsupported at this time. Until we have a volunteer to add macOS support to the frontend, this is unlikely to change. Backend support exists for the eXoDREAMM project, and the backend for eXoDOS has been partially converted in case we get a volunteer.&lt;br /&gt;
&lt;br /&gt;
===Installation Process===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive====&lt;br /&gt;
&lt;br /&gt;
:First, the '''eXoDOS 6.4 Linux Patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
:Copy the '''eXoDOS 6.4 Linux Patch.zip''' file to the root directory of your freshly downloaded eXoDOS 6.4 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located)&lt;br /&gt;
:Then, in your file manager, right click on the '''eXoDOS 6.4 Linux Patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
:Alternatively, you may open the zip with a utility such as Ark, and drag the files and folders into the root eXoDOS directory.&lt;br /&gt;
:The important thing is to ensure the files are extracted into the root directory of the collection, and not into a newly created subdirectory.&lt;br /&gt;
:If you have also downloaded the eXoDOS Media Pack, ensure it has been downloaded the the same directory as the base eXoDOS collection. Then, download and place the &amp;quot;''DOS_linux_Magazines.zip''&amp;quot; file in the Content directory. Do not unzip this file.&lt;br /&gt;
:After this has been done, proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
====Step 2 - Installing System Dependencies==== &lt;br /&gt;
&lt;br /&gt;
:The next step is to install the software needed to run the collection. The '''install_dependencies.command''' script will run you through a guided setup to do this.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; If you are using Thunar or XFCE, you will first need to enable running shell files as executables. To do this, open a terminal and run the following command:   &amp;lt;code&amp;gt;xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set true&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;In your file manager, double-click on '''install_dependencies.command''' to start the dependency installer. If you are asked whether you want to execute the file, click yes.&lt;br /&gt;
:If you are using Nautilus or Gnome and are not given this option to run by double-clicking, right click the file and select Run as Program.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; This step will need to be done on any Linux computer that has not previously ran eXoDOS 6, even if the full setup has already been completed on a portable drive. Also note that the flatpaks are installed at a user level. As such, other users will need to run the dependency installer separately as well. If you update your video drivers, you may also need to follow that up with a flatpak update. Rerunning a dependency installer installation will handle that for you.&amp;lt;/blockquote&amp;gt;Upon running the dependency installer, you will be prompted with a guided setup that gives the following options:  &amp;lt;br /&amp;gt;The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.  To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instruction.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[P]roceed with installation&lt;br /&gt;
[D]ownload the latest setup&lt;br /&gt;
[R]emove all installed eXo packages&lt;br /&gt;
[A]bort installation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
:The &amp;quot;''[D]ownload the latest setup''&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version. To proceed with installing the dependencies, choose &amp;quot;''[P]roceed with installation''&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
:To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
:This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
:Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
:You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960. &lt;br /&gt;
&lt;br /&gt;
:Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
====Important Note==== &lt;br /&gt;
:*&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:*Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
===Using eXoDOS===&lt;br /&gt;
&lt;br /&gt;
====exogui====&lt;br /&gt;
&lt;br /&gt;
:A member of our Discord, jelcynek, has currently created a Linux frontend, exogui, which is a fork of Flashpoint Launcher. It is still very much a work in progress, but it has been bundled with eXoDOS. As the frontend improves, newer versions will be included with updates.&lt;br /&gt;
:Running '''start-exogui''' will start the frontend.&lt;br /&gt;
&lt;br /&gt;
:The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
====Playing Without Frontend ====&lt;br /&gt;
&lt;br /&gt;
:After downloading the collection, installing the dependencies with '''install_linux_dependencies.sh''', and running '''Setup.sh''', you can play the games in the following way without a frontend:&lt;br /&gt;
:Navigate to the '''eXo/eXoDOS/!dos/''' directory. Here, you will find 7200 game directories that contain launcher and setup shell files. These files should be executed from a terminal window.&lt;br /&gt;
&lt;br /&gt;
:For example, from the root directory of the collection, you could type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd eXo/eXoDOS/\!dos/mi2/&lt;br /&gt;
bash Monkey\ Island\ 2\ -\ LeChuck\'s\ Revenge\ \(1991\).sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; if you have bash completion enabled, you can press the tab key to make typing name of a script easier.&lt;br /&gt;
&lt;br /&gt;
:The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
:Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
:If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will lose any saved games, high scores, or other settings you have defined since the game was installed. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler. If the scaler refuses to change, you will have to rerun the Setup file in order to extract clean copies of each games conf file.&lt;br /&gt;
&lt;br /&gt;
====Creating Desktop Shortcuts==== &lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Exec=x-terminal-emulator -e &amp;quot;/home/username/eXoDOS/eXo/eXoDOS/\\!dos/mi1/Secret\\ of\\ Monkey\\ Island\\,\\ The\\ \\(1990\\).sh&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/monkeyisland_icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
Type=Application&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changelog===&lt;br /&gt;
&lt;br /&gt;
====Changes to Version 5.1.linux1====&lt;br /&gt;
&lt;br /&gt;
:Utilities:&lt;br /&gt;
:*Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:*120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:*Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:*LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
===Files===&lt;br /&gt;
&lt;br /&gt;
====exodos5-linux-patch.zip====&lt;br /&gt;
:'''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This builds upon the existing file and directory structure of eXoDOS. &lt;br /&gt;
&lt;br /&gt;
:*'''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:*'''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:*'''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:*'''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:*'''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:*'''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
====util_linux.zip==== &lt;br /&gt;
:'''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:*'''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:*'''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:*'''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:*'''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:*'''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:*'''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
====Custom Scripts====&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:*'''eXo/Update/update.bat'''&lt;br /&gt;
:*'''eXo/Update/update.sh'''&lt;br /&gt;
:*'''eXo/Update/update_installed.sh'''&lt;br /&gt;
:*'''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
====eXo/util/converter.sh====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
:To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
:Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function=====&lt;br /&gt;
&lt;br /&gt;
:The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/regenerate.sh====&lt;br /&gt;
&lt;br /&gt;
:The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; '''Setup_with_regeneration.sh''' does not handle the flatpak/native check in the '''update.sh''' or '''update.bat''' file. The '''util_linux.zip''' file is different from '''util.zip''' in many ways. This script does not focus on the contents of those files, even if was used to prepare them originally. If '''regenerate.sh''' or '''converter.sh''' have been updated, please ensure that you have also updated the '''util_linux.zip''' file with the newer versions. &lt;br /&gt;
&lt;br /&gt;
:The '''regenerate.sh''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, copies the '''Setup.bat''' file to '''Setup_with_regeneration.sh''', and converts the newly created file to bash. From here, the script makes several changes to the '''Setup_with_regeneration.sh''' file: &lt;br /&gt;
:#Any file reference case inconsistencies are fixed, all '''util.zip''' references are changed to '''util_linux.zip''', and additionally needed unzip directives are added.&lt;br /&gt;
:#Checks are added to the beginning of the script to ensure it is located in the root directory of the eXoDOS collection.&lt;br /&gt;
:#Additional code is added to the end of the script to generate Linux versions for all config files and Windows batch files.&lt;br /&gt;
&lt;br /&gt;
:All text manipulation for the above steps is done through sed commands. The final step will scare many people away as it involves numerous sed commands within a sed command. This means each line has a great deal of escape sequences.&lt;br /&gt;
&lt;br /&gt;
:Here is a code snippet to give an idea of what some of this looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sed -i -e '$a\&lt;br /&gt;
\&lt;br /&gt;
clear\&lt;br /&gt;
echo &amp;quot;The rest of the setup is automated but could take over an hour.&amp;quot;\&lt;br /&gt;
echo &amp;quot;&amp;quot;\&lt;br /&gt;
cd &amp;quot;$initialDir&amp;quot;\&lt;br /&gt;
cd eXo\&lt;br /&gt;
echo &amp;quot;Copying scummvm svn application data to Wine.&amp;quot;\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;md %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;copy .\\\util\\\scummvm.ini %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM\\\scummvm.ini&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing zip archive references.&amp;quot;\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing batch file reference inconsistencies. This may take several minutes.&amp;quot;\&lt;br /&gt;
[ `ls -1 Update/*.bat 2&amp;gt;/dev/null | wc -w` -gt 0 ] &amp;amp;&amp;amp; sed -i -e &amp;quot;s/^goto :eof/goto :end/&amp;quot; Update/*.bat 2&amp;gt;/dev/null\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.\\\\\\download\\\\\\/.\\\\\\DOWNLOAD\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exodos\\\\\\/eXoDOS\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\/eXo\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\update/eXo\\\\\\Update/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/PPMode/PPmode/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/c\\*\\.rom/C*.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.rom/.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s|mt32\\\\\\soundcanvas\\.sf2|mt32\\\\\\SoundCanvas.sf2|I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/update\\.zip/update_linux.zip/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.exo/ver_linux.exo/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.txt/ver_linux.txt/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/findstr \\/C/ s/\\&amp;quot;%GameName/\\&amp;quot;:%GameName/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/fullindex=/ s/\\&amp;quot;\\$gamename/\\&amp;quot;:\\$gamename/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
echo &amp;quot;Creating game shell files.&amp;quot;\&lt;br /&gt;
echo &amp;quot;Preparing files for conversion...&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*.sh\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*/*.sh\&lt;br /&gt;
chmod +x Update/*.sh\&lt;br /&gt;
chmod +x Magazines/*.sh\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Creating Linux configuration references. Please wait.&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\!*/*/install.sh\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/^\\(.*\\)\\.bat\\(.*\\)/&amp;amp;\\n\\1.sh\\2/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:In short, when the '''Setup_with_regeneration.sh''' script is executed, the code added to the bottom does the following:&lt;br /&gt;
:#Copies the ScummVM SVN application data to Wine&lt;br /&gt;
:#Fixes zip archive references&lt;br /&gt;
:#Fixes batch file reference inconsistencies&lt;br /&gt;
:#Creates shell files&lt;br /&gt;
:# Makes shell files executable&lt;br /&gt;
:#Prepares shell files for conversion&lt;br /&gt;
:#Adds Linux configuration references to Linux game setups&lt;br /&gt;
:#Adds Linux configuration references to Windows game setups&lt;br /&gt;
:#Adds Linux configuration references to Linux game and magazine launchers&lt;br /&gt;
:#Adds Windows configuration references to Linux game setups&lt;br /&gt;
:#Converts syntax for the Linux shell files from Windows batch to bash&lt;br /&gt;
:#Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:#Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:#Creates DOSBox configuration files for Linux&lt;br /&gt;
:#Makes necessary changes to Linux configuration files&lt;br /&gt;
:#Applies game specific fixes to Linux files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the inconsistency fixes and game specific changes are manually added to the '''regenerate.sh''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
===Note on Updates===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''IMPORTANT:'''&amp;lt;/span&amp;gt; If preparing a full copy of the eXoDOS Linux patch, any existing eXoDOS update files should be considered before packaging the files for final release. The initial eXoDOS 5 Linux patch included the eXoDOS 5.1 update. For completeness as well as the convenience of anyone installing the Linux patch without an active Internet connection, any new versions of '''exodos5-linux-patch.zip''' should always include the latest updates. At the same time, a cumulative update patch file, '''update_linux.zip''', is also maintained for people that would like to simply update their already installed version of eXoDOS 5. The details of how the update works will be discussed later. However, it should be noted that both the '''exodos5-linux-patch.zip''' file as well as '''update_linux.zip''' should contain the latest versions of everything at their time of release.&lt;br /&gt;
&lt;br /&gt;
:In the '''exodos5-linux-patch.zip''' file, any cumulative updates for bat, conf, and sh files are merged into the '''Content/!DOSmetadata_linux.zip''' and '''Content/Magazines_linux.zip''' files, overwriting the ones from the eXoDOS 5.0 release. Updates to game archives, on the other hand, are included in the '''eXo/util/update_linux.zip''' file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''CAUTION:'''&amp;lt;/span&amp;gt; The '''update_linux.zip''' file hosted online is for cumulative updates and is different than the '''eXo/util/update_linux.zip''' file contained in the full release of the Linux patch. Any references in this document to the two files can be differentiated by the presence or absence of '''eXo/util/'''.&lt;br /&gt;
&lt;br /&gt;
===Preparing For Manual Conversion===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
===Packaging Files For Release===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=647</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=647"/>
		<updated>2024-09-11T20:15:20Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is a complete conversion to make all features of eXoDOS work on Linux systems just as they would in Windows. An official Linux frontend, called exogui, is included as part of this conversion. Additionally, the patch is written to ensure that the collection works as expected in dual-boot environments. After the Linux patch is installed, if eXoDOS is updated or games are installed, this will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
As it is encouraged to seed the collection, installing the Linux patch will not alter any torrent files. The patch does not change the existing eXoDOS framework, but instead supplements it.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest eXoDOS Linux Patch is for version 6.4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Supported distributions include:&lt;br /&gt;
*Arch / Manjaro Linux / SteamOS&lt;br /&gt;
*Fedora&lt;br /&gt;
*Ubuntu (and Ubuntu-based distributions) / Debian&lt;br /&gt;
*Nearly any x86_64 distro that has flatpak support&lt;br /&gt;
Unsupported:&lt;br /&gt;
&lt;br /&gt;
*ARM, IBM Power, and RISC-V computers and devices are '''not''' supported at this time. This includes the Raspberry Pi. We need someone to volunteer to build ARM versions of the flatpaks for support to be added.&lt;br /&gt;
* macOS and BSD are also unsupported at this time. Until we have a volunteer to add macOS support to the frontend, this is unlikely to change. Backend support exists for the eXoDREAMM project, and the backend for eXoDOS has been partially converted in case we get a volunteer.&lt;br /&gt;
&lt;br /&gt;
===Installation Process===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive====&lt;br /&gt;
&lt;br /&gt;
:First, the '''eXoDOS 6.4 Linux Patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
:Copy the '''eXoDOS 6.4 Linux Patch.zip''' file to the root directory of your freshly downloaded eXoDOS 6.4 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located)&lt;br /&gt;
:Then, in your file manager, right click on the '''eXoDOS 6.4 Linux Patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
:Alternatively, you may open the zip with a utility such as Ark, and drag the files and folders into the root eXoDOS directory.&lt;br /&gt;
:The important thing is to ensure the files are extracted into the root directory of the collection, and not into a newly created subdirectory.&lt;br /&gt;
:After this has been done, proceed to the next step.&lt;br /&gt;
&lt;br /&gt;
====Step 2 - Installing Dependencies==== &lt;br /&gt;
&lt;br /&gt;
:The next step is to install the software needed to run the collection. The '''install_dependencies.command''' script will run you through a guided setup to do this.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; If you are using Thunar or XFCE, you will first need to enable running shell files as executables. To do this, open a terminal and run the following command:   &amp;lt;code&amp;gt;xfconf-query --channel thunar --property /misc-exec-shell-scripts-by-default --create --type bool --set true&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;In your file manager, double-click on '''install_dependencies.command''' to start the dependency installer. If you are asked whether you want to execute the file, click yes.&lt;br /&gt;
:If you are using Nautilus or Gnome and are not given this option to run by double-clicking, right click the file and select Run as Program.&amp;lt;blockquote&amp;gt;&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; This step will need to be done on any Linux computer that has not previously ran eXoDOS 6, even if the full setup has already been completed on a portable drive. Also note that the flatpaks are installed at a user level. As such, other users will need to run the dependency installer separately as well. If you update your video drivers, you may also need to follow that up with a flatpak update. Rerunning a dependency installer installation will handle that for you.&amp;lt;/blockquote&amp;gt;Upon running the dependency installer, you will be prompted with a guided setup that gives the following options:  &amp;lt;br /&amp;gt;The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.  To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[P]roceed with installation&lt;br /&gt;
[D]ownload the latest setup&lt;br /&gt;
[R]emove all installed eXo packages&lt;br /&gt;
[A]bort installation&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;[D]ownload the latest setup&amp;quot; option will only grab the newest version of the eXo Dependency Installer, not eXoDOS itself. This may be useful if there is a problem with the dependency installer or if new flatpaks are needed. If the dependency installer is updated, it should be reran to launch the new version.&lt;br /&gt;
&lt;br /&gt;
To proceed with installing the dependencies, choose &amp;quot;[P]roceed with installation&amp;quot; and follow the on-screen instructions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: &lt;br /&gt;
&lt;br /&gt;
:*&lt;br /&gt;
&lt;br /&gt;
:Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
:If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord. &lt;br /&gt;
&lt;br /&gt;
:When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
:To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
:This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
:Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
:You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960. &lt;br /&gt;
&lt;br /&gt;
:Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
:The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
====Important Note==== &lt;br /&gt;
:*&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:*Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
===Using eXoDOS===&lt;br /&gt;
&lt;br /&gt;
====exogui====&lt;br /&gt;
&lt;br /&gt;
:A member of our Discord, jelcynek, has currently created a Linux frontend, exogui, which is a fork of Flashpoint Launcher. It is still very much a work in progress, but it has been bundled with eXoDOS. As the frontend improves, newer versions will be included with updates.&lt;br /&gt;
:Running '''start-exogui''' will start the frontend.&lt;br /&gt;
&lt;br /&gt;
:The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
====Playing Without Frontend ====&lt;br /&gt;
&lt;br /&gt;
:After downloading the collection, installing the dependencies with '''install_linux_dependencies.sh''', and running '''Setup.sh''', you can play the games in the following way without a frontend:&lt;br /&gt;
:Navigate to the '''eXo/eXoDOS/!dos/''' directory. Here, you will find 7200 game directories that contain launcher and setup shell files. These files should be executed from a terminal window.&lt;br /&gt;
&lt;br /&gt;
:For example, from the root directory of the collection, you could type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd eXo/eXoDOS/\!dos/mi2/&lt;br /&gt;
bash Monkey\ Island\ 2\ -\ LeChuck\'s\ Revenge\ \(1991\).sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; if you have bash completion enabled, you can press the tab key to make typing name of a script easier.&lt;br /&gt;
&lt;br /&gt;
:The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
:Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
:If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will lose any saved games, high scores, or other settings you have defined since the game was installed. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler. If the scaler refuses to change, you will have to rerun the Setup file in order to extract clean copies of each games conf file.&lt;br /&gt;
&lt;br /&gt;
====Creating Desktop Shortcuts==== &lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Exec=x-terminal-emulator -e &amp;quot;/home/username/eXoDOS/eXo/eXoDOS/\\!dos/mi1/Secret\\ of\\ Monkey\\ Island\\,\\ The\\ \\(1990\\).sh&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/monkeyisland_icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
Type=Application&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Changelog===&lt;br /&gt;
&lt;br /&gt;
====Changes to Version 5.1.linux1====&lt;br /&gt;
&lt;br /&gt;
:Utilities:&lt;br /&gt;
:*Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:*120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:*Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:*LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
===Files===&lt;br /&gt;
&lt;br /&gt;
====exodos5-linux-patch.zip====&lt;br /&gt;
:'''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:This builds upon the existing file and directory structure of eXoDOS. &lt;br /&gt;
&lt;br /&gt;
:*'''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:*'''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:*'''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:*'''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:*'''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:*'''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
====util_linux.zip==== &lt;br /&gt;
:'''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:*'''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:*'''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:*'''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:*'''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:*'''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:*'''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:*'''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:*'''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
====Custom Scripts====&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:*'''eXo/Update/update.bat'''&lt;br /&gt;
:*'''eXo/Update/update.sh'''&lt;br /&gt;
:*'''eXo/Update/update_installed.sh'''&lt;br /&gt;
:*'''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
====eXo/util/converter.sh====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
:To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
:Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function=====&lt;br /&gt;
&lt;br /&gt;
:The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
====eXo/util/regenerate.sh====&lt;br /&gt;
&lt;br /&gt;
:The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; '''Setup_with_regeneration.sh''' does not handle the flatpak/native check in the '''update.sh''' or '''update.bat''' file. The '''util_linux.zip''' file is different from '''util.zip''' in many ways. This script does not focus on the contents of those files, even if was used to prepare them originally. If '''regenerate.sh''' or '''converter.sh''' have been updated, please ensure that you have also updated the '''util_linux.zip''' file with the newer versions. &lt;br /&gt;
&lt;br /&gt;
:The '''regenerate.sh''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, copies the '''Setup.bat''' file to '''Setup_with_regeneration.sh''', and converts the newly created file to bash. From here, the script makes several changes to the '''Setup_with_regeneration.sh''' file: &lt;br /&gt;
:#Any file reference case inconsistencies are fixed, all '''util.zip''' references are changed to '''util_linux.zip''', and additionally needed unzip directives are added.&lt;br /&gt;
:#Checks are added to the beginning of the script to ensure it is located in the root directory of the eXoDOS collection.&lt;br /&gt;
:#Additional code is added to the end of the script to generate Linux versions for all config files and Windows batch files.&lt;br /&gt;
&lt;br /&gt;
:All text manipulation for the above steps is done through sed commands. The final step will scare many people away as it involves numerous sed commands within a sed command. This means each line has a great deal of escape sequences.&lt;br /&gt;
&lt;br /&gt;
:Here is a code snippet to give an idea of what some of this looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sed -i -e '$a\&lt;br /&gt;
\&lt;br /&gt;
clear\&lt;br /&gt;
echo &amp;quot;The rest of the setup is automated but could take over an hour.&amp;quot;\&lt;br /&gt;
echo &amp;quot;&amp;quot;\&lt;br /&gt;
cd &amp;quot;$initialDir&amp;quot;\&lt;br /&gt;
cd eXo\&lt;br /&gt;
echo &amp;quot;Copying scummvm svn application data to Wine.&amp;quot;\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;md %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;copy .\\\util\\\scummvm.ini %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM\\\scummvm.ini&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing zip archive references.&amp;quot;\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing batch file reference inconsistencies. This may take several minutes.&amp;quot;\&lt;br /&gt;
[ `ls -1 Update/*.bat 2&amp;gt;/dev/null | wc -w` -gt 0 ] &amp;amp;&amp;amp; sed -i -e &amp;quot;s/^goto :eof/goto :end/&amp;quot; Update/*.bat 2&amp;gt;/dev/null\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.\\\\\\download\\\\\\/.\\\\\\DOWNLOAD\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exodos\\\\\\/eXoDOS\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\/eXo\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\update/eXo\\\\\\Update/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/PPMode/PPmode/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/c\\*\\.rom/C*.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.rom/.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s|mt32\\\\\\soundcanvas\\.sf2|mt32\\\\\\SoundCanvas.sf2|I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/update\\.zip/update_linux.zip/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.exo/ver_linux.exo/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.txt/ver_linux.txt/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/findstr \\/C/ s/\\&amp;quot;%GameName/\\&amp;quot;:%GameName/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/fullindex=/ s/\\&amp;quot;\\$gamename/\\&amp;quot;:\\$gamename/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
echo &amp;quot;Creating game shell files.&amp;quot;\&lt;br /&gt;
echo &amp;quot;Preparing files for conversion...&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*.sh\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*/*.sh\&lt;br /&gt;
chmod +x Update/*.sh\&lt;br /&gt;
chmod +x Magazines/*.sh\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Creating Linux configuration references. Please wait.&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\!*/*/install.sh\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/^\\(.*\\)\\.bat\\(.*\\)/&amp;amp;\\n\\1.sh\\2/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:In short, when the '''Setup_with_regeneration.sh''' script is executed, the code added to the bottom does the following:&lt;br /&gt;
:#Copies the ScummVM SVN application data to Wine&lt;br /&gt;
:#Fixes zip archive references&lt;br /&gt;
:#Fixes batch file reference inconsistencies&lt;br /&gt;
:#Creates shell files&lt;br /&gt;
:# Makes shell files executable&lt;br /&gt;
:#Prepares shell files for conversion&lt;br /&gt;
:#Adds Linux configuration references to Linux game setups&lt;br /&gt;
:#Adds Linux configuration references to Windows game setups&lt;br /&gt;
:#Adds Linux configuration references to Linux game and magazine launchers&lt;br /&gt;
:#Adds Windows configuration references to Linux game setups&lt;br /&gt;
:#Converts syntax for the Linux shell files from Windows batch to bash&lt;br /&gt;
:#Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:#Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:#Creates DOSBox configuration files for Linux&lt;br /&gt;
:#Makes necessary changes to Linux configuration files&lt;br /&gt;
:#Applies game specific fixes to Linux files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the inconsistency fixes and game specific changes are manually added to the '''regenerate.sh''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
===Note on Updates===&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''IMPORTANT:'''&amp;lt;/span&amp;gt; If preparing a full copy of the eXoDOS Linux patch, any existing eXoDOS update files should be considered before packaging the files for final release. The initial eXoDOS 5 Linux patch included the eXoDOS 5.1 update. For completeness as well as the convenience of anyone installing the Linux patch without an active Internet connection, any new versions of '''exodos5-linux-patch.zip''' should always include the latest updates. At the same time, a cumulative update patch file, '''update_linux.zip''', is also maintained for people that would like to simply update their already installed version of eXoDOS 5. The details of how the update works will be discussed later. However, it should be noted that both the '''exodos5-linux-patch.zip''' file as well as '''update_linux.zip''' should contain the latest versions of everything at their time of release.&lt;br /&gt;
&lt;br /&gt;
:In the '''exodos5-linux-patch.zip''' file, any cumulative updates for bat, conf, and sh files are merged into the '''Content/!DOSmetadata_linux.zip''' and '''Content/Magazines_linux.zip''' files, overwriting the ones from the eXoDOS 5.0 release. Updates to game archives, on the other hand, are included in the '''eXo/util/update_linux.zip''' file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''CAUTION:'''&amp;lt;/span&amp;gt; The '''update_linux.zip''' file hosted online is for cumulative updates and is different than the '''eXo/util/update_linux.zip''' file contained in the full release of the Linux patch. Any references in this document to the two files can be differentiated by the presence or absence of '''eXo/util/'''.&lt;br /&gt;
&lt;br /&gt;
===Preparing For Manual Conversion===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
===Packaging Files For Release===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=617</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=617"/>
		<updated>2021-11-12T22:29:02Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Using eXoDOS ===&lt;br /&gt;
&lt;br /&gt;
==== exogui ====&lt;br /&gt;
&lt;br /&gt;
: A member of our Discord, jelcynek, has currently created a Linux frontend, exogui, which is a fork of Flashpoint Launcher. It is still very much a work in progress, but it has been bundled with eXoDOS. As the frontend improves, newer versions will be included with updates.&lt;br /&gt;
: Running '''start-exogui''' will start the frontend.&lt;br /&gt;
&lt;br /&gt;
: The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
==== Playing Without Frontend ====&lt;br /&gt;
&lt;br /&gt;
: After downloading the collection, installing the dependencies with '''install_linux_dependencies.sh''', and running '''Setup.sh''', you can play the games in the following way without a frontend:&lt;br /&gt;
: Navigate to the '''eXo/eXoDOS/!dos/''' directory. Here, you will find 7200 game directories that contain launcher and setup shell files. These files should be executed from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: For example, from the root directory of the collection, you could type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd eXo/eXoDOS/\!dos/mi2/&lt;br /&gt;
bash Monkey\ Island\ 2\ -\ LeChuck\'s\ Revenge\ \(1991\).sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; if you have bash completion enabled, you can press the tab key to make typing name of a script easier.&lt;br /&gt;
&lt;br /&gt;
: The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
: Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
: If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will lose any saved games, high scores, or other settings you have defined since the game was installed. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler. If the scaler refuses to change, you will have to rerun the Setup file in order to extract clean copies of each games conf file.&lt;br /&gt;
&lt;br /&gt;
==== Creating Desktop Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Exec=x-terminal-emulator -e &amp;quot;/home/username/eXoDOS/eXo/eXoDOS/\\!dos/mi1/Secret\\ of\\ Monkey\\ Island\\,\\ The\\ \\(1990\\).sh&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/monkeyisland_icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
Type=Application&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changelog ===&lt;br /&gt;
&lt;br /&gt;
==== Changes to Version 5.1.linux1 ====&lt;br /&gt;
&lt;br /&gt;
: Utilities:&lt;br /&gt;
:* Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:* 120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:* Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:* LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
==== exodos5-linux-patch.zip ====&lt;br /&gt;
: '''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
:* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:* '''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:* '''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
==== util_linux.zip ====&lt;br /&gt;
: '''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
==== Custom Scripts ====&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:* '''eXo/Update/update.bat'''&lt;br /&gt;
:* '''eXo/Update/update.sh'''&lt;br /&gt;
:* '''eXo/Update/update_installed.sh'''&lt;br /&gt;
:* '''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/converter.sh ====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
: To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
: Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function =====&lt;br /&gt;
&lt;br /&gt;
: The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/regenerate.sh ====&lt;br /&gt;
&lt;br /&gt;
: The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; '''Setup_with_regeneration.sh''' does not handle the flatpak/native check in the '''update.sh''' or '''update.bat''' file. The '''util_linux.zip''' file is different from '''util.zip''' in many ways. This script does not focus on the contents of those files, even if was used to prepare them originally. If '''regenerate.sh''' or '''converter.sh''' have been updated, please ensure that you have also updated the '''util_linux.zip''' file with the newer versions.&lt;br /&gt;
&lt;br /&gt;
: The '''regenerate.sh''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, copies the '''Setup.bat''' file to '''Setup_with_regeneration.sh''', and converts the newly created file to bash. From here, the script makes several changes to the '''Setup_with_regeneration.sh''' file:&lt;br /&gt;
:# Any file reference case inconsistencies are fixed, all '''util.zip''' references are changed to '''util_linux.zip''', and additionally needed unzip directives are added.&lt;br /&gt;
:# Checks are added to the beginning of the script to ensure it is located in the root directory of the eXoDOS collection.&lt;br /&gt;
:# Additional code is added to the end of the script to generate Linux versions for all config files and Windows batch files.&lt;br /&gt;
&lt;br /&gt;
: All text manipulation for the above steps is done through sed commands. The final step will scare many people away as it involves numerous sed commands within a sed command. This means each line has a great deal of escape sequences.&lt;br /&gt;
&lt;br /&gt;
: Here is a code snippet to give an idea of what some of this looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sed -i -e '$a\&lt;br /&gt;
\&lt;br /&gt;
clear\&lt;br /&gt;
echo &amp;quot;The rest of the setup is automated but could take over an hour.&amp;quot;\&lt;br /&gt;
echo &amp;quot;&amp;quot;\&lt;br /&gt;
cd &amp;quot;$initialDir&amp;quot;\&lt;br /&gt;
cd eXo\&lt;br /&gt;
echo &amp;quot;Copying scummvm svn application data to Wine.&amp;quot;\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;md %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;copy .\\\util\\\scummvm.ini %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM\\\scummvm.ini&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing zip archive references.&amp;quot;\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing batch file reference inconsistencies. This may take several minutes.&amp;quot;\&lt;br /&gt;
[ `ls -1 Update/*.bat 2&amp;gt;/dev/null | wc -w` -gt 0 ] &amp;amp;&amp;amp; sed -i -e &amp;quot;s/^goto :eof/goto :end/&amp;quot; Update/*.bat 2&amp;gt;/dev/null\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.\\\\\\download\\\\\\/.\\\\\\DOWNLOAD\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exodos\\\\\\/eXoDOS\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\/eXo\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\update/eXo\\\\\\Update/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/PPMode/PPmode/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/c\\*\\.rom/C*.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.rom/.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s|mt32\\\\\\soundcanvas\\.sf2|mt32\\\\\\SoundCanvas.sf2|I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/update\\.zip/update_linux.zip/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.exo/ver_linux.exo/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.txt/ver_linux.txt/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/findstr \\/C/ s/\\&amp;quot;%GameName/\\&amp;quot;:%GameName/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/fullindex=/ s/\\&amp;quot;\\$gamename/\\&amp;quot;:\\$gamename/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
echo &amp;quot;Creating game shell files.&amp;quot;\&lt;br /&gt;
echo &amp;quot;Preparing files for conversion...&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*.sh\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*/*.sh\&lt;br /&gt;
chmod +x Update/*.sh\&lt;br /&gt;
chmod +x Magazines/*.sh\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Creating Linux configuration references. Please wait.&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\!*/*/install.sh\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/^\\(.*\\)\\.bat\\(.*\\)/&amp;amp;\\n\\1.sh\\2/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: In short, when the '''Setup_with_regeneration.sh''' script is executed, the code added to the bottom does the following:&lt;br /&gt;
:# Copies the ScummVM SVN application data to Wine&lt;br /&gt;
:# Fixes zip archive references&lt;br /&gt;
:# Fixes batch file reference inconsistencies&lt;br /&gt;
:# Creates shell files&lt;br /&gt;
:# Makes shell files executable&lt;br /&gt;
:# Prepares shell files for conversion&lt;br /&gt;
:# Adds Linux configuration references to Linux game setups&lt;br /&gt;
:# Adds Linux configuration references to Windows game setups&lt;br /&gt;
:# Adds Linux configuration references to Linux game and magazine launchers&lt;br /&gt;
:# Adds Windows configuration references to Linux game setups&lt;br /&gt;
:# Converts syntax for the Linux shell files from Windows batch to bash&lt;br /&gt;
:# Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:# Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:# Creates DOSBox configuration files for Linux&lt;br /&gt;
:# Makes necessary changes to Linux configuration files&lt;br /&gt;
:# Applies game specific fixes to Linux files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the inconsistency fixes and game specific changes are manually added to the '''regenerate.sh''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
=== Note on Updates ===&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''IMPORTANT:'''&amp;lt;/span&amp;gt; If preparing a full copy of the eXoDOS Linux patch, any existing eXoDOS update files should be considered before packaging the files for final release. The initial eXoDOS 5 Linux patch included the eXoDOS 5.1 update. For completeness as well as the convenience of anyone installing the Linux patch without an active Internet connection, any new versions of '''exodos5-linux-patch.zip''' should always include the latest updates. At the same time, a cumulative update patch file, '''update_linux.zip''', is also maintained for people that would like to simply update their already installed version of eXoDOS 5. The details of how the update works will be discussed later. However, it should be noted that both the '''exodos5-linux-patch.zip''' file as well as '''update_linux.zip''' should contain the latest versions of everything at their time of release.&lt;br /&gt;
&lt;br /&gt;
: In the '''exodos5-linux-patch.zip''' file, any cumulative updates for bat, conf, and sh files are merged into the '''Content/!DOSmetadata_linux.zip''' and '''Content/Magazines_linux.zip''' files, overwriting the ones from the eXoDOS 5.0 release. Updates to game archives, on the other hand, are included in the '''eXo/util/update_linux.zip''' file.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''CAUTION:'''&amp;lt;/span&amp;gt; The '''update_linux.zip''' file hosted online is for cumulative updates and is different than the '''eXo/util/update_linux.zip''' file contained in the full release of the Linux patch. Any references in this document to the two files can be differentiated by the presence or absence of '''eXo/util/'''.&lt;br /&gt;
&lt;br /&gt;
=== Preparing For Manual Conversion ===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
=== Packaging Files For Release ===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=573</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=573"/>
		<updated>2021-11-12T13:06:18Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Using eXoDOS ===&lt;br /&gt;
&lt;br /&gt;
==== exogui ====&lt;br /&gt;
&lt;br /&gt;
: A member of our Discord, jelcynek, has currently created a Linux frontend, exogui, which is a fork of Flashpoint Launcher. It is still very much a work in progress, but it has been bundled with eXoDOS. As the frontend improves, newer versions will be included with updates.&lt;br /&gt;
: Running '''start-exogui''' will start the frontend.&lt;br /&gt;
&lt;br /&gt;
: The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
==== Playing Without Frontend ====&lt;br /&gt;
&lt;br /&gt;
: After downloading the collection, installing the dependencies with '''install_linux_dependencies.sh''', and running '''Setup.sh''', you can play the games in the following way without a frontend:&lt;br /&gt;
: Navigate to the '''eXo/eXoDOS/!dos/''' directory. Here, you will find 7200 game directories that contain launcher and setup shell files. These files should be executed from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: For example, from the root directory of the collection, you could type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd eXo/eXoDOS/\!dos/mi2/&lt;br /&gt;
bash Monkey\ Island\ 2\ -\ LeChuck\'s\ Revenge\ \(1991\).sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; if you have bash completion enabled, you can press the tab key to make typing name of a script easier.&lt;br /&gt;
&lt;br /&gt;
: The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
: Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
: If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will lose any saved games, high scores, or other settings you have defined since the game was installed. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler. If the scaler refuses to change, you will have to rerun the Setup file in order to extract clean copies of each games conf file.&lt;br /&gt;
&lt;br /&gt;
==== Creating Desktop Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Exec=x-terminal-emulator -e &amp;quot;/home/username/eXoDOS/eXo/eXoDOS/\\!dos/mi1/Secret\\ of\\ Monkey\\ Island\\,\\ The\\ \\(1990\\).sh&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/monkeyisland_icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
Type=Application&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changelog ===&lt;br /&gt;
&lt;br /&gt;
==== Changes to Version 5.1.linux1 ====&lt;br /&gt;
&lt;br /&gt;
: Utilities:&lt;br /&gt;
:* Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:* 120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:* Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:* LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
==== exodos5-linux-patch.zip ====&lt;br /&gt;
: '''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
:* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:* '''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:* '''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
==== util_linux.zip ====&lt;br /&gt;
: '''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
==== Custom Scripts ====&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:* '''eXo/Update/update.bat'''&lt;br /&gt;
:* '''eXo/Update/update.sh'''&lt;br /&gt;
:* '''eXo/Update/update_installed.sh'''&lt;br /&gt;
:* '''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/converter.sh ====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
: To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
: Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function =====&lt;br /&gt;
&lt;br /&gt;
: The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/regenerate.sh ====&lt;br /&gt;
&lt;br /&gt;
: The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; '''Setup_with_regeneration.sh''' does not handle the flatpak/native check in the '''update.sh''' or '''update.bat''' file. The '''util_linux.zip''' file is different from '''util.zip''' in many ways. This script does not focus on the contents of those files, even if was used to prepare them originally. If '''regenerate.sh''' or '''converter.sh''' have been updated, please ensure that you have also updated the '''util_linux.zip''' file with the newer versions.&lt;br /&gt;
&lt;br /&gt;
: The '''regenerate.sh''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, copies the '''Setup.bat''' file to '''Setup_with_regeneration.sh''', and converts the newly created file to bash. From here, the script makes several changes to the '''Setup_with_regeneration.sh''' file:&lt;br /&gt;
:# Any file reference case inconsistencies are fixed, all '''util.zip''' references are changed to '''util_linux.zip''', and additionally needed unzip directives are added.&lt;br /&gt;
:# Checks are added to the beginning of the script to ensure it is located in the root directory of the eXoDOS collection.&lt;br /&gt;
:# Additional code is added to the end of the script to generate Linux versions for all config files and Windows batch files.&lt;br /&gt;
&lt;br /&gt;
: All text manipulation for the above steps is done through sed commands. The final step will scare many people away as it involves numerous sed commands within a sed command. This means each line has a great deal of escape sequences.&lt;br /&gt;
&lt;br /&gt;
: Here is a code snippet to give an idea of what some of this looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sed -i -e '$a\&lt;br /&gt;
\&lt;br /&gt;
clear\&lt;br /&gt;
echo &amp;quot;The rest of the setup is automated but could take over an hour.&amp;quot;\&lt;br /&gt;
echo &amp;quot;&amp;quot;\&lt;br /&gt;
cd &amp;quot;$initialDir&amp;quot;\&lt;br /&gt;
cd eXo\&lt;br /&gt;
echo &amp;quot;Copying scummvm svn application data to Wine.&amp;quot;\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;md %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;copy .\\\util\\\scummvm.ini %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM\\\scummvm.ini&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing zip archive references.&amp;quot;\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing batch file reference inconsistencies. This may take several minutes.&amp;quot;\&lt;br /&gt;
[ `ls -1 Update/*.bat 2&amp;gt;/dev/null | wc -w` -gt 0 ] &amp;amp;&amp;amp; sed -i -e &amp;quot;s/^goto :eof/goto :end/&amp;quot; Update/*.bat 2&amp;gt;/dev/null\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.\\\\\\download\\\\\\/.\\\\\\DOWNLOAD\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exodos\\\\\\/eXoDOS\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\/eXo\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\update/eXo\\\\\\Update/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/PPMode/PPmode/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/c\\*\\.rom/C*.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.rom/.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s|mt32\\\\\\soundcanvas\\.sf2|mt32\\\\\\SoundCanvas.sf2|I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/update\\.zip/update_linux.zip/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.exo/ver_linux.exo/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.txt/ver_linux.txt/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/findstr \\/C/ s/\\&amp;quot;%GameName/\\&amp;quot;:%GameName/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/fullindex=/ s/\\&amp;quot;\\$gamename/\\&amp;quot;:\\$gamename/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
echo &amp;quot;Creating game shell files.&amp;quot;\&lt;br /&gt;
echo &amp;quot;Preparing files for conversion...&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*.sh\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*/*.sh\&lt;br /&gt;
chmod +x Update/*.sh\&lt;br /&gt;
chmod +x Magazines/*.sh\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Creating Linux configuration references. Please wait.&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\!*/*/install.sh\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/^\\(.*\\)\\.bat\\(.*\\)/&amp;amp;\\n\\1.sh\\2/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: In short, when the '''Setup_with_regeneration.sh''' script is executed, the code added to the bottom does the following:&lt;br /&gt;
:# Copies the ScummVM SVN application data to Wine&lt;br /&gt;
:# Fixes zip archive references&lt;br /&gt;
:# Fixes batch file reference inconsistencies&lt;br /&gt;
:# Creates shell files&lt;br /&gt;
:# Makes shell files executable&lt;br /&gt;
:# Prepares shell files for conversion&lt;br /&gt;
:# Adds Linux configuration references to Linux game setups&lt;br /&gt;
:# Adds Linux configuration references to Windows game setups&lt;br /&gt;
:# Adds Linux configuration references to Linux game and magazine launchers&lt;br /&gt;
:# Adds Windows configuration references to Linux game setups&lt;br /&gt;
:# Converts syntax for the Linux shell files from Windows batch to bash&lt;br /&gt;
:# Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:# Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:# Creates DOSBox configuration files for Linux&lt;br /&gt;
:# Makes necessary changes to Linux configuration files&lt;br /&gt;
:# Applies game specific fixes to Linux files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the inconsistency fixes and game specific changes are manually added to the '''regenerate.sh''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;br /&gt;
&lt;br /&gt;
=== Note on Updates ===&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''IMPORTANT:'''&amp;lt;/span&amp;gt; If preparing a full copy of the eXoDOS Linux patch, any existing eXoDOS update files should be considered before packaging the files for final release. The initial eXoDOS 5 Linux patch included the eXoDOS 5.1 update. For completeness as well as the convenience of anyone installing the Linux patch without an active Internet connection, any new versions of '''exodos5-linux-patch.zip''' should always include the latest updates. At the same time, a cumulative update patch file, '''update_linux.zip''', is also maintained for people that would like to simply update their already installed version of eXoDOS 5. The details of how the update works will be discussed later. However, it should be noted that both the '''exodos5-linux-patch.zip''' file as well as '''update_linux.zip''' should contain the latest versions of everything at their time of release.&lt;br /&gt;
&lt;br /&gt;
: In the '''exodos5-linux-patch.zip''' file, any cumulative updates for bat, conf, and sh files are merged into the 'Content/!DOSmetadata_linux.zip' and 'Content/Magazines_linux.zip' files, overwriting the ones from the eXoDOS 5.0 release. Updates to game archives, on the other hand, are included in the '''eXo/util/update_linux.zip''' file.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''CAUTION:'''&amp;lt;/span&amp;gt; The '''update_linux.zip''' file hosted online is for cumulative updates and is different than the '''eXo/util/update_linux.zip''' file contained in the full release of the Linux patch. Any references in this document to the two files can be differentiated by the presence or absence of '''eXo/util/'''.&lt;br /&gt;
&lt;br /&gt;
=== Preparing For Manual Conversion ===&lt;br /&gt;
&lt;br /&gt;
#to do&lt;br /&gt;
&lt;br /&gt;
=== Packaging Files For Release ===&lt;br /&gt;
&lt;br /&gt;
#to do along with numerous other sections&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=572</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=572"/>
		<updated>2021-11-12T10:21:20Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Using eXoDOS ===&lt;br /&gt;
&lt;br /&gt;
==== exogui ====&lt;br /&gt;
&lt;br /&gt;
: A member of our Discord, jelcynek, has currently created a Linux frontend, exogui, which is a fork of Flashpoint Launcher. It is still very much a work in progress, but it has been bundled with eXoDOS. As the frontend improves, newer versions will be included with updates.&lt;br /&gt;
: Running '''start-exogui''' will start the frontend.&lt;br /&gt;
&lt;br /&gt;
: The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
==== Playing Without a Frontend ====&lt;br /&gt;
&lt;br /&gt;
: After downloading the collection, installing the dependencies with '''install_linux_dependencies.sh''', and running '''Setup.sh''', you can play the games in the following way without a frontend:&lt;br /&gt;
: Navigate to the '''eXo/eXoDOS/!dos/''' directory. Here, you will find 7200 game directories that contain launcher and setup shell files. These files should be executed from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: For example, from the root directory of the collection, you could type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd eXo/eXoDOS/\!dos/mi2/&lt;br /&gt;
bash Monkey\ Island\ 2\ -\ LeChuck\'s\ Revenge\ \(1991\).sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; if you have bash completion enabled, you can press the tab key to make typing name of a script easier.&lt;br /&gt;
&lt;br /&gt;
: The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
: Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
: If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will lose any saved games, high scores, or other settings you have defined since the game was installed. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler. If the scaler refuses to change, you will have to rerun the Setup file in order to extract clean copies of each games conf file.&lt;br /&gt;
&lt;br /&gt;
==== Creating Desktop Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
: If you would like to create a desktop shortcut to a game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes as appropriate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Exec=x-terminal-emulator -e &amp;quot;/home/username/eXoDOS/eXo/eXoDOS/\\!dos/mi1/Secret\\ of\\ Monkey\\ Island\\,\\ The\\ \\(1990\\).sh&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/monkeyisland_icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
Type=Application&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changelog ===&lt;br /&gt;
&lt;br /&gt;
==== Changes to Version 5.1.linux1 ====&lt;br /&gt;
&lt;br /&gt;
: Utilities:&lt;br /&gt;
:* Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:* 120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:* Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:* LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
==== exodos5-linux-patch.zip ====&lt;br /&gt;
: '''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
:* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:* '''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:* '''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
==== util_linux.zip ====&lt;br /&gt;
: '''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
==== Custom Scripts ====&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:* '''eXo/Update/update.bat'''&lt;br /&gt;
:* '''eXo/Update/update.sh'''&lt;br /&gt;
:* '''eXo/Update/update_installed.sh'''&lt;br /&gt;
:* '''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/converter.sh ====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
: To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
: Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function =====&lt;br /&gt;
&lt;br /&gt;
: The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/regenerate.sh ====&lt;br /&gt;
&lt;br /&gt;
: The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; '''Setup_with_regeneration.sh''' does not handle the flatpak/native check in the '''update.sh''' or '''update.bat''' file. The '''util_linux.zip''' file is different from '''util.zip''' in many ways. This script does not focus on the contents of those files, even if was used to prepare them originally. If '''regenerate.sh''' or '''converter.sh''' have been updated, please ensure that you have also updated the '''util_linux.zip''' file with the newer versions.&lt;br /&gt;
&lt;br /&gt;
: The '''regenerate.sh''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, copies the '''Setup.bat''' file to '''Setup_with_regeneration.sh''', and converts the newly created file to bash. From here, the script makes several changes to the '''Setup_with_regeneration.sh''' file:&lt;br /&gt;
:# Any file reference case inconsistencies are fixed, all '''util.zip''' references are changed to '''util_linux.zip''', and additionally needed unzip directives are added.&lt;br /&gt;
:# Checks are added to the beginning of the script to ensure it is located in the root directory of the eXoDOS collection.&lt;br /&gt;
:# Additional code is added to the end of the script to generate Linux versions for all config files and Windows batch files.&lt;br /&gt;
&lt;br /&gt;
: All text manipulation for the above steps is done through sed commands. The final step will scare many people away as it involves numerous sed commands within a sed command. This means each line has a great deal of escape sequences.&lt;br /&gt;
&lt;br /&gt;
: Here is a code snippet to give an idea of what some of this looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sed -i -e '$a\&lt;br /&gt;
\&lt;br /&gt;
clear\&lt;br /&gt;
echo &amp;quot;The rest of the setup is automated but could take over an hour.&amp;quot;\&lt;br /&gt;
echo &amp;quot;&amp;quot;\&lt;br /&gt;
cd &amp;quot;$initialDir&amp;quot;\&lt;br /&gt;
cd eXo\&lt;br /&gt;
echo &amp;quot;Copying scummvm svn application data to Wine.&amp;quot;\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;md %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;copy .\\\util\\\scummvm.ini %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM\\\scummvm.ini&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing zip archive references.&amp;quot;\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing batch file reference inconsistencies. This may take several minutes.&amp;quot;\&lt;br /&gt;
[ `ls -1 Update/*.bat 2&amp;gt;/dev/null | wc -w` -gt 0 ] &amp;amp;&amp;amp; sed -i -e &amp;quot;s/^goto :eof/goto :end/&amp;quot; Update/*.bat 2&amp;gt;/dev/null\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.\\\\\\download\\\\\\/.\\\\\\DOWNLOAD\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exodos\\\\\\/eXoDOS\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\/eXo\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\update/eXo\\\\\\Update/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/PPMode/PPmode/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/c\\*\\.rom/C*.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.rom/.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s|mt32\\\\\\soundcanvas\\.sf2|mt32\\\\\\SoundCanvas.sf2|I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/update\\.zip/update_linux.zip/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.exo/ver_linux.exo/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.txt/ver_linux.txt/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/findstr \\/C/ s/\\&amp;quot;%GameName/\\&amp;quot;:%GameName/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/fullindex=/ s/\\&amp;quot;\\$gamename/\\&amp;quot;:\\$gamename/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
echo &amp;quot;Creating game shell files.&amp;quot;\&lt;br /&gt;
echo &amp;quot;Preparing files for conversion...&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*.sh\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*/*.sh\&lt;br /&gt;
chmod +x Update/*.sh\&lt;br /&gt;
chmod +x Magazines/*.sh\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Creating Linux configuration references. Please wait.&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\!*/*/install.sh\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/^\\(.*\\)\\.bat\\(.*\\)/&amp;amp;\\n\\1.sh\\2/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: In short, when the '''Setup_with_regeneration.sh''' script is executed, the code added to the bottom does the following:&lt;br /&gt;
:# Copies the ScummVM SVN application data to Wine&lt;br /&gt;
:# Fixes zip archive references&lt;br /&gt;
:# Fixes batch file reference inconsistencies&lt;br /&gt;
:# Creates shell files&lt;br /&gt;
:# Makes shell files executable&lt;br /&gt;
:# Prepares shell files for conversion&lt;br /&gt;
:# Adds Linux configuration references to Linux game setups&lt;br /&gt;
:# Adds Linux configuration references to Windows game setups&lt;br /&gt;
:# Adds Linux configuration references to Linux game and magazine launchers&lt;br /&gt;
:# Adds Windows configuration references to Linux game setups&lt;br /&gt;
:# Converts syntax for the Linux shell files from Windows batch to bash&lt;br /&gt;
:# Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:# Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:# Creates DOSBox configuration files for Linux&lt;br /&gt;
:# Makes necessary changes to Linux configuration files&lt;br /&gt;
:# Applies game specific fixes to Linux files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the inconsistency fixes and game specific changes are manually added to the '''regenerate.sh''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=571</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=571"/>
		<updated>2021-11-12T10:18:32Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Using eXoDOS ===&lt;br /&gt;
&lt;br /&gt;
==== exogui ====&lt;br /&gt;
&lt;br /&gt;
: A member of our Discord, jelcynek, has currently created a Linux frontend, exogui, which is a fork of Flashpoint Launcher. It is still very much a work in progress, but it has been bundled with eXoDOS. As the frontend improves, newer versions will be included with updates.&lt;br /&gt;
: Running '''start-exogui''' will start the frontend.&lt;br /&gt;
&lt;br /&gt;
: The website for exogui can be found at https://github.com/margorski/exodos-launcher/. At this time, jelcynek is looking for volunteers to help in the development of the frontend. If you are interested, please reach out to him in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
==== Playing Without a Frontend ====&lt;br /&gt;
&lt;br /&gt;
: After downloading the collection, installing the dependencies with '''install_linux_dependencies.sh''', and running '''Setup.sh''', you can play the games in the following way without a frontend:&lt;br /&gt;
: Navigate to the '''eXo/eXoDOS/!dos/''' directory. Here, you will find 7200 game directories that contain launcher and setup shell files. These files should be executed from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: For example, from the root directory of the collection, you could type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd eXo/eXoDOS/\!dos/mi2/&lt;br /&gt;
bash Monkey\ Island\ 2\ -\ LeChuck\'s\ Revenge\ \(1991\).sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; if you have bash completion enabled, you can press the tab key to make typing name of a script easier.&lt;br /&gt;
&lt;br /&gt;
: The first time you attempt to run a game it will ask if you want to install it. Subsequent runs will directly launch the game.&lt;br /&gt;
&lt;br /&gt;
: Initial install may take some time depending on the size (a few of these games are upwards of 8 CDs!). During install you will be prompted to choose whether or not to enforce aspect ratio, full screen or windowed mode, and if you would like to apply a scaler. Scalers can smooth pixels, making older pixelated games look a bit more modern.  The default setting is normal2x.&lt;br /&gt;
&lt;br /&gt;
 : If you run the install file a second time, it will ask if you would like to uninstall the game. Choosing &amp;quot;yes&amp;quot; will erase the installed files from your disk, but keep the original ZIP file.  You will lose any saved games, high scores, or other settings you have defined since the game was installed. If you choose not to uninstall the game you will get the chance to choose full screen or windowed again and another opportunity to change the scaler. If the scaler refuses to change, you will have to rerun the Setup file in order to extract clean copies of each games conf file.&lt;br /&gt;
&lt;br /&gt;
==== Creating Desktop Shortcuts ====&lt;br /&gt;
&lt;br /&gt;
If you would like to create a desktop shortcut to a game, open a plain text editor, such as gedit or kate, and create a file with the .desktop extension and the following contents, making changes as appropriate:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Exec=x-terminal-emulator -e &amp;quot;/home/username/eXoDOS/eXo/eXoDOS/\\!dos/mi1/Secret\\ of\\ Monkey\\ Island\\,\\ The\\ \\(1990\\).sh&amp;quot;&lt;br /&gt;
Icon=/usr/share/icons/monkeyisland_icon.png&lt;br /&gt;
Name[EN_US]=Secret of Monkey Island&lt;br /&gt;
Name=Secret of Monkey Island&lt;br /&gt;
Type=Application&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changelog ===&lt;br /&gt;
&lt;br /&gt;
==== Changes to Version 5.1.linux1 ====&lt;br /&gt;
&lt;br /&gt;
: Utilities:&lt;br /&gt;
:* Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:* 120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:* Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:* LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
==== exodos5-linux-patch.zip ====&lt;br /&gt;
: '''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
:* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:* '''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:* '''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
==== util_linux.zip ====&lt;br /&gt;
: '''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
==== Custom Scripts ====&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:* '''eXo/Update/update.bat'''&lt;br /&gt;
:* '''eXo/Update/update.sh'''&lt;br /&gt;
:* '''eXo/Update/update_installed.sh'''&lt;br /&gt;
:* '''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/converter.sh ====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
: To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
: Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function =====&lt;br /&gt;
&lt;br /&gt;
: The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/regenerate.sh ====&lt;br /&gt;
&lt;br /&gt;
: The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; '''Setup_with_regeneration.sh''' does not handle the flatpak/native check in the '''update.sh''' or '''update.bat''' file. The '''util_linux.zip''' file is different from '''util.zip''' in many ways. This script does not focus on the contents of those files, even if was used to prepare them originally. If '''regenerate.sh''' or '''converter.sh''' have been updated, please ensure that you have also updated the '''util_linux.zip''' file with the newer versions.&lt;br /&gt;
&lt;br /&gt;
: The '''regenerate.sh''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, copies the '''Setup.bat''' file to '''Setup_with_regeneration.sh''', and converts the newly created file to bash. From here, the script makes several changes to the '''Setup_with_regeneration.sh''' file:&lt;br /&gt;
:# Any file reference case inconsistencies are fixed, all '''util.zip''' references are changed to '''util_linux.zip''', and additionally needed unzip directives are added.&lt;br /&gt;
:# Checks are added to the beginning of the script to ensure it is located in the root directory of the eXoDOS collection.&lt;br /&gt;
:# Additional code is added to the end of the script to generate Linux versions for all config files and Windows batch files.&lt;br /&gt;
&lt;br /&gt;
: All text manipulation for the above steps is done through sed commands. The final step will scare many people away as it involves numerous sed commands within a sed command. This means each line has a great deal of escape sequences.&lt;br /&gt;
&lt;br /&gt;
: Here is a code snippet to give an idea of what some of this looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sed -i -e '$a\&lt;br /&gt;
\&lt;br /&gt;
clear\&lt;br /&gt;
echo &amp;quot;The rest of the setup is automated but could take over an hour.&amp;quot;\&lt;br /&gt;
echo &amp;quot;&amp;quot;\&lt;br /&gt;
cd &amp;quot;$initialDir&amp;quot;\&lt;br /&gt;
cd eXo\&lt;br /&gt;
echo &amp;quot;Copying scummvm svn application data to Wine.&amp;quot;\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;md %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;copy .\\\util\\\scummvm.ini %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM\\\scummvm.ini&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing zip archive references.&amp;quot;\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing batch file reference inconsistencies. This may take several minutes.&amp;quot;\&lt;br /&gt;
[ `ls -1 Update/*.bat 2&amp;gt;/dev/null | wc -w` -gt 0 ] &amp;amp;&amp;amp; sed -i -e &amp;quot;s/^goto :eof/goto :end/&amp;quot; Update/*.bat 2&amp;gt;/dev/null\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.\\\\\\download\\\\\\/.\\\\\\DOWNLOAD\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exodos\\\\\\/eXoDOS\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\/eXo\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\update/eXo\\\\\\Update/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/PPMode/PPmode/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/c\\*\\.rom/C*.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.rom/.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s|mt32\\\\\\soundcanvas\\.sf2|mt32\\\\\\SoundCanvas.sf2|I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/update\\.zip/update_linux.zip/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.exo/ver_linux.exo/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.txt/ver_linux.txt/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/findstr \\/C/ s/\\&amp;quot;%GameName/\\&amp;quot;:%GameName/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/fullindex=/ s/\\&amp;quot;\\$gamename/\\&amp;quot;:\\$gamename/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
echo &amp;quot;Creating game shell files.&amp;quot;\&lt;br /&gt;
echo &amp;quot;Preparing files for conversion...&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*.sh\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*/*.sh\&lt;br /&gt;
chmod +x Update/*.sh\&lt;br /&gt;
chmod +x Magazines/*.sh\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Creating Linux configuration references. Please wait.&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\!*/*/install.sh\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/^\\(.*\\)\\.bat\\(.*\\)/&amp;amp;\\n\\1.sh\\2/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: In short, when the '''Setup_with_regeneration.sh''' script is executed, the code added to the bottom does the following:&lt;br /&gt;
:# Copies the ScummVM SVN application data to Wine&lt;br /&gt;
:# Fixes zip archive references&lt;br /&gt;
:# Fixes batch file reference inconsistencies&lt;br /&gt;
:# Creates shell files&lt;br /&gt;
:# Makes shell files executable&lt;br /&gt;
:# Prepares shell files for conversion&lt;br /&gt;
:# Adds Linux configuration references to Linux game setups&lt;br /&gt;
:# Adds Linux configuration references to Windows game setups&lt;br /&gt;
:# Adds Linux configuration references to Linux game and magazine launchers&lt;br /&gt;
:# Adds Windows configuration references to Linux game setups&lt;br /&gt;
:# Converts syntax for the Linux shell files from Windows batch to bash&lt;br /&gt;
:# Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:# Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:# Creates DOSBox configuration files for Linux&lt;br /&gt;
:# Makes necessary changes to Linux configuration files&lt;br /&gt;
:# Applies game specific fixes to Linux files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the inconsistency fixes and game specific changes are manually added to the '''regenerate.sh''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=462</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=462"/>
		<updated>2021-11-11T13:05:11Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Changelog ===&lt;br /&gt;
&lt;br /&gt;
==== Changes to Version 5.1.linux1 ====&lt;br /&gt;
&lt;br /&gt;
: Utilities:&lt;br /&gt;
:* Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:* 120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:* Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:* LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
==== exodos5-linux-patch.zip ====&lt;br /&gt;
: '''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
:* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:* '''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:* '''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
==== util_linux.zip ====&lt;br /&gt;
: '''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
==== Custom Scripts ====&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:* '''eXo/Update/update.bat'''&lt;br /&gt;
:* '''eXo/Update/update.sh'''&lt;br /&gt;
:* '''eXo/Update/update_installed.sh'''&lt;br /&gt;
:* '''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/converter.sh ====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
: To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
: Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function =====&lt;br /&gt;
&lt;br /&gt;
: The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/regenerate.sh ====&lt;br /&gt;
&lt;br /&gt;
: The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; '''Setup_with_regeneration.sh''' does not handle the flatpak/native check in the '''update.sh''' or '''update.bat''' file. The '''util_linux.zip''' file is different from '''util.zip''' in many ways. This script does not focus on the contents of those files, even if was used to prepare them originally. If '''regenerate.sh''' or '''converter.sh''' have been updated, please ensure that you have also updated the '''util_linux.zip''' file with the newer versions.&lt;br /&gt;
&lt;br /&gt;
: The '''regenerate.sh''' script first checks that the eXoDOS files are in the correct location in relation to it. Next, it loads the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into memory, copies the '''Setup.bat''' file to '''Setup_with_regeneration.sh''', and converts the newly created file to bash. From here, the script makes several changes to the '''Setup_with_regeneration.sh''' file:&lt;br /&gt;
:# Any file reference case inconsistencies are fixed, all '''util.zip''' references are changed to '''util_linux.zip''', and additionally needed unzip directives are added.&lt;br /&gt;
:# Checks are added to the beginning of the script to ensure it is located in the root directory of the eXoDOS collection.&lt;br /&gt;
:# Additional code is added to the end of the script to generate Linux versions for all config files and Windows batch files.&lt;br /&gt;
&lt;br /&gt;
: All text manipulation for the above steps is done through sed commands. The final step will scare many people away as it involves numerous sed commands within a sed command. This means each line has a great deal of escape sequences.&lt;br /&gt;
&lt;br /&gt;
: Here is a code snippet to give an idea of what some of this looks like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sed -i -e '$a\&lt;br /&gt;
\&lt;br /&gt;
clear\&lt;br /&gt;
echo &amp;quot;The rest of the setup is automated but could take over an hour.&amp;quot;\&lt;br /&gt;
echo &amp;quot;&amp;quot;\&lt;br /&gt;
cd &amp;quot;$initialDir&amp;quot;\&lt;br /&gt;
cd eXo\&lt;br /&gt;
echo &amp;quot;Copying scummvm svn application data to Wine.&amp;quot;\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;md %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
[ -e &amp;quot;util/scummvm.ini&amp;quot; ] \&amp;amp;\&amp;amp; wine cmd /c &amp;quot;copy .\\\util\\\scummvm.ini %USERPROFILE%\\\AppData\\\Roaming\\\ScummVM\\\scummvm.ini&amp;quot; 2&amp;gt;/dev/null\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing zip archive references.&amp;quot;\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Fixing batch file reference inconsistencies. This may take several minutes.&amp;quot;\&lt;br /&gt;
[ `ls -1 Update/*.bat 2&amp;gt;/dev/null | wc -w` -gt 0 ] &amp;amp;&amp;amp; sed -i -e &amp;quot;s/^goto :eof/goto :end/&amp;quot; Update/*.bat 2&amp;gt;/dev/null\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.\\\\\\download\\\\\\/.\\\\\\DOWNLOAD\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exodos\\\\\\/eXoDOS\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\/eXo\\\\\\/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/exo\\\\\\update/eXo\\\\\\Update/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/PPMode/PPmode/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/c\\*\\.rom/C*.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/\\.rom/.ROM/I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s|mt32\\\\\\soundcanvas\\.sf2|mt32\\\\\\SoundCanvas.sf2|I&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/update\\.zip/update_linux.zip/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.exo/ver_linux.exo/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;s/ver\\.txt/ver_linux.txt/Ig&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/findstr \\/C/ s/\\&amp;quot;%GameName/\\&amp;quot;:%GameName/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
    sed -i -e &amp;quot;/fullindex=/ s/\\&amp;quot;\\$gamename/\\&amp;quot;:\\$gamename/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
echo &amp;quot;Creating game shell files.&amp;quot;\&lt;br /&gt;
echo &amp;quot;Preparing files for conversion...&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\\!*/*/*.bat eXoDOS/\\\!*/*/*/*.bat Update/*.bat Magazines/*.bat\&lt;br /&gt;
do\&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*.sh\&lt;br /&gt;
chmod +x eXoDOS/\\\!*/*/*/*.sh\&lt;br /&gt;
chmod +x Update/*.sh\&lt;br /&gt;
chmod +x Magazines/*.sh\&lt;br /&gt;
\&lt;br /&gt;
echo &amp;quot;Creating Linux configuration references. Please wait.&amp;quot;\&lt;br /&gt;
for file in eXoDOS/\\!*/*/install.sh\&lt;br /&gt;
do\&lt;br /&gt;
    sed -i -e &amp;quot;s/^\\(.*\\)\\.bat\\(.*\\)/&amp;amp;\\n\\1.sh\\2/&amp;quot; &amp;quot;$file&amp;quot;\&lt;br /&gt;
done\&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: In short, when the '''Setup_with_regeneration.sh''' script is executed, the code added to the bottom does the following:&lt;br /&gt;
:# Copies the ScummVM SVN application data to Wine&lt;br /&gt;
:# Fixes zip archive references&lt;br /&gt;
:# Fixes batch file reference inconsistencies&lt;br /&gt;
:# Creates shell files&lt;br /&gt;
:# Makes shell files executable&lt;br /&gt;
:# Prepares shell files for conversion&lt;br /&gt;
:# Adds Linux configuration references to Linux game setups&lt;br /&gt;
:# Adds Linux configuration references to Windows game setups&lt;br /&gt;
:# Adds Linux configuration references to Linux game and magazine launchers&lt;br /&gt;
:# Adds Windows configuration references to Linux game setups&lt;br /&gt;
:# Converts syntax for the Linux shell files from Windows batch to bash&lt;br /&gt;
:# Fixes '''dosbox.conf''' typos with known solutions&lt;br /&gt;
:# Fixes '''dosbox.conf''' file and directory reference inconsistencies&lt;br /&gt;
:# Creates DOSBox configuration files for Linux&lt;br /&gt;
:# Makes necessary changes to Linux configuration files&lt;br /&gt;
:# Applies game specific fixes to Linux files&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; All of the inconsistency fixes and game specific changes are manually added to the '''regenerate.sh''' script. There is no magic voodoo code to determine what needs to be changed to make each game work correctly.&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=386</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=386"/>
		<updated>2021-11-08T17:49:05Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Changelog ===&lt;br /&gt;
&lt;br /&gt;
==== Changes to Version 5.1.linux1 ====&lt;br /&gt;
&lt;br /&gt;
: Utilities:&lt;br /&gt;
:* Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:* 120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:* Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:* LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
==== exodos5-linux-patch.zip ====&lt;br /&gt;
: '''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
:* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:* '''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:* '''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
==== util_linux.zip ====&lt;br /&gt;
: '''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
==== Custom Scripts ====&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:* '''eXo/Update/update.bat'''&lt;br /&gt;
:* '''eXo/Update/update.sh'''&lt;br /&gt;
:* '''eXo/Update/update_installed.sh'''&lt;br /&gt;
:* '''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/converter.sh ====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
: To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
: Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function =====&lt;br /&gt;
&lt;br /&gt;
: The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
==== eXo/util/regenerate.sh ====&lt;br /&gt;
&lt;br /&gt;
: The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=385</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=385"/>
		<updated>2021-11-08T17:44:49Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Changelog ===&lt;br /&gt;
&lt;br /&gt;
==== Changes to Version 5.1.linux1 ====&lt;br /&gt;
&lt;br /&gt;
: Utilities:&lt;br /&gt;
:* Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:* 120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:* Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:* LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
==== exodos5-linux-patch.zip ====&lt;br /&gt;
: '''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
:* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:* '''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:* '''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
==== util_linux.zip ====&lt;br /&gt;
: '''util_linux.zip''' contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
==== Custom Scripts ====&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:* '''eXo/Update/update.bat'''&lt;br /&gt;
:* '''eXo/Update/update.sh'''&lt;br /&gt;
:* '''eXo/Update/update_installed.sh'''&lt;br /&gt;
:* '''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
==== '''eXo/util/converter.sh''' ====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
: To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
: Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script it creates. Details about those scripts will be described later in this document.&lt;br /&gt;
&lt;br /&gt;
===== convertScript Function =====&lt;br /&gt;
&lt;br /&gt;
: The &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function runs a series of sed and Perl commands to convert a file from batch to bash. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''As this is a very complex text manipulation process, the order of each command is critically important.'''&amp;lt;/span&amp;gt; It is heavily recommended to add any new commands at the bottom of the function. Each subsequent text manipulation command may search for and change something that was previously altered. If any existing text manipulation commands are changed, everything needs to be very carefully audited. Edge cases are everywhere.&lt;br /&gt;
&lt;br /&gt;
: Example code snippet from the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    #escape backslashes in all echoes, change \ to / after the redirects&lt;br /&gt;
    sed -i -e '/^echo.*\\/{&lt;br /&gt;
                   s|#|##|g;&lt;br /&gt;
                   s|\\|/#|g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s|^\(echo.*&amp;gt;.*\)/#\(.*\)|\1/\2|;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s|/#|\\\\|g;&lt;br /&gt;
                   s|##|#|g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    #escape quotes on echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/! s/\&amp;quot;/\\\\\&amp;quot;/g }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
               &lt;br /&gt;
    #add a double quote to the beginning of echoes&lt;br /&gt;
    sed -i -e &amp;quot;s/^echo /echo \&amp;quot;/&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes without redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/{ /&amp;gt;/!s/.$/\&amp;quot;/ }&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #ensure echo redirects are preceded by spaces&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ {/[^[:space:]]&amp;gt;&amp;gt;/ s/&amp;gt;&amp;gt;/ &amp;gt;&amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*[^[:space:]]&amp;gt;/{ /&amp;gt;&amp;gt;/! s/&amp;gt;/ &amp;gt;/;}&amp;quot; &amp;quot;$currentScript&amp;quot; &lt;br /&gt;
    &lt;br /&gt;
    #add a double quote to the end of echoes with redirects&lt;br /&gt;
    sed -i -e &amp;quot;/^echo/ s/ &amp;gt;&amp;gt;/\&amp;quot; &amp;gt;&amp;gt; /&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    sed -i -e &amp;quot;/^echo.*&amp;gt;/{ /&amp;gt;&amp;gt;/! s/ &amp;gt;/\&amp;quot; &amp;gt; /;}&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #escape all $ characters&lt;br /&gt;
    sed -i -e &amp;quot;s/\\$/\\\\$/g&amp;quot; &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #make all occurrences of goto lowercase except on echo and comment lines&lt;br /&gt;
    sed -i -e '/^echo\|^#/!s/goto/goto/gI' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    #change all occurrences of GOTO to goto only after echo redirections&lt;br /&gt;
    sed -i -e '/^echo.*&amp;gt;.*GOTO/ {&lt;br /&gt;
                   s/#/##/g;&lt;br /&gt;
                   s/GOTO/goto#/g;&lt;br /&gt;
                   :a;&lt;br /&gt;
                   s/^\(echo.*&amp;gt;.*\)goto#\(.*\)/\1goto\2/;&lt;br /&gt;
                   ta;&lt;br /&gt;
                   s/goto#/GOTO/g;&lt;br /&gt;
                   s/##/#/g;&lt;br /&gt;
               }' &amp;quot;$currentScript&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: As shown in the above code snippet, comments are used to tell what every text manipulation operation does. This is necessary to ensure that the script continues to be maintainable.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; When doing a systematic conversion of the eXoDOS collection, it is important to remember that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against every batch file in eXoDOS, with the exception of those in game archives (e.g. '''run.bat'''). Additional game specific text manipulations are written in the '''regenerate.sh''' script.&lt;br /&gt;
&lt;br /&gt;
==== '''eXo/util/regenerate.sh''' ====&lt;br /&gt;
&lt;br /&gt;
: The purpose of the '''regenerate.sh''' script is to assist in the development of future Linux patches by automating the conversion of config files and Windows batch files to Linux compatible bash files. It creates a '''Setup_with_regeneration.sh''' file in the root directory of the eXoDOS collection. By executing the '''Setup_with_regeneration.sh''' script, a converted eXoDOS setup will run followed by conversion operations to prepare the rest of the collection for the creation of a Linux patch. This script is not intended for end-users. As new versions of eXoDOS come out, both the '''regenerate.sh''' script as well as the '''converter.sh''' will need to be altered. It is impossible to predict how the Windows batch files will be written. It is very common for eXo to do some extremely complex operations in batch files that can make updating these scripts very challenging.&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=384</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=384"/>
		<updated>2021-11-08T16:02:42Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Changelog ===&lt;br /&gt;
&lt;br /&gt;
==== Changes to Version 5.1.linux1 ====&lt;br /&gt;
&lt;br /&gt;
: Utilities:&lt;br /&gt;
:* Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:* 120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:* Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:* LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
==== exodos5-linux-patch.zip ====&lt;br /&gt;
: '''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
:* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
:* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
:* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
:* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
:* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
:* '''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
:* '''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
==== util_linux.zip ====&lt;br /&gt;
: '''util_linux.zip''' Contents:&lt;br /&gt;
:* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
:* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
:* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
:* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
:* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
:* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
:* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
:* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
:* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
==== Custom Scripts ====&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: green&amp;quot;&amp;gt;'''Note:'''&amp;lt;/span&amp;gt; For the rest of this document, files will be described using their locations after installing eXoDOS.&lt;br /&gt;
&lt;br /&gt;
: The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
:* '''eXo/Update/update.bat'''&lt;br /&gt;
:* '''eXo/Update/update.sh'''&lt;br /&gt;
:* '''eXo/Update/update_installed.sh'''&lt;br /&gt;
:* '''Setup.sh'''&lt;br /&gt;
&lt;br /&gt;
==== '''eXo/util/converter.sh''' ====&lt;br /&gt;
: The '''converter.sh''' script contains the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function, which, when called, will attempt to convert a file's batch code to bash. The file that the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function is ran against is determined by a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt;. Note that the '''converter.sh''' script is not meant to be executed directly.&lt;br /&gt;
&lt;br /&gt;
: To prevent direct execution, the '''converter.sh''' script checks that a variable, &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt;, has a value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;. Note that even when &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$hideMessage&amp;lt;/span&amp;gt; = &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;true&amp;lt;/span&amp;gt;, executing '''converter.sh''' does not automatically call the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function. Instead, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;source&amp;lt;/span&amp;gt; command should be ran against '''converter.sh''' to bring the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function into the shell session's memory. Then, assuming the value of &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;$currentScript&amp;lt;/span&amp;gt; has been set, the &amp;lt;span style=&amp;quot;color: blue&amp;quot;&amp;gt;convertScript&amp;lt;/span&amp;gt; function should be called.&lt;br /&gt;
&lt;br /&gt;
: Example use where bat files in a directory called '''filesToConvert''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hideMessage='true'&lt;br /&gt;
. eXo/util/converter.sh&lt;br /&gt;
for file in filesToConvert/*.bat&lt;br /&gt;
do&lt;br /&gt;
    cp &amp;quot;$file&amp;quot; &amp;quot;${file%.bat}.sh&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
chmod +x filesToConvert/*.sh&lt;br /&gt;
for currentScript in filesToConvert/*.sh&lt;br /&gt;
do&lt;br /&gt;
    convertScript&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normally, the '''converter.sh''' script is called by the '''regenerate.sh''' script and the '''Setup_with_regeneration.sh''' script that creates. Details about that script will be described later in this document.&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=383</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=383"/>
		<updated>2021-11-08T12:27:07Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Changelog ===&lt;br /&gt;
&lt;br /&gt;
==== Changes to Version 5.1.linux1 ====&lt;br /&gt;
&lt;br /&gt;
: Utilities:&lt;br /&gt;
:* Removed All-Seeing Eye 3 from Linux menu option (map tracking inaccurate)&lt;br /&gt;
&lt;br /&gt;
: Games:&lt;br /&gt;
:* 120 Degree Below Zero (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
:* Eye of the Beholder III - Assault on Myth Drannor (1993) - Replaced patched AESOP.EXE file with original (patched exe does not run properly in Linux)&lt;br /&gt;
:* LockerGnome Quest Redux (2012) - Changed launcher to use ScummVM (sciAudio.exe not an option for Linux)&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
'''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
* '''install_linux_dependencies.sh''' - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
* '''Setup.sh''' - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
* '''start-exodus''' - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
'''util_linux.zip''' Contents:&lt;br /&gt;
* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;br /&gt;
&lt;br /&gt;
The following files are not simply handled by the conversion script, but have custom modifications:&lt;br /&gt;
* '''eXo/Update/update.bat'''&lt;br /&gt;
* '''eXo/Update/update.sh'''&lt;br /&gt;
* '''eXo/Update/update_installed.sh'''&lt;br /&gt;
* '''Setup.sh'''&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=354</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=354"/>
		<updated>2021-11-07T12:58:27Z</updated>

		<summary type="html">&lt;p&gt;Parricc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well as add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
At this time of this writing, the latest release of the eXoDOS Linux Patch is compatible with eXoDOS 5.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 - Extracting Zip Archive ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 - Installing Dependencies ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 - Installing eXoDOS ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
'''exodos5-linux-patch.zip''' contains the following files and directories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This builds upon the existing file and directory structure of eXoDOS.&lt;br /&gt;
&lt;br /&gt;
* '''Content/!DOSmetadata_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for games; Note these files are also updated to have the content for Version 5.1.linux1.&lt;br /&gt;
* '''Content/Magazines_linux.zip''' - This contains DOSBox configuration files as well as the launcher and setup files (conf, sh, bat) for disk magazines.&lt;br /&gt;
* '''eXo/util/util_linux.zip''' - This contains utilities needed to run eXoDOS. &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''Note that several internal files are different than the ones in util.zip, despite having the same filenames.&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''&lt;br /&gt;
* '''exogui''' - This directory contains the files needed to run exogui.&lt;br /&gt;
* '''install_linux_dependencies.sh - This guided setup script installs the Linux dependencies needed for eXoDOS.&lt;br /&gt;
* '''Setup.sh - This guided setup script installs the eXoDOS collection for Linux.&lt;br /&gt;
* '''start-exodus - This launches the Linux eXoDOS frontend, exogui.&lt;br /&gt;
&lt;br /&gt;
'''util_linux.zip''' Contents:&lt;br /&gt;
* '''aria.zip''' - Same as in eXoDOS 5 Lite torrent.&lt;br /&gt;
* '''ASE3.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
* '''ASE.zip''' - Same file as in eXoDOS 5.1 update.&lt;br /&gt;
* '''BRC32.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''CHOICE.EXE''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''converter.sh''' - Script to assist in the development of the Linux patch; converts batch files to bash shell scripts for Linux.&lt;br /&gt;
* '''deprotect.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''dos2unix.exe''' - Added to eXoDOS Linux patch to ensure configuration changes in Windows do not add carriage returns.&lt;br /&gt;
* '''dosbox.zip''' - Modified for eXoDOS Linux patch to include Linux conf files.&lt;br /&gt;
* '''GBC.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
* '''LinuxPackages.zip''' - Contains Linux DOSBox packages needed for eXoDOS.&lt;br /&gt;
* '''mt32.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''regenerate.sh''' - Development tool that attempts to convert Windows eXoDOS '''Setup.bat''' file into a Linux shell script, which upon being executed will run through the installation and then systematically convert all files to work with Linux.&lt;br /&gt;
* '''scummvm.ini''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''scummvm.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''SetConsole.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''SHADERS.zip''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''ssr.exe''' - Same as in eXoDOS 5 torrent.&lt;br /&gt;
* '''Ultimapper5.zip''' - Same as in eXoDOS 5.1 update.&lt;br /&gt;
* '''update_linux.zip''' - Linux branch update files; Linux bash files added and Windows batch files modified; changelog.txt and ver_linux.txt are used to track Linux branch; 5.1 game patch zips also included; Note the EOB3 executable (AESOP.EXE) was reverted to the 5.0 version for Linux compatibility.&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
	<entry>
		<id>https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=353</id>
		<title>Linux Patch</title>
		<link rel="alternate" type="text/html" href="https://wiki.retro-exo.com/index.php?title=Linux_Patch&amp;diff=353"/>
		<updated>2021-11-07T09:56:59Z</updated>

		<summary type="html">&lt;p&gt;Parricc: Linux Patch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== eXoDOS Linux Patch ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The eXoDOS Linux patch is an attempt to make all features of eXoDOS work on Linux systems just as they would in Windows. As a Linux alternative to LaunchBox, a game launcher called exogui is bundled with the patch. Additionally, the patch is written to ensure that the collection works as expected in dualboot environments. After the Linux patch is installed, if eXoDOS is updated, games are installed, or game options are modified, the changes will be reflected in both Linux and Windows environments.&lt;br /&gt;
&lt;br /&gt;
Installing the Linux patch will replace existing Windows batch files with modified versions as well add additional Linux specific files. It also switches eXoDOS to the Linux update branch. Our team must test and merge any new upstream eXoDOS patches into the Linux branch before they will become available. In addition, there may be updates released for the Linux branch without a corresponding one in the main branch.&lt;br /&gt;
&lt;br /&gt;
Having said that, installing the Linux patch or any updates will not affect any files in the torrent. You will continue to be able to seed the collection.&lt;br /&gt;
&lt;br /&gt;
=== Installation Process ===&lt;br /&gt;
&lt;br /&gt;
==== Step 1 ====&lt;br /&gt;
&lt;br /&gt;
: First, the '''exodos5-linux-patch.zip''' file must be extracted to the correct location.&lt;br /&gt;
&lt;br /&gt;
: Copy the '''exodos5-linux-patch.zip''' file to the root directory of your freshly downloaded eXoDOS 5 collection. (This is where files such as '''eXoDOS Catalog.pdf''' and '''Setup.bat''' are located) &lt;br /&gt;
: Then, in your file manager, right click on the '''exodos5-linux-patch.zip''' file and select &amp;quot;''Extract Here''&amp;quot; or &amp;quot;''Extract'' &amp;gt; ''Extract archive here''&amp;quot;, depending on what you are using.&lt;br /&gt;
&lt;br /&gt;
: Alternatively, you may open a terminal in that directory, and run the following command:&lt;br /&gt;
: &amp;lt;pre&amp;gt;unzip -o exodos5-linux-patch.zip&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: After this has been done, installing the collection still requires two more steps, which can be done either in exogui or from a terminal. If you do these steps in exogui, you will need to close and restart it after the installation has been completed.&lt;br /&gt;
&lt;br /&gt;
==== Step 2 ====&lt;br /&gt;
&lt;br /&gt;
: The next step is to install the software needed to run the collection.&lt;br /&gt;
&lt;br /&gt;
: If you want to do this through exogui, double-click on '''start-exogui'''. (If exogui fails to start, consult the troubleshooting section of the readme)&lt;br /&gt;
: Then, select &amp;quot;''Install dependencies''&amp;quot; in the exogui home tab. Alternatively, you may run this same setup by executing '''install_linux_dependencies.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: Note that this step will need to be done on any computers that have not previously ran eXoDOS 5, even if the full setup has been ran on a portable drive.&lt;br /&gt;
&lt;br /&gt;
: The '''install_linux_dependencies.sh''' script will run a guided setup to install the needed software.&lt;br /&gt;
&lt;br /&gt;
: Officially supported distributions include:&lt;br /&gt;
:* Debian&lt;br /&gt;
:* Fedora&lt;br /&gt;
:* Ubuntu (and Ubuntu-based distributions)&lt;br /&gt;
:* Arch / Manjaro Linux.&lt;br /&gt;
&lt;br /&gt;
: Updates will be periodically released to ensure that compatibility is maintained as newer distributions come out. Simply choose the update menu option to grab the newest version of the setup.&lt;br /&gt;
: If you would like to request support for your distro to be added, feel free to reach out in the #linux_port_for_nerds channel of our Discord.&lt;br /&gt;
&lt;br /&gt;
: When running this setup, you will be given an option to choose between flatpaks and native DOSBox packages. There are some advantages and disadvantages of each.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Flatpaks&amp;lt;/u&amp;gt;: Flatpaks have an advantage over native DOSBox packages in that they are more portable. If you are using an unsupported distribution, they will make it much easier to get the collection working. However, our tests have shown that some computers (not most) have distorted FluidSynth output in ECE when using flatpaks.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;u&amp;gt;Native Packages&amp;lt;/u&amp;gt;: Native packages do not have this issue, but must be regularly maintained and updated as newer distributions come out. Upgrading your version of Linux may break a previously installed native package. We will occasionally release updates to ensure compatibility is maintained.&lt;br /&gt;
&lt;br /&gt;
==== Step 3 ====&lt;br /&gt;
&lt;br /&gt;
: The final step is to run the eXoDOS Setup.&lt;br /&gt;
&lt;br /&gt;
: To do this through exogui, select &amp;quot;''eXoDOS Setup''&amp;quot; on the home tab. Alternatively, you may run '''Setup.sh''' from a terminal window.&lt;br /&gt;
&lt;br /&gt;
: This will unpack the required eXoDOS files, including the LaunchBox assets and the games front end assets/configs to run the collection. In addition, it will extract the Linux game launcher and setup files. It will make the collection work on both Windows and Linux computers and ensure updates work correctly for both operating systems.&lt;br /&gt;
&lt;br /&gt;
: Do not extract these files manually. They are location sensitive.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS Setup will give you the opportunity to customize your set. This includes the option to remove Adult games from the exogui and LaunchBox menu. This removes games with sex or nudity from the LaunchBox XML file. This does not remove violent games. Please make use of the ratings category in LaunchBox if you would like to filter the games further.&lt;br /&gt;
&lt;br /&gt;
: You will also be prompted as to if you would like your global defaults to be Fullscreen or Windowed and whether or not you would like to default to Aspect Ratio On or Off. If you choose windowed mode, you will have the option between 640x480 or 1280x960.&lt;br /&gt;
&lt;br /&gt;
: Once it is complete, you may either launch the game shell files directly or run exogui to dive right in.&lt;br /&gt;
&lt;br /&gt;
: The eXoDOS collection can be run from any directory, as all launch files are designed to use relative paths to each other. Note, however, if you choose to add a desktop shortcut to exogui and then later move eXoDOS to a new location, you will need to rerun the setup to update the shortcut. Note that the setup gives an option to reconfigure previous installations of eXoDOS rather than running through the entire setup process over again.&lt;br /&gt;
&lt;br /&gt;
==== Important Note ====&lt;br /&gt;
:* &amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;'''DO NOT RUN'''&amp;lt;/span&amp;gt; the main Windows '''Setup.bat''' file after installing the Linux patch. It will undo the changes necessary for Linux compatibility.&lt;br /&gt;
:* Running the '''Setup.sh''' installation on an eXoDOS instance that was previously installed in Windows will clear the Windows installed games playlist in LaunchBox (due to LaunchBox being reinstalled).&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
&lt;br /&gt;
'''exodos5-linux-patch.zip''' contains the following files:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
├── Content&lt;br /&gt;
│   ├── !DOSmetadata_linux.zip&lt;br /&gt;
│   └── Magazines_linux.zip&lt;br /&gt;
├── eXo&lt;br /&gt;
│   └── util&lt;br /&gt;
│       └── util_linux.zip&lt;br /&gt;
├── eXoDOS Linux ReadMe.txt&lt;br /&gt;
├── exogui&lt;br /&gt;
│   └── [exogui files]&lt;br /&gt;
├── install_linux_dependencies.sh&lt;br /&gt;
├── Setup.sh&lt;br /&gt;
└── start-exogui&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Parricc</name></author>
	</entry>
</feed>