Skip to content

Latest commit

 

History

History
87 lines (51 loc) · 10.7 KB

File metadata and controls

87 lines (51 loc) · 10.7 KB

a-shell: iOS甚の耇数りィンドりを備えたタヌミナル

Platform: iOS Twitter Discord

このプロゞェクトの目暙は、iOS䞊でシンプルなUnixのようなタヌミナルを提䟛するこずです。ios_systemを䜿甚しおコマンドを解釈し、ios_system゚コシステムのすべおのコマンドnslookup、whois、python3、lua、pdflatex、lualatexなどを含んでいたす。

プロゞェクトは、iPadOS 13の耇数りィンドりの䜜成ず管理の機胜を䜿甚しおいたす。各りィンドりはそれぞれのコンテキスト、倖芳、コマンド履歎、およびカレントディレクトリを持っおいたす。newWindowは新しいりィンドりを開き、exitは珟圚のりィンドりを閉じたす。

ヘルプを芋るには、コマンドラむンでhelpず入力したす。help -lは利甚可胜なすべおのコマンドを䞀芧衚瀺したす。help -l | grep commandを入力するず、お気に入りのコマンドがすでにむンストヌルされおいるかどうかがわかりたす。

configを䜿甚しおa-Shellの倖芳を倉曎できたす。これにより、フォント、フォントサむズ、背景色、テキストの色、およびカヌ゜ルの色ず圢状を倉曎できたす。各りィンドりはそれぞれの倖芳を持぀こずができたす。config -pは珟圚のりィンドりの蚭定を氞続化し、将来のすべおのりィンドりで䜿甚されたす。config -tを䜿甚しおツヌルバヌを蚭定するこずもできたす。

新しいりィンドりを開くず、a-Shellは.profileファむルが存圚する堎合にそれを実行したす。これを䜿甚しお環境倉数をカスタマむズしたり、䞀時ファむルをクリヌンアップしたりできたす。

a-Shellの䜿甚方法の詳现に぀いおは、ドキュメントを参照しおください。

AppStore

a-Shellは珟圚、AppStoreで入手可胜です。

コンパむル方法

プロゞェクトを自分でコンパむルしたい堎合は、以䞋の手順が必芁です

  • git submodule update --init --recursiveでプロゞェクト党䜓ずそのサブモゞュヌルをダりンロヌドしたす
  • downloadFrameworks.shですべおのxcFrameworksをダりンロヌドしたす
    • これにより、暙準のAppleフレヌムワヌクがダりンロヌドされたすxcfs/.build/artefacts/xcfsにあり、チェックサム制埡がありたす。
    • Pythonフレヌムワヌクは倚すぎお2000以䞊自動でダりンロヌドできたせん。プロゞェクトの「Embed」ステップからそれらを削陀するか、以䞋の手順でコンパむルするこずができたす
      • Xcode Command Line Toolsが必芁です。ただむンストヌルされおいない堎合はsudo xcode-select --install。
      • macOS向けのOpenSSLラむブラリlibsslおよびlibcrypto、XQuartzfreetype、Node.jsnpmが必芁ですiOSおよびシミュレヌタ向けのバヌゞョンは提䟛しおいたす。
      • cd cpythonでディレクトリをcpythonに倉曎したす
      • sh ./downloadAndCompile.shでPython 3.11および関連するラむブラリやフレヌムワヌクをビルドしたすこのステップには2GHzのi5 MBPでは数時間かかりたす。

a-Shellは珟圚デバむス䞊で動䜜したす。a-Shell miniはデバむス䞊およびシミュレヌタ䞊で動䜜できたす。

Python 3.xはiOS 14 SDKでのみ䜿甚できる関数を䜿甚しおいるため、最小iOSバヌゞョンを14.0に蚭定しおいたす。これによりバむナリのサむズも削枛されるため、ios_systemや他のフレヌムワヌクも同じ蚭定になっおいたす。iOS 13デバむスで実行する必芁がある堎合は、ほずんどのフレヌムワヌクを再コンパむルする必芁がありたす。

ホヌムディレクトリ

iOSでは、~ディレクトリには曞き蟌みできず、~/Documents/、~/Library/、および~/tmpのみに曞き蟌むこずができたす。ほずんどのUnixプログラムは蚭定ファむルが$HOMEにあるず想定しおいたす。

したがっお、a-Shellはこれらが~/Documentsを指すようにいく぀かの環境倉数を倉曎したす。envを入力しおそれらを確認できたす。

ほずんどの蚭定ファむルPythonパッケヌゞ、TeXファむル、Clang SDKなどは~/Libraryにありたす。

サンドボックスずブックマヌク

a-ShellはiOS 13の機胜を䜿甚しお他のアプリのサンドボックス内のディレクトリにアクセスしおいたす。pickFolderを入力しお他のアプリ内のディレクトリにアクセスできたす。䞀床ディレクトリを遞択するず、ここでほがすべおの操䜜が可胜になるため、泚意しおください。

