<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hishantik Sarkar</title>
    <description>The latest articles on DEV Community by Hishantik Sarkar (@hishantik).</description>
    <link>https://dev.to/hishantik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F928401%2F5b43aaae-ed2b-4db0-9b1a-112f09a36af0.jpg</url>
      <title>DEV Community: Hishantik Sarkar</title>
      <link>https://dev.to/hishantik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hishantik"/>
    <language>en</language>
    <item>
      <title>Setting Up Termux for Web Development: A Complete Guide</title>
      <dc:creator>Hishantik Sarkar</dc:creator>
      <pubDate>Tue, 11 Feb 2025 12:43:36 +0000</pubDate>
      <link>https://dev.to/hishantik/setting-up-termux-for-web-development-a-complete-guide-jal</link>
      <guid>https://dev.to/hishantik/setting-up-termux-for-web-development-a-complete-guide-jal</guid>
      <description>&lt;p&gt;Termux is a powerful terminal emulator for Android that allows you to&lt;br&gt;
run a Linux environment without root. With the right setup, you can&lt;br&gt;
turn Termux into a fully functional &lt;strong&gt;web development&lt;/strong&gt; environment with&lt;br&gt;
&lt;strong&gt;Oh My Zsh, Oh My Posh, Git, Neovim/LunarVim, and Node.js (Live Server).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this guide, you’ll learn how to:&lt;/p&gt;

&lt;p&gt;✅ Install and configure Termux&lt;/p&gt;

&lt;p&gt;✅ Set up a powerful shell with Oh My Zsh and Oh My Posh&lt;/p&gt;

&lt;p&gt;✅ Install Git for version control&lt;/p&gt;

&lt;p&gt;✅ Configure Neovim/LunarVim for coding&lt;/p&gt;

&lt;p&gt;✅ Set up Node.js with a Live Server for web development&lt;/p&gt;


&lt;h2&gt;
  
  
  1. Installing Termux &amp;amp; Required Packages
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1:&lt;/strong&gt; Install Termux
&lt;/h3&gt;

&lt;p&gt;Download and install Termux from F-Droid (recommended) or from GitHub (Termux GitHub).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ DO NOT install Termux from the Play Store as it’s outdated!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2:&lt;/strong&gt; Update Termux and Install Basic Packages
&lt;/h3&gt;

&lt;p&gt;Open Termux and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pkg update &amp;amp;&amp;amp; pkg upgrade -y
pkg install termux-api x11-repo tur-repo
pkg install zsh git neovim nodejs python wget curl unzip -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3:&lt;/strong&gt; Create a Symlink to an External SD Card for Easy Access
&lt;/h3&gt;

&lt;p&gt;If your device has an external SD card, you can create a symbolic link (symlink) to access it easily from your home directory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Step 1: Find the Name of Your External SD Card.&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system assigns a unique name to your SD card, usually in the format /XXXX-XXXX (e.g., /3454-3377). To find the name of your SD card, open a terminal and type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output would be somewhat similar to this :&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Filesystem&lt;/th&gt;
&lt;th&gt;1K-blocks&lt;/th&gt;
&lt;th&gt;Used&lt;/th&gt;
&lt;th&gt;Available&lt;/th&gt;
&lt;th&gt;Use%&lt;/th&gt;
&lt;th&gt;Mounted on&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/dev/root&lt;/td&gt;
&lt;td&gt;305248512&lt;/td&gt;
&lt;td&gt;12345678&lt;/td&gt;
&lt;td&gt;292902834&lt;/td&gt;
&lt;td&gt;5%&lt;/td&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;devtmpfs&lt;/td&gt;
&lt;td&gt;4000000&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4000000&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;/dev&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tmpfs&lt;/td&gt;
&lt;td&gt;4023456&lt;/td&gt;
&lt;td&gt;456&lt;/td&gt;
&lt;td&gt;4023000&lt;/td&gt;
&lt;td&gt;1%&lt;/td&gt;
&lt;td&gt;/dev/shm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tmpfs&lt;/td&gt;
&lt;td&gt;4023456&lt;/td&gt;
&lt;td&gt;1234&lt;/td&gt;
&lt;td&gt;4022222&lt;/td&gt;
&lt;td&gt;1%&lt;/td&gt;
&lt;td&gt;/run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tmpfs&lt;/td&gt;
&lt;td&gt;4023456&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4023456&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;/sys/fs/cgroup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/dev/mmcblk1p1&lt;/td&gt;
&lt;td&gt;6233392&lt;/td&gt;
&lt;td&gt;2123456&lt;/td&gt;
&lt;td&gt;4109936&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;td&gt;/boot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/dev/sda1&lt;/td&gt;
&lt;td&gt;976762584&lt;/td&gt;
&lt;td&gt;234567890&lt;/td&gt;
&lt;td&gt;742194694&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;td&gt;/mnt/data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/dev/mmcblk0p1&lt;/td&gt;
&lt;td&gt;6233392&lt;/td&gt;
&lt;td&gt;3123456&lt;/td&gt;
&lt;td&gt;3109936&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;/storage/3454-3377&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tmpfs&lt;/td&gt;
&lt;td&gt;4023456&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;4023444&lt;/td&gt;
&lt;td&gt;1%&lt;/td&gt;
&lt;td&gt;/run/user/1000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/storage/3454-3377&lt;/td&gt;
&lt;td&gt;3488388&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;36637727&lt;/td&gt;
&lt;td&gt;6%&lt;/td&gt;
&lt;td&gt;/mnt&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;Look at the last line of the output—it typically contains the mount point of your SD card.&lt;/p&gt;

