├── .gitignore ├── Makefile ├── deb ├── DEBIAN │ ├── prerm │ ├── postinst │ └── control └── data │ └── data │ └── com.termux │ └── files │ └── usr │ ├── share │ ├── pixmaps │ │ └── com.visualstudio.code.png │ ├── applications │ │ ├── code-url-handler.desktop │ │ └── code.desktop │ ├── bash-completion │ │ └── completions │ │ │ └── code │ └── zsh │ │ └── vendor-completions │ │ └── _code │ ├── bin │ └── code │ └── etc │ └── proot-distro │ └── debian-vscode.sh └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.deb 2 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | dpkg -b deb vscode-termux.deb 3 | -------------------------------------------------------------------------------- /deb/DEBIAN/prerm: -------------------------------------------------------------------------------- 1 | if [ -d "/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/debian-vscode" ]; then 2 | proot-distro remove debian-vscode 3 | fi 4 | -------------------------------------------------------------------------------- /deb/DEBIAN/postinst: -------------------------------------------------------------------------------- 1 | if [ ! -d "/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/debian-vscode" ]; then 2 | proot-distro install debian-vscode 3 | fi 4 | -------------------------------------------------------------------------------- /deb/data/data/com.termux/files/usr/share/pixmaps/com.visualstudio.code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leap0x7b/vscode-termux/HEAD/deb/data/data/com.termux/files/usr/share/pixmaps/com.visualstudio.code.png -------------------------------------------------------------------------------- /deb/data/data/com.termux/files/usr/bin/code: -------------------------------------------------------------------------------- 1 | #!/data/data/com.termux/files/usr/bin/bash 2 | xhost + &>/dev/null 3 | proot-distro login debian-vscode --user vscode --shared-tmp -- env DISPLAY=$DISPLAY $PREFIX/bin/dbus-launch code --user-data-dir=/data/data/com.termux/files/home/.config/Code --no-sandbox $@ 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vscode-termux 2 | A Debian package that allows you to use Visual Studio Code in Termux, inspired by firefox-termux by @WMCB-Tech 3 | ## How to Install 4 | ```bash 5 | make 6 | apt install ./vscode-termux.deb 7 | ``` 8 | ## Troubleshooting 9 | If `code` failed to install, try to do this: 10 | ```bash 11 | proot-distro login debian-vscode 12 | apt install code 13 | dpkg --configure -a 14 | ``` 15 | -------------------------------------------------------------------------------- /deb/data/data/com.termux/files/usr/share/applications/code-url-handler.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Visual Studio Code - URL Handler 3 | Comment=Code Editing. Redefined. 4 | GenericName=Text Editor 5 | Exec=code --open-url %U 6 | Icon=com.visualstudio.code 7 | Type=Application 8 | NoDisplay=true 9 | StartupNotify=true 10 | Categories=Utility;TextEditor;Development;IDE; 11 | MimeType=x-scheme-handler/vscode; 12 | Keywords=vscode; 13 | -------------------------------------------------------------------------------- /deb/data/data/com.termux/files/usr/share/applications/code.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Visual Studio Code 3 | Comment=Code Editing. Redefined. 4 | GenericName=Text Editor 5 | Exec=code --unity-launch %F 6 | Icon=com.visualstudio.code 7 | Type=Application 8 | StartupNotify=false 9 | StartupWMClass=Code 10 | Categories=Utility;TextEditor;Development;IDE; 11 | MimeType=text/plain;inode/directory;application/x-code-workspace; 12 | Actions=new-empty-window; 13 | Keywords=vscode; 14 | 15 | [Desktop Action new-empty-window] 16 | Name=New Empty Window 17 | Exec=code --new-window %F 18 | Icon=com.visualstudio.code 19 | -------------------------------------------------------------------------------- /deb/DEBIAN/control: -------------------------------------------------------------------------------- 1 | Package: vscode-termux 2 | Version: 1.0.2 3 | Section: devel 4 | Architecture: all 5 | Maintainer: Leap of Azzam (leapofazzam123) 6 | Provides: visual-studio-code 7 | Depends: proot, proot-distro, x11-repo, wget, gpgme 8 | Conflicts: visual-studio-code 9 | Replaces: visual-studio-code 10 | Homepage: https://code.visualstudio.com/ 11 | Description: Code editing. Redefined. 12 | Visual Studio Code is a new choice of tool that combines the simplicity of a 13 | code editor with what developers need for the core edit-build-debug cycle. 14 | See https://code.visualstudio.com/docs/setup/linux for installation 15 | instructions and FAQ. 16 | 17 | -------------------------------------------------------------------------------- /deb/data/data/com.termux/files/usr/share/bash-completion/completions/code: -------------------------------------------------------------------------------- 1 | _code() 2 | { 3 | local cur prev words cword split 4 | _init_completion -s || return 5 | 6 | _expand || return 7 | 8 | case $prev in 9 | -d|--diff) 10 | _filedir 11 | return 12 | ;; 13 | -a|--add|--user-data-dir|--extensions-dir) 14 | _filedir -d 15 | return 16 | ;; 17 | -g|--goto) 18 | compopt -o nospace 19 | _filedir 20 | return 21 | ;; 22 | --locale) 23 | COMPREPLY=( $( compgen -W 'de en en-US es fr it ja ko ru zh-CN zh-TW bg hu pt-br tr' ) ) 24 | return 25 | ;; 26 | --install-extension|--uninstall-extension) 27 | _filedir vsix 28 | return 29 | ;; 30 | --log) 31 | COMPREPLY=( $( compgen -W 'critical error warn info debug trace off' ) ) 32 | return 33 | ;; 34 | --folder-uri|--disable-extension|--max-memory) 35 | # argument required but no completions available 36 | return 0 37 | ;; 38 | --enable-proposed-api) 39 | # argument optional but no completions available 40 | ;; 41 | esac 42 | 43 | $split && return 44 | 45 | if [[ $cur == -* ]]; then 46 | COMPREPLY=( $( compgen -W '-d --diff --folder-uri -a --add -g 47 | --goto -n --new-window -r --reuse-window -w --wait --locale= 48 | --user-data-dir -v --version -h --help --extensions-dir 49 | --list-extensions --show-versions --install-extension 50 | --uninstall-extension --enable-proposed-api --verbose --log -s 51 | --status -p --performance --prof-startup --disable-extensions 52 | --disable-extension --inspect-extensions 53 | --inspect-brk-extensions --disable-gpu 54 | --max-memory=' -- "$cur") ) 55 | [[ $COMPREPLY == *= ]] && compopt -o nospace 56 | return 57 | fi 58 | 59 | _filedir 60 | } && 61 | complete -F _code code 62 | -------------------------------------------------------------------------------- /deb/data/data/com.termux/files/usr/share/zsh/vendor-completions/_code: -------------------------------------------------------------------------------- 1 | #compdef code 2 | 3 | local arguments 4 | 5 | arguments=( 6 | '(-d --diff)'{-d,--diff}'[compare two files with each other]:file to compare:_files:file to compare with:_files' 7 | \*'--folder-uri[open a window with given folder uri(s)]:folder uri: ' 8 | \*{-a,--add}'[add folder(s) to the last active window]:directory:_directories' 9 | '(-g --goto)'{-g,--goto}'[open a file at the path on the specified line and column position]:file\:line[\:column]:_files -r \:' 10 | '(-n --new-window -r --reuse-window)'{-n,--new-window}'[force to open a new window]' 11 | '(-n --new-window -r --reuse-window)'{-r,--reuse-window}'[force to open a file or folder in an already opened window]' 12 | '(-w --wait)'{-w,--wait}'[wait for the files to be closed before returning]' 13 | '--locale=[the locale to use (e.g. en-US or zh-TW)]:locale (e.g. en-US or zh-TW):(de en en-US es fr it ja ko ru zh-CN zh-TW bg hu pt-br tr)' 14 | '--user-data-dir[specify the directory that user data is kept in]:directory:_directories' 15 | '(- *)'{-v,--version}'[print version]' 16 | '(- *)'{-h,--help}'[print usage]' 17 | '--telemetry[show all telemetry events which VS code collects]' 18 | '--extensions-dir[set the root path for extensions]:root path:_directories' 19 | '--list-extensions[list the installed extensions]' 20 | '--category[filters installed extension list by category, when using --list-extensions]' 21 | '--show-versions[show versions of installed extensions, when using --list-extensions]' 22 | '--install-extension[install an extension]:id or path:_files -g "*.vsix(-.)"' 23 | '--uninstall-extension[uninstall an extension]:id or path:_files -g "*.vsix(-.)"' 24 | '--enable-proposed-api[enables proposed API features for extensions]::extension id: ' 25 | '--verbose[print verbose output (implies --wait)]' 26 | '--log[log level to use]:level [info]:(critical error warn info debug trace off)' 27 | '(-s --status)'{-s,--status}'[print process usage and diagnostics information]' 28 | '(-p --performance)'{-p,--performance}'[start with the "Developer: Startup Performance" command enabled]' 29 | '--prof-startup[run CPU profiler during startup]' 30 | '(--disable-extension --disable-extensions)--disable-extensions[disable all installed extensions]' 31 | \*'--disable-extension[disable an extension]:extension id: ' 32 | '--inspect-extensions[allow debugging and profiling of extensions]' 33 | '--inspect-brk-extensions[allow debugging and profiling of extensions with the extension host being paused after start]' 34 | '--disable-gpu[disable GPU hardware acceleration]' 35 | '--max-memory=[max memory size for a window (in Mbytes)]:size (Mbytes)' 36 | '*:file or directory:_files' 37 | ) 38 | 39 | _arguments -s -S $arguments 40 | -------------------------------------------------------------------------------- /deb/data/data/com.termux/files/usr/etc/proot-distro/debian-vscode.sh: -------------------------------------------------------------------------------- 1 | # This is a default distribution plug-in. 2 | # Do not modify this file as your changes will be overwritten on next update. 3 | # If you want customize installation, please make a copy. 4 | DISTRO_NAME="Visual Studio Code Termux (Debian Bullseye)" 5 | 6 | TARBALL_URL['aarch64']="https://github.com/termux/proot-distro/releases/download/v2.2.0/debian-aarch64-pd-v2.2.0.tar.xz" 7 | TARBALL_SHA256['aarch64']="162ec58dd3cfd4e8924ad64e9d9fa4ee0b4ea7ddcfb62a0f6c542c6e6079b0fd" 8 | TARBALL_URL['arm']="https://github.com/termux/proot-distro/releases/download/v2.2.0/debian-arm-pd-v2.2.0.tar.xz" 9 | TARBALL_SHA256['arm']="4d907f0b596b5040fbf0fa41c9da5eea9049ff64bf2f54ddbd3ab0e317b16aa9" 10 | TARBALL_URL['i686']="https://github.com/termux/proot-distro/releases/download/v2.2.0/debian-i686-pd-v2.2.0.tar.xz" 11 | TARBALL_SHA256['i686']="357fcdd86b1680ce65bd43b2d8a127277f513ec1464ae70fbffe53a8952c6b03" 12 | TARBALL_URL['x86_64']="https://github.com/termux/proot-distro/releases/download/v2.2.0/debian-x86_64-pd-v2.2.0.tar.xz" 13 | TARBALL_SHA256['x86_64']="5ce7f65e089831b37d1cddeb67cfe4f3c487a507226b90535f420e13a37b9434" 14 | 15 | distro_setup() { 16 | echo 'deb http://deb.debian.org/debian sid main contrib non-free' > ./etc/apt/sources.list 17 | run_proot_cmd apt update 18 | run_proot_cmd apt install ca-certificates apt-transport-https -yq 19 | wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > ./root/packages.microsoft.gpg 20 | run_proot_cmd install -o root -g root -m 644 /root/packages.microsoft.gpg /etc/apt/trusted.gpg.d/ 21 | echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > ./etc/apt/sources.list.d/vscode.list 22 | rm -f ./root/packages.microsoft.gpg 23 | run_proot_cmd apt update 24 | # Fix dbus not installing 25 | touch ./var/lib/dpkg/statoverride 26 | run_proot_cmd apt install code alsa-utils pulseaudio libxshmfence1 -y 27 | # Make ALSA to use PulseAudio (this might be unnessesary since Visual Studio Code doesn't use sounds) 28 | mkdir ./usr/share/alsa/alsa.conf.pulse/ 29 | run_proot_cmd dpkg-divert --divert /usr/share/alsa/alsa.conf.pulse/pulse.conf --rename /usr/share/alsa/alsa.conf.d/pulse.conf 30 | run_proot_cmd dpkg-divert --divert /usr/share/alsa/alsa.conf.pulse/99-pulseaudio-default.conf.example --rename /usr/share/alsa/alsa.conf.d/99-pulseaudio-default.conf.example 31 | run_proot_cmd dpkg-divert --divert /usr/share/alsa/alsa.conf.pulse/50-pulseaudio.conf --rename /usr/share/alsa/alsa.conf.d/50-pulseaudio.conf 32 | run_proot_cmd useradd -d /data/data/com.termux/files/home vscode 33 | # Replace `ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"` with "$ELECTRON" "$@" to fix VS Code doesn't run 34 | sed -i 's:ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@":"$ELECTRON" "$@":g' ./usr/share/code/bin/code 35 | } 36 | --------------------------------------------------------------------------------