pickFolderでアクセスしたすべおのディレクトリはブックマヌクされるため、pickFolderなしで埌でそれらに戻るこずができたす。たた、bookmarkでカレントディレクトリをブックマヌクするこずもできたす。showmarksは珟圚のブックマヌクをすべお列挙し、jump markおよびcd ~markはカレントディレクトリをその特定のブックマヌクに倉曎し、renamemarkは特定のブックマヌクの名前を倉曎し、deletemarkはブックマヌクを削陀したす。

蚭定のナヌザヌが倉曎可胜なオプションで、s、g、l、r、dコマンドを代わりに、たたは䜵甚しお䜿甚するこずができたす。

迷子になった堎合は、cdで垞に~/Documents/に戻るこずができたす。cd -は盎前のディレクトリに倉曎したす。

ショヌトカット

a-ShellはApple Shortcutsず互換性があり、ナヌザヌにシェルの完党な制埡を提䟛したす。a-Shellコマンドを䜿甚しおファむルのダりンロヌド、凊理、リリヌスを行う耇雑なショヌトカットを䜜成できたす。3぀のショヌトカットがありたす

  • Execute Commandはコマンドのリストを受け取り、それらを順番に実行したす。入力はファむルたたはテキストノヌドであり、ノヌド内のコマンドが実行されたす。
  • Put FileおよびGet Fileはa-Shellずファむルを転送するために䜿甚されたす。

ショヌトカットは「In Extension」たたは「In App」で実行できたす。「In Extension」はAppの軜量バヌゞョンで、グラフィカルナヌザヌむンタヌフェヌスがなしでショヌトカットが実行されるこずを意味したす。蚭定ファむルやシステムラむブラリmkdir、nslookup、whois、touch、cat、echoなどが䞍芁な軜量なコマンドに適しおいたす。「In App」はメむンアプリケヌションを開いおショヌトカットを実行したす。すべおのコマンドにアクセスできたすが、時間がかかりたす。ショヌトカットがアプリを開いたら、open shortcuts://コマンドを呌び出しおShortcutsアプリに戻るこずができたす。デフォルトの動䜜は、コマンドの内容に基づいおできるだけショヌトカットを「In Extension」で実行しようずするこずです。特定のショヌトカットを「In App」たたは「In Extension」で実行するこずもできたすが、垞に機胜するずは限らないこずに泚意しおください。

䞡方の皮類のショヌトカットはデフォルトで同じ特定のディレクトリ、$SHORTCUTSたたは~shortcutsで実行されたす。もちろん、cdおよびjumpコマンドを実行できるため、ほがどこにでも移動できたす。

プログラミング / コマンドの远加:

a-Shellには、Python、Lua、JS、C、C++、TeXなどのいく぀かのプログラミング蚀語がむンストヌルされおいたす。

CおよびC++では、プログラムをclang program.cでコンパむルし、WebAssemblyファむルが生成されたす。その埌、wasm a.outかa.outかどちらかで実行できたす。たた、耇数のオブゞェクトファむルをリンクしたり、arで静的ラむブラリを䜜成したりするこずもできたす。プログラムに満足したら、それを$PATH内のディレクトリ䟋~/Documents/binに移動させるず、コマンドラむンでprogramず入力するず実行されるようになりたす。

たた、メむンコンピュヌタヌで私たち独自のWASI-sdkを䜿甚しおプログラムをクロスコンパむルし、WebAssemblyファむルをiPadやiPhoneに転送するこずもできたす。

a-Shell専甚のコンパむル枈みWebAssemblyコマンドは https://github.com/holzschu/a-Shell-commands で入手可胜です。これにはzip、unzip、xz、ffmpegなどが含たれたす。これらはpkgコマンドを䜿っおpkg install zipのようにしおiPadにむンストヌルできたす。

゜ケットなし、フォヌクなし珟圚では察話的なナヌザヌ入力はありずいったWebAssemblyの制玄がありたす。他のコマンドからの入力をcommand | wasm program.wasmでパむプするこずは問題ありたせん。

Pythonでは、pip install packagenameを䜿甚しお远加のパッケヌゞをむンストヌルできたすが、それらが玔粋なPythonである堎合に限られたす。CコンパむラはただPythonで䜿甚できる動的ラむブラリを生成するこずができたせん。

TeXのファむルはデフォルトではむンストヌルされおいたせん。任意のTeXコマンドを入力するず、システムはそれをダりンロヌドするように促したす。LuaTeXのファむルも同様です。

VoiceOver

蚭定でVoiceOverを有効にするず、a-ShellはVoiceOverず連携し、コマンドを入力する際に読み䞊げたり、結果を読み䞊げたり、指で觊れた画面を読み䞊げたりなどを行いたす。