• Stars
    star
    192
  • Rank 202,019 (Top 4 %)
  • Language
    Shell
  • License
    MIT License
  • Created over 9 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Scripts to repurpose old android device as second monitor on linux

linux-second-screen

Scripts to repurpose old android device as second monitor on linux

Warnning

This script is using Legacy nVidea Driver and may not be compatible anymore. It was created on 2017 and it's not actively maintained. Please be carefull if you insist to use it. One alternative cold be using the evdi kernel module. Look here for more details.

Usage

This repo have many bash scripts to interact with android using adb. Each script have it's own function.

Device

A simple wrapper to select target device by name.

Add device

device add droid2 015F13B817021010

Usage

device droid2 adb shell
device droid2 <any other command>

Display

Change host (linux) display settings. With this script we can create, change settings or remove of virtual displays. It does not care about positioning the virtual displays, this should be done using your favorite monitor app. E.g.: xrandr, arandr or some other you like.

droid

General commands for android. This script is a wrapper for adb, with it we can:

  • start an app to resolve one url
  • open pre-defined activites
  • set date and time
  • get device ip
  • connect to wifi
  • get sdk
  • get model
  • get and change orientation
  • change some developer settings
  • get screen resolution
  • shutdown device
  • record and playback inputs

input

An reimplementation of input script on android. Some devices doesn't have tap and swipe command, so this script tries to reprotuce theses commands.

keyboard

Send multiple KEY_EVENTS in a single string. The idea here is to simplify the way to send keyboard inputs. This script replaces (space character) by %s the one is used by key event. Also send key events by name, just using UPPERCASED text.

# We can input text, then key, the text again, the order doesn't matter
keyboard "My name is Bruno;ENTER;This one is probably on the next field"

# we can also send multiple key events
keyboard "UP;UP;DOWN;DOWN;LEFT;RIGHT;LEFT;RIGHT"

terminal

This script is a wrapper to interact with screen, a screen manager for terminal. Using screen we can share a terminal session like. The idea is use it like a vnc, and connect other devices to keep a terminal session running on then like server logs or status.

vnc

A wrapper for vnc commands. We have only two commands here:

  • Start - wich starts vnc for a virtual display
  • window - wich starts vnc for a given window

Setup

First we need to run setup to install all tools we need to run this. There are tools that we doesn't provide, like adb (Android Debug Bridge), it comes with android sdk. You will have to setup adb into your path.

Then run setup. You will be prompt to put your password to install necessary tools. We may split setup into multiple phases later, for optional instalation.

# install tools
./main setup

# create virtual displays, only works with intel's graphic card
# you may change 2 by any number of virtual displays you want
./display create 2

Restart you computer, if you created virtual display. When you login again you will see VIRTUAL as possible video output.

How to create a extended display? - Intel's graphic card only

With these scripts it gets simple. But we still need to make some touches to make then integrated. may I make this on main.

I high recomend you to write a script to start your own devices, this will make your life a lot easier. So I will write the step-by-step in a script-like.

Step 1 - get information from your device

We need to know the resolution from our device, it's orientation and screen size inches. Based on these two informations we can create one virtual display.

# resolution - this one may fail, so you may have to get this information from internet
# ./droid resolution
resolution=$(./droid resolution)

# replace resolution ´x´ by ´ ´ (space)
resolution=${resolution/x/ }

# orientation
# ./droid orientation
orientation=$(./droid orientation)

# inches - this one may fail too, cause we need resolution and density to calculate an aproximate screen inches
# ./droid inches
inches=$(./droid inches)

Step 2 - calculate virtual display resolution

Now we have the resolution let's calculate an virtual display size

# ./display calcRes $resolution $inches
virtual=$(./display calcRes $resolution $inches | grep virtual | grep -Po "(\d+x\d+)")

Step 3 - set virtual display resolution

Let's set the resolution for display 1. Depending on orientation we change order of width and height.

virtual=(${virtual/x/ })
width=${virtual[0]}
height=${virtual[1]}
if [ "$orientation" == 0 ] || [ "$orientation" == 2]; then
  # portrait
  ./display setRes 1 $width $height
else
  # landscape
  ./display setRes 1 $height $width
fi

Step 4 - share display on vnc

./vnc start 1

Step 5 - share vnc connection directly to device

./droid start vnc://{your local ip address}:5900

Here we can also use adb reverse tcp:5900 tcp:5900 to make a tunnel using usb cable, but it only works on android 5.0+.

Step 6 - clean

Shutdown display and remove configurations from it.

./display remove 1

if you still want to do it by hand

Follow this tutorial.

Similar apps

This app will be made by the rage because we have a lot of apps for all other platforms Only linux isn't supported by those apps.

Splashtop appear to have a beta, for linux.
\o/

More Repositories

1

PicPicker

A simple library to pick pictures from the gallery and camera.
Java
60
star
2

i3wm-conf

My i3wm config files
Shell
26
star
3

AndroidSimplePreferences

A Library to work with preferences
Java
21
star
4

SlackUpload

A plugin to send files to slack.
Java
18
star
5

anime-watcher

Anime player. It ueses information from pages and display the content inside de app.
Kotlin
14
star
6

GradleHelpers

Few helpers to work with gradle. Tasks and samples of how to work with gradle.
12
star
7

java-validation

A lib to make validations on java objects
Java
10
star
8

IpGetter

The IpGetter is a plugin which will help us to get the Ip of the current machine to use on a build.gradle.
Kotlin
6
star
9

TestArtifacts

(WIP) A gradle plugin and tool to store reports for open source projects.
Kotlin
5
star
10

Firedroid

A simple firebase chat project
Java
4
star
11

concrete-desafio-android

Aplicativo android que consulta api do Github
Java
4
star
12

parse_graphql

JavaScript
2
star
13

cexec

This is a simple executor, sometimes the default `exec` task does not work as expected.
Groovy
2
star
14

indenter-pro

Project to create de most powerfull and helpfull tool for programing.
Java
1
star
15

bashrc

Linux mint bash prompt dynamic with git branches
Shell
1
star
16

amarino

Automatically exported from code.google.com/p/amarino
Java
1
star
17

lima

A wrapper tool for docker and docker-compose
Shell
1
star
18

MTGLifeLink

A simple app to manage MTG life
Kotlin
1
star
19

ColorPicker

A tool to pick colors using mouse position
Java
1
star
20

AndroidShellUtils

Multiple Tools that can be used from CLI to help android devs life
Kotlin
1
star
21

EnvironmentMods

A library to help to manage environment aware dependencies
Java
1
star
22

CirclePanoramaImage

Java
1
star
23

Notifier

Old Android projet to send notifications to arduino
Java
1
star
24

PokemonGo

Java
1
star
25

Clipboarder

A tool to manage clipboard history
Kotlin
1
star
26

AndroidDeviceName

A api to get the commercial name of one device
HTML
1
star
27

AndroidMockLocation

Android app to send mock location to real device through a service.
Java
1
star