&lt;p&gt;In this example, the external SD card is mounted at:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;/storage/3454-3377&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the value you need to use when creating the symlink.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Step 2: Create a Symlink to the SD Card&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you have the SD card name, create a symlink to it using the following command (replace 3454-3377 with the actual name of your SD card):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ln -s /storage/3454-3377 ~/sdcard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command creates a symbolic link (~/sdcard) in your home directory, allowing you to access your SD card easily without navigating through long directory paths.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Setting Up a Powerful Shell (Oh My Zsh &amp;amp; Oh My Posh)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1:&lt;/strong&gt; Install and Configure Oh My Zsh
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pkg install zsh -y
chsh -s zsh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart Termux, then install Oh My Zsh:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install the Powerlevel10k theme for a better experience:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.oh-my-zsh/custom/themes/powerlevel10k
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set the theme in ~/.zshrc:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nano ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change the line:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ZSH_THEME="powerlevel10k/powerlevel10k"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Save and exit (CTRL + X, then Y, then ENTER).&lt;/p&gt;

&lt;p&gt;Restart Termux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2:&lt;/strong&gt; Install and Configure Oh My Posh (Optional)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pkg install oh-my-posh -y
oh-my-posh font install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To use Oh My Posh, add this to ~/.zshrc:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;eval "$(oh-my-posh init zsh --config ~/.config/oh-my-posh/theme.json)"&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3. Installing Git for Version Control
&lt;/h2&gt;

&lt;p&gt;Git is essential for managing your code and collaborating with others.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pkg install git -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace "YourName" and "&lt;a href="mailto:your@email.com"&gt;your@email.com&lt;/a&gt;" with your preferred Git username and email address.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.name "YourName"
git config --global user.email "your@email.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check if Git is working:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Setting Up Neovim and configure it with LunarVim for Coding
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step:&lt;/strong&gt; Install Neovim
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pkg install neovim -y

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check whether neovim have installed properly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nvim --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;step 2:&lt;/strong&gt; Install LunarVim
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pkg install python rust nodejs ripgrep make fd -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Resolve EACCES permissions when installing packages globally&lt;/em&gt;&lt;/strong&gt; to avoid error when installing packages with npm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To minimize the chance of permissions errors, you can configure npm to use a different directory. In this example, you will create and use hidden directory in your home directory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On the command line, in your home directory, create a directory for global installations:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    mkdir -p ~/.npm-global/lib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Configure npm to use the new directory path:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm config set prefix '~/.npm-global'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;In your preferred text editor, open  ~/.zshrc file and add this line:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export PATH=~/.npm-global/bin:$PATH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;On the command line, update your system variables:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To test your new configuration, install a package globally without using sudo:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g jshint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, run the below command in the terminal to install lunarvim :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LV_BRANCH='release-1.4/neovim-0.9' bash &amp;lt;(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.4/neovim-0.9/utils/installer/install.sh)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Type &lt;strong&gt;yes&lt;/strong&gt; whenever prompted during installation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run LunarVim:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lvim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For plugins, edit ~/.config/lvim/config.lua :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lvim ~/.config/lvim/config.lua
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essential Plugins for Web Development&lt;/p&gt;

&lt;p&gt;Add these to your LunarVim config &lt;strong&gt;&lt;em&gt;(~/.config/lvim/config.lua):&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lvim.plugins = {
  {"neoclide/coc.nvim", branch = "release"},
  {"preservim/nerdtree"},
  {"tpope/vim-fugitive"},
  {"vim-airline/vim-airline"},
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now to save and restart LunarVim, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:lvimreload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To make lunarvim your default editor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export EDITOR=lvim
echo 'export EDITOR=lvim' &amp;gt;&amp;gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Setting Up a Live Server for wev-development.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Install Live Server and configure it :
add the following lines in &lt;strong&gt;&lt;em&gt;"/.config/lvim/config.lua"&lt;/em&gt;&lt;/strong&gt; inside lvim.plugins{...}
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    'barrett-ruth/live-server.nvim',
    build = 'pnpm add -g live-server',
    cmd = { 'LiveServerStart', 'LiveServerStop' },
    config = true
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To start a live server in your project folder through lunarvim, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:LiveServerStart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, it will automatically open project at &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt; in a default browser (using a browser that supports local networking, like Firefox,chrome,etc).&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Additional Tweaks for a Better Experience
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Enable Clipboard Support&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install termux-api if not already installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pkg install termux-api -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;To copy to clipboard:&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "Hello, Termux!" | termux-clipboard-set
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;To paste:&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;termux-clipboard-get
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Enable Storage Access&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the following command to allow Termux to access your phone's storage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; termux-setup-storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Your internal storage will be available in:&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;/storage/emulated/0/&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Enable X11 Support for GUI Apps&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to run GUI applications (e.g., a browser, VS Code alternative), install a VNC server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pkg install tigervnc
vncserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, connect using a VNC client.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Running a Complete Web Development Workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1:&lt;/strong&gt; Clone a Web Project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/your-username/your-project.git
cd your-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2:&lt;/strong&gt; Start Neovim/LunarVim
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lvim index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3:&lt;/strong&gt; Run the Live Server from inside lunarvim
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:LiveServerStart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opens &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt; on a default browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;With this setup, your &lt;strong&gt;Android phone&lt;/strong&gt; can become a &lt;strong&gt;powerful web development machine!&lt;/strong&gt; You now have:&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Oh My Zsh &amp;amp; Oh My Posh&lt;/strong&gt; for a great shell experience&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Git&lt;/strong&gt; for version control&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Neovim/LunarVim&lt;/strong&gt; for advanced coding&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Node.js&lt;/strong&gt; with a &lt;strong&gt;Live Server&lt;/strong&gt; for real-time development&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Gaming on Linux Using Wine/Proton with DXVK &amp; Lutris: A Complete Guide</title>
      <dc:creator>Hishantik Sarkar</dc:creator>
      <pubDate>Tue, 11 Feb 2025 04:35:31 +0000</pubDate>
      <link>https://dev.to/hishantik/gaming-on-linux-using-wineproton-with-dxvk-a-complete-guide-2mh6</link>
      <guid>https://dev.to/hishantik/gaming-on-linux-using-wineproton-with-dxvk-a-complete-guide-2mh6</guid>
      <description>&lt;h1&gt;
  
  
  &lt;strong&gt;Overview&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Linux gaming has improved dramatically in recent years, thanks to Wine, Proton, DXVK, and Lutris. Whether you're trying to play AAA titles, indie games, or older Windows-only games, these technologies provide an excellent gaming experience.&lt;/p&gt;

&lt;p&gt;In this guide, we’ll explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How Wine, Proton, DXVK, and Lutris work together&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up your Linux system for gaming          &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Running Windows games using Wine, Proton, or Lutris&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimizing performance for the best gaming experience&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;1. Understanding Wine, Proton, DXVK, and Lutris&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before setting things up, let's break down these key technologies:&lt;/p&gt;

&lt;h3&gt;
  
  
  Wine
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Wine (Wine Is Not an Emulator) allows you to run Windows applications on Linux without a virtual machine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It translates Windows API calls into POSIX-compatible calls in real time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Many Windows games work on Wine, but some need additional tweaks.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Proton
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Developed by Valve, Proton is a compatibility layer built on Wine but optimized for gaming.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Comes bundled with Steam Play, allowing you to play many Windows games directly from Steam.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uses DXVK and VKD3D to improve DirectX performance on Linux.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  DXVK
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DXVK translates DirectX 9, 10, and 11 calls into Vulkan API calls.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Significantly improves performance for DirectX-based games on Linux.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Works with both Wine and Proton.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lutris
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Lutris is a game manager that helps you install and run Windows games using Wine, DXVK, and Proton.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supports GOG, Epic Games, Battle.net, Ubisoft Connect, Origin, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Makes Wine gaming easier by providing community-made install scripts.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;2. Setting Up Your Linux System for Gaming&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Install Graphics Drivers&lt;/p&gt;

&lt;p&gt;Before anything, ensure your GPU drivers are up to date.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Arch based system
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AMD (Mesa Drivers)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pacman -S mesa lib32-mesa libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau libva-vdpau-driver lib32-libva-vdpau-driver vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  NVIDIA
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pacman -S mesa lib32-mesa vulkan-icd-loader lib32-vulkan-icd-loader nvidia nvidia-utils lib32-nvidia-utils libvdpau lib32-libvdpau
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  INTEL
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pacman -S vulkan-intel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Install Wine&lt;/p&gt;

&lt;p&gt;On Arch-based systems, install Wine and dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S wine wine-staging winetricks

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  For Debian/Ubuntu:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install wine winetricks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Install Steam with Proton&lt;/p&gt;

&lt;p&gt;If you're using Steam, install it first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S steam
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enable Steam Play in Steam settings:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Open Steam &amp;gt; Settings &amp;gt; Steam Play&lt;/p&gt;

&lt;p&gt;Enable Steam Play for all titles&lt;/p&gt;

&lt;p&gt;Select the latest Proton version&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Install DXVK (for non-Steam Games)&lt;/p&gt;

&lt;h3&gt;
  
  
  For Wine users who want to run non-Steam games, manually install DXVK:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://github.com/doitsujin/dxvk/releases/latest/download/dxvk.tar.gz
tar -xvf dxvk.tar.gz
cd dxvk-x.x
./setup_dxvk.sh install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;3. Running Windows Games with Wine/Proton&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For Steam Games
&lt;/h3&gt;

&lt;p&gt;Just install the game via Steam.&lt;/p&gt;

&lt;p&gt;If it doesn't work out of the box, force Proton:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Right-click the game &amp;gt; Properties &amp;gt; Compatibility&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Enable "Force the use of a specific Steam Play compatibility tool"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose the latest Proton version&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For Non-Steam Games (Using Wine)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create a Wine Prefix&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WINEPREFIX=~/.wine-game WINEARCH=win64 winecfg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Install Game Dependencies (if needed)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WINEPREFIX=~/.wine-game winetricks corefonts vcrun2019 dxvk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Run the Game&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WINEPREFIX=~/.wine-game wine game.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Optimizing Performance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Enable Fsync &amp;amp; Esync&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fsync and Esync improve performance in some games.&lt;/p&gt;

&lt;p&gt;Add this to the launch options in Steam:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PROTON_NO_ESYNC=1 %command%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;or&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PROTON_NO_FSYNC=1 %command%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Use Game-Specific Proton Versions (Proton-GE)
&lt;/h4&gt;

&lt;p&gt;Proton-GE is a community-built Proton version that often includes patches for better performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install ProtonUp-Qt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo pacman -S protonup-qt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run ProtonUp-Qt and install the latest Proton-GE version.&lt;/p&gt;

&lt;h4&gt;
  
  
  Enable AMD FSR (For Low-End GPUs)
&lt;/h4&gt;

&lt;p&gt;You can use FSR (FidelityFX Super Resolution) to upscale resolution and boost FPS:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Add this to launch options in Steam:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WINE_FULLSCREEN_FSR=1 %command%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Works best in fullscreen mode&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Enable DXVK in Lutris
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open Lutris&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the game &amp;gt; Configure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under Runner Options, enable DXVK&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;5. Checking Game Compatibility&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before installing a game, check its compatibility on ProtonDB and Lutris.net:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🔗 &lt;a href="https://www.protondb.com" rel="noopener noreferrer"&gt;https://www.protondb.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://lutris.net" rel="noopener noreferrer"&gt;https://lutris.net&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ProtonDB provides reports on how well games work with Proton.&lt;/p&gt;

&lt;p&gt;Lutris.net offers Wine installation scripts for many Windows games.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;With &lt;strong&gt;Wine, Proton, DXVK, and Lutris&lt;/strong&gt;, gaming on Linux is more accessible than ever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Proton&lt;/strong&gt; for Steam games.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Lutris&lt;/strong&gt; for non-Steam games like Epic, GOG, Battle.net, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enable DXVK&lt;/strong&gt; and tweak settings for the best performance.&lt;/p&gt;

&lt;p&gt;Have you tried gaming on Linux? What are your experiences? Let me know in the comments!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
