Java TightVNC Viewer on Stock Webtop - Atrix 4G Themes and Apps

So I figured out that you can run a Java based VNC Viewer (more specifically, I used TightVNC for both server and viewer) in the stock webtop to remotely control other machines. Remote apps are the best way to increase functionality of the phone/webtop when on wifi at home/work IMO.
The issue to overcome is getting Java to work in Firefox, there are a few topics already about this, but the information is a bit scattered and slightly outdated.
There is one downfall to this: The VNC window will not cover the app tray or notification bar at the top of the webtop display, so there is a limiting resolution you can use to login to the VNC server.
What you need:
1. Rooted phone
2. ES File Explorer or Root Explorer App
3. Terminal Emulator App
4. Java Download
I installed this version:
http://www.oracle.com/technetwork/java/embedded/downloads/ejre-6u32-downloads-1595958.html
ARMv7 Linux - Headful
There is a newer version (java 7),but I'm sticking with version 6 since I know it works.
5. A PC with TightVNC Server installed (or other VNC server with a Java based viewer). I would suggest running a headless virtual machine (with like VirtualBox), it makes it a lot easier to adjust the screen resolution to your needs. You can read here on my post about getting a VirtualMachine running and connecting your phone to it for more information:
http://forum.xda-developers.com/showthread.php?t=1650534
To Get Java Installed:
1. Download and extract the Java download. Once extracted, copy the whole ejre1.6.0_32 folder to /usr/lib/ using your favorite android file explorer with root access.
2. I did this step with webtop open,so you can copy and paste these commands inside the Terminal Emulator (make sure it has Super User access):
Code:
su
rm /usr/lib/firefox-addons/plugins/libnpjp2.so
ln -s /usr/lib/ejre1.6.0_32/lib/arm/libnpjp2.so /usr/lib/firefox-addons/plugins/libnpjp2.so
chmod 755 /usr/lib/ejre1.6.0_32/bin/java
chmod 755 /usr/lib/ejre1.6.0_32/bin/java_vm
chmod 755 /usr/lib/ejre1.6.0_32/bin/javaws
chmod 755 /usr/lib/ejre1.6.0_32/bin/keytool
3. For kicks,reboot the phone and see if it works (go here to verify: http://java.com/en/download/installed.jsp ). If it works,skip to step 5
4. Copy these commands into Terminal Emulator
Code:
su
mv /osh/etc/tomoyo/exception_policy.conf /osh/etc/tomoyo/exception_policy.bak
mv /osh/etc/tomoyo/domain_policy.conf /osh/etc/tomoyo/domain_policy.bak
/bin/touch /osh/etc/tomoyo/exception_policy.conf
/bin/touch /osh/etc/tomoyo/domain_policy.conf
Reboot the phone again,then try verifying it works or not with the link posted in the above step.
5. The hard part is over,you ave Java installed!
Now if Java is working properly,and if your VNC server is configured properly as well,you should be able to connect to it. By default TightVNC enables the Java Viewer on port 5800. So just type in the IP address of the server in Firefox,like:
192.168.2.99:5800
Type in your password,then you should be looking at the other desktop
6. For best practice,its good to set the resolution to the PC you are remoting into,to the max viewable resolution of the laptop dock (or PC/Monitor). This is a lot easier when using a headless VM,since doing custom resolutions otherwise can be a pain.
I will edit this line tomorrow after I get to work to see what I set the resolution at so it fits without scrolling
Thread References:
http://forum.xda-developers.com/showthread.php?t=1239265
http://forum.xda-developers.com/showpost.php?p=17755644&postcount=40

I somehow was able to get AWN Manager to work on my install,and was able to set it so maximized windows can cover it up (which also requires you to right click on the title bar of the window and click Always On Top).
Long story short,I can now use the Java VM with a max res of 1364x686
There is a pixel on each side of the window,and the menu/title/status bars are still at the top of the screen.
It beats the phone's resolution stretched out in any case.

Related

[Q] Android Emulator: edit hosts file doesn't resolve custom domain name

Halo All,
I'm developing a mobile website and I want to see how it looks in Android Simulator.
I manage to edit my android's /etc/hosts file. Here's what I did:
1. Create an Android Virtual Device (AVD)
2. Open the AVD with this command
Code:
./emulator -avd android -partition-size 128
3. Execute the following commands
Code:
./adb remount
4. Get the android hosts file
Code:
./adb pull /etc/hosts
5. Add my mobile website into the android's hosts file. It looks like the following
Code:
127.0.0.1 localhost
172.19.14.46 m.myweb.localhost
6. Push the hosts file to the simulator
Code:
./adb push hosts /etc/hosts
7. Open the web mobile in the simulator and Host do not found. The web mobile should appear.
Did I miss something here?
Btw I use Ubuntu 10.10 and android-sdk_r08-linux_86 API 7 (Android SDK 2.1)
It's been 2 days and no reply. I wonder whether the question is confusing to understand or it cannot be replicated.
FYI, m.myweb.localhost is a virtual host running in my local machine.
found a solution for this problem?
spending the whole ****ing day with it -.-
yes, you can change name it?

[TUTORIAL] Run Ubuntu 10.10 on Nexus One

Run Ubuntu 10.10 on Nexus One
--------------------------------
Background:
In June 2010, XDA zedomax got Ubuntu 9.04 running on Nexus One, tutorial is available at this thread:
http://forum.xda-developers.com/showthread.php?t=718952
I continued studying the tutorial and worked out a way to make Ubuntu 9.04 running better, smoother and cause less error, here's my post:
http://forum.xda-developers.com/showthread.php?t=815532
Recently HTC_Linux team has released version 0.3 of their Ubuntu image, compare to the original guide provided by zedomax, the v0.3 release is based on the latest Ubuntu 10.10. So I thought about making this tutorial to guide you to run Ubuntu 10.10 on your Nexus One.
--------------------------------
What benefits will you get from running Ubuntu 10.10 on Nexus One (at least):
1. Fully functional Linux terminal, with all standard Linux command line utilities
2. Fully functional desktop browser Firefox 3.6.13
3. Ability to compile and run native Linux applications
4. Bunch of graphical Internet and utility applications as shown in the screenshots
--------------------------------
Credit:
Thanks to the great XDA-developers community.
Thanks to Zedomax for providing the original tutorial of running Ubuntu on Nexus One.
Thanks to HTC_Linux team for creating the optimised Ubuntu 10.10 image file.
--------------------------------
Now the tutorial starts.
Preparation:
1. A micro SD card at least 4GB in capacity, 8GB/16GB is recommended
2. (Optional) If you're using Froyo App2SD, move all your applications which are on SD card back to Internal Storage, or you may also uninstall all applications that are on SD card. If you fail to do so, you won't be able to enter Ubuntu. However I've discovered a way that you won't need to move or uninstall apps on SD card, will discuss later.
3. Basic Linux shell knowledge
Then:
1. Get Ubuntu 10.10 from this post (file name: hd2-ubuntu_0.3.zip): http://forum.xda-developers.com/showthread.php?t=889433
2. Download attached scripts.zip
3. On your computer, make a directory on a partition that has more than 3.5GB available space, name the directory “ubuntu” (case-sensitive!)
4. Extract three scripts (b, e, u) from scripts.zip to the directory ubuntu
5. Once you finish download hd2-ubuntu_0.3.zip, extract linux/rootfs.ext2 to the directory ubuntu
6. In your ubuntu directory, rename rootfs.ext2 into ubuntu.img (case-sensitive!)
7. Now verify that you have the following files in your computer's ubuntu directory: b, e, u, ubuntu.img
8. Copy the whole ubuntu directory onto your SD card, put the SD card back to your phone
9. Power up your Nexus One
Now we have some script work:
1. Run a terminal application from your phone (e.g. Android Terminal, Better Terminal Emulator)
2. type “cd /sdcard/ubuntu” (enter)
3. type “sh u” (enter)
4. If you see “Type 'b' to boot Ubuntu”, then you're almost there!
5. Type “b” (enter)
6. If you see “[email protected]:/#” (like shown in screenshot) Congratulations! Now you're running Ubuntu 10.10 on your Nexus One!
Whenever you want to enter Ubuntu again, simply type “b” (enter) in your Android Terminal.
To properly exit from Ubuntu, you must type “exit” from Ubuntu terminal.
If your Android terminal application gets killed by Android system (i.e. you lost Ubuntu terminal), you need to go back to Android terminal, type “e” (enter), that will properly unmount Ubuntu.
Very often that you can get “loop device busy” error when exiting from Ubuntu, in that case, type “e” (enter) multiple times (it's harmless to run “e” script multiple times, don't worry). If still you get “loop device busy” error, don't worry, ignore it then.
--------------------------------
(Optional) If you would prefer working with GUI, now let's do some extra script work:
1. Install “android-vnc-viewer” from Market (freeware)
2. Enter Ubuntu terminal
3. Make sure that you have network connection (Wi-fi recommended)
4. type “apt-get update” (enter), and wait till it finishes
5. type “apt-get install tightvncserver” (enter) and answer “y” to the question
6. After installed tightvncserver, type “cd /bin” (enter)
7. Type the following commands (all are case-sensitive!):
“cat > x” (enter)
“rm -r -f /tmp” (enter)
“mkdir /tmp” (enter)
“chmod 777 /tmp” (enter)
“export USER=root” (enter)
“export XKL_XMODMAP_DISABLE=1” (enter)
“vncserver -geometry 1024x800” (enter)
(enter)
(press and hold trackball and click D on keyboard)
“chmod 777 x” (enter)
8. The above procedure makes a script named “x”, whenever you want to start GUI, you need to type “x” (enter).
Notice that the first time (only the first time) you run “x” script you'll be prompt to enter a password for VNC connection, then you'll be asked whether to create a “view-only” password, since it is not necessary, answer “n” to the question.
9. Start “android-vnc-viewer”, create a new connection with the following settings:
Nickname: (anything you like to identify the connection)
Password: the VNC connection password that you created when ran the “x”script
Address: localhost
Port: 5901
Color format: 24-bit color (4 bpp)
Click “Connect” button, and in about a minute, you'll see your Ubuntu 10.10 desktop!
10. We still need to create one final script called “s”, now go back to your Ubuntu terminal and type:
“cd /bin” (enter)
“cat > s” (enter)
“export USER=root” (enter)
“vncserver -kill :1” (enter)
“vncserver -kill :2” (enter)
“sudo reboot” (enter)
“sudo halt” (enter)
(enter)
(press and hold trackball and click “D” on keyboard)
“chmod 777 s” (enter)
11. If you have GUI running, you * MUST * type “s” (enter) to stop VNC server before you exit from Ubuntu terminal!
In case that your Android kills your Android Terminal application and you still have VNC server running, do the following steps:
a. Start Android Terminal
b. type “b” (enter) to bring back Ubuntu terminal
c. type “s” (enter) to stop VNC server
d. type “exit” (enter) to exit from Ubuntu terminal
Fail to do so you will have problem with VNC connection next time you use it.
--------------------------------
What are not working in Ubuntu:
1. Sound
2. Some applications may not run (I guess, due to Android memory management mechanism)
--------------------------------
A little trick to access SD card from your Ubuntu:
1. Install “SwiFTP” from Market (freeware)
2. Set up FTP server using SwiFTP
3. In Ubuntu, “Places → Connect to Server” then:
Service type: FTP (with login)
Server: localhost
Port: (port number specified in SwiFTP, default is 2121)
Folder: /
User Name: (user name specified in SwiFTP)
Then press “Connect” and enter your password specified in SwiFTP. Now feel free to access your phone's file system!
--------------------------------
How to bring up Ubuntu if you have applications installed on SD card using Froyo App2SD:
1. Make sure that your Android Terminal application is installed in Internal Storage
2. Put a shortcut to Android Terminal application on your home screen
3. Make sure you have got ubuntu directory and all its contents on SD card
4. Reboot your phone (stay sharp, these following steps require perfect timing!)
5. Once you enter lock screen, Immediately unlock it.
6. Enter Android Terminal and type “b” as quick as possible, do not press Enter yet!
7. Pay close attention to your notification bar, as soon as the “SD: Checking for errors” notification disappears (the little SD icon disappears), Immediately press Enter.
8. Now you should be in Ubuntu terminal, wait 1-2 minutes before you do anything else.
9. After 1-2 minutes, you may do whatever you want.
With some applications installed on SD card, you must do the procedure above to bring up Ubuntu terminal each time you reboot your phone.
--------------------------------
That's it! Thank you for reading this tutorial. Please feel free to make any comment or ask any question!
Awesome. I'll be trying this out as soon as I get a larger SD card. It would be great if you could upload a .zip with all of the scripts, downloads, etc. already placed in one folder; that would make it a lot easier.
Thx U for this Tutorial....it was really helpful...Can u fix the adobe flash thing...i know that sound will not work but just wondering if it can be installed.
yumcax said:
Awesome. I'll be trying this out as soon as I get a larger SD card. It would be great if you could upload a .zip with all of the scripts, downloads, etc. already placed in one folder; that would make it a lot easier.
Click to expand...
Click to collapse
Actually I thought about the same but here my uploading speed is 15kb/s maximum, so I'm not sure if I'm gonna upload a 600mb file...
reubenjack said:
Thx U for this Tutorial....it was really helpful...Can u fix the adobe flash thing...i know that sound will not work but just wondering if it can be installed.
Click to expand...
Click to collapse
Adobe Flash has no support for ARM architecture.. sorry, there's no way to install Adobe Flash plugin for Firefox on Ubuntu ARM.
OMG Im abt to die. Transfering the folder to my sd card takes 20 min. I really nid to get a better memory card (higher speed). SIGH..
Works nice on my N1 running MIUI 12.24..
BTW I have a question, if I wipe my phone(data,cache).. Would I need to perform any steps then?
Keshav_CoolDude said:
Works nice on my N1 running MIUI 12.24..
BTW I have a question, if I wipe my phone(data,cache).. Would I need to perform any steps then?
Click to expand...
Click to collapse
If you re-installed a rom (i.e. /system partition gets rewritten)
You'll need to execute the following commands on Android Terminal:
cd /sdcard/ubuntu
sh u
then type "b" to enter Ubuntu terminal
Happy New Year!
Hey,
In the OP you mention that some apps will not run because of the memory management? Is there a size threshold that this is start to be seen at or is it totally random on which things run/don't?
Thanks
houzuoguo said:
If you re-installed a rom (i.e. /system partition gets rewritten)
You'll need to execute the following commands on Android Terminal:
cd /sdcard/ubuntu
sh u
then type "b" to enter Ubuntu terminal
Happy New Year!
Click to expand...
Click to collapse
Okay.. Thanks for the guide..
Happy New Year..
Chopes said:
Hey,
In the OP you mention that some apps will not run because of the memory management? Is there a size threshold that this is start to be seen at or is it totally random on which things run/don't?
Thanks
Click to expand...
Click to collapse
I'm not very familiar with Linux kernel so sorry I can't give an accurate explanation
According to my observation, many applications in the Ubuntu 10.10 can successfully start (program title appears in task bar) but immediately they turn off by themselves.
And it seems to me that all those applications share a same characteristic: they're relatively bigger than others. For example, Terminal runs, Dictionary runs, Firefox runs, but Ubuntu Software Centre won't run.
So my guess is ... Android system would not allocate too much memory for an application in Ubuntu, thus they get killed before they could start.
I'll give this a one thumb up, because I got it working, got to play around a bit... it looks really nice... but I did a reboot of my phone after shutting it down properly, and now everytime I try to launch ubuntu again, I get a bunch of errors.
I've tried just about everything.... restoring to my nand backup I did before trying this, deleting the files off the sdcard and on my system relating to this, tried to set everything back up... but I still get errors and I can't get past them, even with trying "e" in the term.
FWIW, I'm on CM 6.1.1 and I do use DTa2sd with plenty of space left on all partitions. Here's a pastebin of my errors : http://pastebin.com/adCQ62iF
tehgeekguy said:
I'll give this a one thumb up, because I got it working, got to play around a bit... it looks really nice... but I did a reboot of my phone after shutting it down properly, and now everytime I try to launch ubuntu again, I get a bunch of errors.
I've tried just about everything.... restoring to my nand backup I did before trying this, deleting the files off the sdcard and on my system relating to this, tried to set everything back up... but I still get errors and I can't get past them, even with trying "e" in the term.
FWIW, I'm on CM 6.1.1 and I do use DTa2sd with plenty of space left on all partitions. Here's a pastebin of my errors : http://pastebin.com/adCQ62iF
Click to expand...
Click to collapse
Happy New Year!
Could you please go to Settings-> Application Settings-> Manage Applications-> on SD card and confirm there is no application on SD card?
Also please make sure you execute "b" after "Checking for Errors" notification disappears.
Running this distro does that mean i can use firesheep on my n1?
Awesome! What kind of battery life are you seeing using Ubuntu? Any apps in particular you've enjoyed having on your N1?
rossonza said:
Running this distro does that mean i can use firesheep on my n1?
Click to expand...
Click to collapse
According to my study Firesheep would require WinPcap to work, WinPcap is only available for Windows so unfortunately you can't use it.
Deathwish238 said:
Awesome! What kind of battery life are you seeing using Ubuntu? Any apps in particular you've enjoyed having on your N1?
Click to expand...
Click to collapse
I notice battery drains 2-3 mAh more when Ubuntu is idle, when actually using Ubuntu I notice 30-40mAh higher current draw. So actually it's not much
hey thanx houzuoguo,
working great on my n1....!!
is there any solution for the sound to run...??
I cant seem to get any of the "cat >" letters to work, it just hangs in the terminal.
houzuoguo said:
According to my study Firesheep would require WinPcap to work, WinPcap is only available for Windows so unfortunately you can't use it.
I notice battery drains 2-3 mAh more when Ubuntu is idle, when actually using Ubuntu I notice 30-40mAh higher current draw. So actually it's not much
Click to expand...
Click to collapse
Firesheep works in Ubuntu, you just have to compile it yourself.
1) Download the required dependencies:
Code:
sudo apt-get install autoconf libtool libpcap-dev libboost-all-dev libhal-dev xulrunner-1.9.2-dev
2) Install git:
Code:
sudo apt-get install git
3) Download the Firesheep source:
Code:
git clone https://github.com/codebutler/firesheep.git
4) Change to the Firesheep directory:
Code:
cd firesheep
5) Initialize it:
Code:
git submodule update --init
6) Compile it:
Code:
./autogen.sh && make
7) You'll find the file in the build directory.
hotweiss said:
Firesheep works in Ubuntu, you just have to compile it yourself.
1) Download the required dependencies:
Code:
sudo apt-get install autoconf libtool libpcap-dev libboost-all-dev libhal-dev xulrunner-1.9.2-dev
2) Install git:
Code:
sudo apt-get install git
3) Download the Firesheep source:
Code:
git clone https://github.com/codebutler/firesheep.git
4) Change to the Firesheep directory:
Code:
cd firesheep
5) Initialize it:
Code:
git submodule update --init
6) Compile it:
Code:
./autogen.sh && make
7) You'll find the file in the build directory.
Click to expand...
Click to collapse
Not to threadjack or anything of the sort but:
Does the above method work on getting firesheep installed on a n1 running ubuntu or is this just the way to install it assuming your running on normal hardware?
Second question, what is the resulting file?
Thanks,
Which terminal application are you using, and did you type the "cat >" on screen keyboard or copy&paste?

[Q] Terminal via ssh INTO galaxy issues

When I connect to my Galaxy using ssh from my Linux (or Mac) computer terminal it works fine.
I use bash (I downloaded bash 3.2 for Android) and Nano editor.
However the nano editor issues an error 'error opening terminal xtern'
I use DroidSSH as root which goes to the default dir
/data/data/berserker.android.apps.sshdroid/home
I put a .profile in that dir with
Code:
#!/bin/sh
export TERM=xterm
bash
which works fine at login (it sets indeed that TERM variable and starts bash on the Galaxy.
Everything works (great !!) except nano.
Both on the gnome Terminal (Ubuntu) and on Mac OSX Lion 'Terminal'.
And sometimes the terminal also responds sloy sometimes 2 seconds after a character has been typed.
Does anybody have ideas ?

Ubuntu 10.04 on huawei ideos s7/s7slim easy way

UBUNTU 10.04 LINUX
This is is easy way to s7/s7 slim fans to have complete linux Ubuntu 10.04 on tablet and have power in hands and you can with hdmi cable have complete pc
Requirements:
- android phone
- superuser + busybox
HOW TO:
-Download from google play: vnc wiewer
terminal emulator
-Download this,unzip and put this UBUNTU folder in sdcard or sdcard2(you mast have 4 gb free):
Download link:
https://rapidshare.com/files/3426062139/ubuntu.zip
when you do that go to terminal emulator and tape :
su to become a superuser (root)
cd /sdcard/ubuntu or cd /sdcard2/ubuntu if you unzip on ext sdcard
sh ubuntu.sh
Than go to vnc wiewer and simply add a new VNC server with address localhost, port 5900, and password 'ubuntu' - then hit connect.
What software is pre-installed?
Ubuntu 10.10 (Maverick) Core
LXDE (Lightweight Windows-like GUI) with tightvnc server
Application:
Firefox, Thunderbird, openoffice.org suite, GIMP Image Editor, Emacs Text Editor (geared towards programming), C and C++ build-essential, Java JDK, Python, TeXlive and TeXmaker LaTeX editor, Transmission BitTorrent Client, eVince PDF Viewer, File Manager, Terminal, Image Viewer, Leafpad Text Editor, Synaptic Package Manager and Ubuntu Software Center with all repositories enabled (Ubuntu Software Center is pretty and well organized - but bloated and slow), SSH server, Gnash (GNU flash player/plugin for Firefox - as there is no official generla flash pluging for armel CPUs)..
Obviously, you are free to add and remove apps as you see fit (through Synaptic or Ubuntu Software Center)..
AND IF YOU LOVE MY WORK PRESS THANKS
Thanks
Jagodinac ,svaka ti cast!
Uvek sam ponosan kad vidim da neko od nasih postavlja uputstva na ozbiljnim forumima.
Upravo skidam ubuntu da probam kako radi....
can you put the download file into another place? i can not download it from rapidshare!! please help!
is there anybody who has still the image ?
This device's whole subforum is full of dead links guess I'm not reviving this tablet of mine heh

How to create a shelf icon that executes a shell programm call?

Hey everyone,
I am looking for a way to activate sleep mode of my chromebook manually in order to save battery without having to log out or power off all the time (it's connected to an external display, so closing the lid doesn't trigger it).
So far I found out that calling "powerd_dbus_suspend" from the shell does the trick, but as you can imagine, using the shell and actually typing the command every time is not really a solution.
Is there a way to create a chrome os app that executes this program call, so I can put it in my shelf and just click it to activate sleep?
I'm not really good at .json, maybe there's a way? Or any other suggestions?
Thanks alot!
Markus
I would like to know it too. Anyone?
Sneets said:
Hey everyone,
I am looking for a way to activate sleep mode of my chromebook manually in order to save battery without having to log out or power off all the time (it's connected to an external display, so closing the lid doesn't trigger it).
So far I found out that calling "powerd_dbus_suspend" from the shell does the trick, but as you can imagine, using the shell and actually typing the command every time is not really a solution.
Is there a way to create a chrome os app that executes this program call, so I can put it in my shelf and just click it to activate sleep?
I'm not really good at .json, maybe there's a way? Or any other suggestions?
Thanks alot!
Markus
Click to expand...
Click to collapse
Run a tiny web server like lighttpd in the shell on a weird port, restrict to localhost. Set up index.php to run system (whatever);
Then bookmark the 127.0.0.1: xxxx URL
Which system call invokes power_dbus_suspend?
Thanks Parrotgeek1. Working off your excellent suggestion I installed a lightweight local server on ChromeOS (Web Server for Chrome with the 200 OK! icon) and built a small framework app that is served from local storage. I'm all set up to call chrome.app.??? from my JavaScript. Which API provides the power_dbus_suspend capability? I looked through the Power and System APIs and I don't see anything. - Thanks!
Sneets said:
Hey everyone,
I am looking for a way to activate sleep mode of my chromebook manually in order to save battery without having to log out or power off all the time (it's connected to an external display, so closing the lid doesn't trigger it).
So far I found out that calling "powerd_dbus_suspend" from the shell does the trick, but as you can imagine, using the shell and actually typing the command every time is not really a solution.
Is there a way to create a chrome os app that executes this program call, so I can put it in my shelf and just click it to activate sleep?
I'm not really good at .json, maybe there's a way? Or any other suggestions?
Thanks alot!
Markus
Click to expand...
Click to collapse
Have you tried this simple extension? Keep Awake
https://chrome.google.com/webstore/...lb?utm_source=chrome-app-launcher-info-dialog
What I do is have the shell tab pinned, and press [up arrow] for the command then hit [enter]. Probably not ideal if you use the shell a lot as you have to step through recently used commands.
Re: Pkt_Lnt's post
Thanks Pkt_Lnt. That app only deals with disabling the normal sleep behavior, not causing it, and in particular not causing it when an external monitor is connected. I'm looking for something like Sneets has requested, to invoke a powerd_dbus_suspend command that will force the system to sleep (and turn off an external monitor). Per Parrotgeek1's comment, I've got a little app now sitting on the shelf that is all set to call some system command to invoke powerd_dbus_suspend, only I'm looking for what command to call, from JavaScript.
I managed to find a way to do something similar with the Secure Shell app. During the process of figuring it out, I also found that I was able to create a homescreen shortcut on my Android tablet which when tapped sends a shell command to the Chromebook.
This method might be overkill somewhat, but, anyway, what I did was as follows:
Installed Secure Shell extension; setup sshd on the Chromebook (by making a symlink in /etc/init/ pointing to /usr/share/chromeos-ssh-config/init/openssh-server-conf); rebooted; added public key from ConnectBot (Android app) to ~/.ssh/authorized_keys in order to test connection; setup Android homescreen shortcut to send shell command; created profile in Secure Shell app on Chromebook to connect to [email protected]/my local IP address; generated keys on Chromebook (in ~/.ssh); added generated public key to ~/.ssh/authorized_keys; imported newly-generated private/public key pair within Secure Shell app (one by one); created bookmark link to [email protected] profile in shelf, and, finally, added required command to profile in Secure Shell.
It works well! It looks like any command can be added to the 'Arguments' field in Secure Shell, with the syntax:
Code:
-- thecommand
Although I guess commands that need sudo would require a connection to [email protected], instead of chronos. (-t argument lets you use sudo, but then sending a line break/ENTER seems to be needed)
The window opened with the click does hang around - I haven't figured out if it's possible to avoid this - but it does at least seem to persistently remember the size and position to which it's set.
I posted up some further details at http://nolirium.blogspot.com/shell-command-shelf-shortcut-chromeos.html
Impressive! But a bit more than I'm looking to do
@Nolirum - I read your blogspot doc and your procedure's pretty impressive. Frankly it's a little beyond me and beyond what I'm looking for. If you ever run across a way to invoke powerd_dbus_suspend a little more directly please post here as well. You clearly have a strong grasp of the issues!
Nolirum said:
I managed to find a way to do something similar with the Secure Shell app. During the process of figuring it out, I also found that I was able to create a homescreen shortcut on my Android tablet which when tapped sends a shell command to the Chromebook.
This method might be overkill somewhat, but, anyway, what I did was as follows:
Installed Secure Shell extension; setup sshd on the Chromebook (by making a symlink in /etc/init/ pointing to /usr/share/chromeos-ssh-config/init/openssh-server-conf); rebooted; added public key from ConnectBot (Android app) to ~/.ssh/authorized_keys in order to test connection; setup Android homescreen shortcut to send shell command; created profile in Secure Shell app on Chromebook to connect to [email protected]/my local IP address; generated keys on Chromebook (in ~/.ssh); added generated public key to ~/.ssh/authorized_keys; imported newly-generated private/public key pair within Secure Shell app (one by one); created bookmark link to [email protected] profile in shelf, and, finally, added required command to profile in Secure Shell.
It works well! It looks like any command can be added to the 'Arguments' field in Secure Shell, with the syntax:
Code:
-- thecommand
Although I guess commands that need sudo would require a connection to [email protected], instead of chronos. (-t argument lets you use sudo, but then sending a line break/ENTER seems to be needed)
The window opened with the click does hang around - I haven't figured out if it's possible to avoid this - but it does at least seem to persistently remember the size and position to which it's set.
Click to expand...
Click to collapse
This really is impressive! Thanks for the extremely detailed explanation.
I was able to follow along completely and get the SSH argument "powerd_dbus_suspend" working.
However, I got to thinking. I was wondering if this could be extended to use an alias stored in ~/.bashrc?
After doing some research of my own and using various parameters and arguments, I was unsuccessful.
The goal is to have a linux app (through crouton) be run using xiwi with just a single bookmark by utilizing an alias.
Any thoughts?
UPDATE:
Of course just a few moments later I figured this out! Rather than dealing with an alias stored in ~/.bashrc and ensuring ssh had access, typing the entire alias command as an argument worked. Now I can run Steam directly from a shelf bookmark. All it took was replacing "powerd_dbus_suspend" with "-- sudo enter-chroot xiwi steam" in the argument.
Thanks again!
DandyRandyMarsh said:
This really is impressive! Thanks for the extremely detailed explanation.
I was able to follow along completely and get the SSH argument "powerd_dbus_suspend" working.
Click to expand...
Click to collapse
No problem! I think it's perhaps overly detailed if anything. Might be easier to follow if I cut it down a bit.
DandyRandyMarsh said:
Now I can run Steam directly from a shelf bookmark. All it took was replacing "powerd_dbus_suspend" with "-- sudo enter-chroot xiwi steam" in the argument.
Click to expand...
Click to collapse
Nice!
Adding crouton single app shortcuts is a cool idea which I hadn't considered. Does it work OK for you with sudo in the command, even straight after booting up? ...You didn't have to setup sudoing without a password via sudoers.d or anything?
Inspired by your post I added xiwi to my chroot to try it out. I seem to remember experiencing quite unbearable lag and slowness when running a full desktop via xiwi in the past, but with single apps there doesn't seem to be any noticeable performance hit (this is on an armv7 Asus Flip, with the chroot on a slooow USB drive).
In order to not have to enter my sudo password, in the argument I put:
Code:
-t -- echo mypassword | sudo -S sh /media/removable/3/bin/enter-chroot xiwi firefox
Maybe I'm missing something? Is there a better way, perhaps?
Anyway, since I have rootfs verification switched off, I also tried saving a similar command to a file in /usr/bin, and putting the filename in the argument instead. This works, too, and I suppose could potentially be useful e.g. in the case of needing to run a more convoluted sequence of commands with a shortcut.
Nolirum said:
Adding crouton single app shortcuts is a cool idea which I hadn't considered. Does it work OK for you with sudo in the command, even straight after booting up? ...You didn't have to setup sudoing without a password via sudoers.d or anything?
Click to expand...
Click to collapse
I'm not entirely familiar with exactly how my process worked, but I do not have any sudo password required within shell.
Here's the list of steps I followed allowing me to use sudo commands in the SSH Arguments box.
As a side note, this is the crouton installation I am running on an ASUS c302.
sudo sh ~/Downloads/crouton -r trusty -t unity,touch,xiwi,extension
Setup Bookmarks that Run Shell Commands
1. Installed Secure Shell extension
2. Open crosh with Ctrl+Atl+T
3. Enter Command: shell
4. Enter Command: sudo su -
5. Enter Command: sudo /usr/share/vboot/bin/make_dev_ssd.sh --force --remove_rootfs_verification
6. Enter Command: reboot
7. Let Chrome OS reboot
8. Open crosh with Ctrl+Atl+T
9. Enter Command: shell
10. Enter Command: sudo su -
11. Enter Command: mount –o remount rw /
12. Close current crosh window
13. Open a new crosh with Ctrl+Atl+T
14. Enter Command: shell
15. Enter Command: sudo ln -s /usr/share/chromeos-ssh-config/init/openssh-server.conf /etc/init/openssh-server.conf
16. Enter Command: sudo initctl reload-configuration
17. Enter Command: sudo initctl start openssh-server
18. Enter Command: cd ~/.ssh/
19. Enter Command: ssh-keygen
“Enter file in which…” *LEAVE BLANK*
“Enter passphrase” *LEAVE BLANK*
“Enter same passphrase” * LEAVE BLANK*​20. Enter Command: cat /home/chronos/user/.ssh/id_rsa.pub >> /home/chronos/user/.ssh/authorized_keys
21. Enter Command: cp -a /home/chronos/user/.ssh/id_rsa* /home/chronos/user/Downloads
22. Close current crosh terminal and open Secure Shell extension
23. Select [New Connection]
24. Click Import… and select “id_rsa”
25. Click Import… again and select “id_rsa.pub”
26. Enter chronos as the username and localhost as the hostname
27. Enter a shorthand name replacing the text in the top cell “[email protected]”
28. Click Enter. If prompted, enter “yes” to continue connecting
29. Bookmark the page that is open which should end in, "#profile-id:_ _ _ _"
DONE. Now time to add some commands to automate.
Open Secure Shell and select the connection created. In the arguments box, start with two dashes -- and follow it your desired shell command.
Examples:
-- sudo startunity
-- sudo startgnome
-- sudo enter-chroot xiwi steam
-- sudo enter-chroot xiwi wine microWord​
Next Steps... Getting Custom Shelf Icons
Now here I am running into some issues. Rather than have all these icons be the same, I was hoping to customize them.
Followed a strategy found on reddit, Change Shelf Icon for Website, but this only works if the site already had an "apple-touch-icon" set. Also, tried to inject the entire code myself which I couldn't get to work. Unfortunately, I think that since this bookmark is created from a Secure Shell, there are some issues.
I have already tried adding in code for this into the site, but it is having no effect. If someone could make this work then we're really looking good here.
DandyRandyMarsh said:
I'm not entirely familiar with exactly how my process worked, but I do not have any sudo password required within shell.
Click to expand...
Click to collapse
Oh, I see what you mean. You are saying that you can sudo in the shell generally, without being prompted for a password, right?
Was that the default setup on your CB (after switching to Dev mode)? Or did you have to configure it manually for passwordless sudoing...
DandyRandyMarsh said:
Here's the list of steps I followed allowing me to use sudo commands in the SSH Arguments box.
Click to expand...
Click to collapse
Nice work summarizing the steps. :highfive: It's probably easier to follow, listed out like that. One slight addendum, perhaps - at step 29, it might be good to clarify the "add to shelf" procedure. Especially because of the following...
DandyRandyMarsh said:
Next Steps... Getting Custom Shelf Icon
Now here I am running into some issues. Rather than have all these icons be the same, I was hoping to customize them.
Click to expand...
Click to collapse
Happily it turns out that, when you add shortcuts to the shelf on Chrome OS like this, a minimal app is created for each one, with its own manifest.json, and icon.pngs. Our shell shortcuts were getting created with blank pngs by default (the black box with P in the center).
So, all we need to do, is get some icons, find the right folder for our shelf shortcut apps, then copy our new icons into them!
For instance, here's how I made a nice shiny icon for my single app shelf shortcut to Firefox.
Prepared icons:
Created a temporary folder in ~/Downloads to store downloaded icons.
Prepared a set of icons in ~/Downloads/firefox. (I downloaded mine from findicons.com).
Six sizes are required - from 32px to 256. To avoid any manifest editing, saved them as *size*.png
e.g. 32.png; 48.png; 64.png; 96.png; 128.png; 256.png
Located folder to copy icons to:
It is easiest to do this directly after clicking "add to shelf"
EITHER:
To change dir into the most recently modified extension icon subfolder automatically, the following one-liner worked for me*.
Code:
shell
cd ~/Extensions/&&cd $(ls -v1td */ | head -1)/*/icons&&ls
A list of blank icons (*.png) should be visible. If so, the new icons can simply be copied over these, e.g..
Code:
sudo cp ~/Downloads/firefox/* .
*YMMV with this particular one-liner - sometimes there's an extra 'temp' folder in ~/Extensions, which stops it working as expected. If you get an error after running the command, simply use the slightly more manual method to locate the folder, as detailed below.
OR:
(slightly more manual method).
Code:
shell
ls -ltr ~/Extensions
Checked the date/times - the most recently added folder is at the bottom. Then,
Code:
cd themostrecentlyaddedfolder
(or, the folder modified at the date/time that the shortcut was "added to shelf"). Then,
Code:
cd */icons
ls
sudo cp ~/Downloads/firefox/* .
I then repeated the above with a new SSH argument and a set of Ubuntu icons, for a custom startxfce4 shortcut, too.
Then just did sudo restart ui, and enjoyed the shiny new shelf icons!
I am hopeful that these changes will get picked up by CrOS's sync, thus getting backed-up and restored automatically. At this point I am not sure if that will be the case, but I don't see why it wouldn't.
Another way?
Another way to approach this, since you're modifying system stuff anyway, might be to edit crosh at /usr/bin/crosh. It's a regular ol' dash/bash shell program, and you can create a shortcut to it on the shelf by opening crosh (ctrl-alt-T), then right click the top right of the browser and select More Tools --> Add to shelf...
Clicking the newly-created link (which looks like an "N") will launch /usr/bin/crosh in a tab. Changing the default behavior of /usr/bin/crosh could accomplish your goal to do whatever you want. With some experimenting, you might even be able to pass arguments to make it do different things depending on how it's opened (via ALT-CTRL-T vs from the shelf-- dunno if it can read the url used to call crosh), but at the very least you could do something like have it run whatever you want it to run if a second modifier key is held down (or if it isn't...), otherwise return to normal operation. A menu w/1 sec timeout could do this as well, ie--
Doing [THE THING YOU WANT] in 2 seconds (press SPACE for crosh)... /
Note there's no proof-of-concept here. Just throwing it out as an idea that I'm pretty sure would work... Someone might even create a neat extension that allows crosh to use scripts/plugins to execute different system operations beyond the stock ones that are built-in via single-clicks... If it worked, it might be a little simplier than via the SSH extension and you wouldn't have to run any extra daemons.
ft
This is probably harder, but a third way, which probably is the "right" way is to see how the crosh extension works and learn about opening the hterm.Terminal instance chrome.terminalprivate object directly, sending it output, and closing it in the same way crosh does it. There's a file in the crosh extension at js/crosh.js that shows the basics of how it's done:
var terminal = new hterm.Terminal(profileName);
And then you can do stuff with it. You could then create an extension that could handle multiple shelf-icons (say by appending ?COMMAND=ls to the URL to do different shell commands(. The security implications for this would probably be huge obviously.
Update: More on embedding hterm is here.
Nolirum said:
I managed to find a way to do something similar with the Secure Shell app. During the process of figuring it out, I also found that I was able to create a homescreen shortcut on my Android tablet which when tapped sends a shell command to the Chromebook.
I posted up some further details at http://nolirium.blogspot.com/shell-command-shelf-shortcut-chromeos.html
Click to expand...
Click to collapse
Nice post - Some good food for thought, changing up the contents of crosh etc directly is an interesting idea.
fattire said:
Another way to approach this, since you're modifying system stuff anyway, might be to edit crosh at /usr/bin/crosh. It's a regular ol' dash/bash shell program, and you can create a shortcut to it on the shelf by opening crosh (ctrl-alt-T), then right click the top right of the browser and select More Tools --> Add to shelf...
Click to expand...
Click to collapse
Interesting! ....Aaaaand, now I've broken crosh. lol. Lucky I had my SSH shortcut setup... (actually, we can still get into the VTs with CtrlAltF2 etc anyway).
Some good potential for experimentation with this, definitely.
fattire said:
This is probably harder, but a third way, which probably is the "right" way is to see how the crosh extension works and learn about opening the hterm.Terminal instance chrome.terminalprivate object directly, sending it output, and closing it in the same way crosh does it. There's a file in the crosh extension at js/crosh.js that shows the basics of how it's done:
Click to expand...
Click to collapse
Again, very interesting. Now you come to mention it, an approach such as this does seem like it might be do-able without too much messing around (maybe)...
Any possible method we can get e.g. an extension to 'talk' to the shell is worth looking into I think; as you say, if we can cut out the middleman (ssh) and maybe do it more elegantly, that might be pretty useful indeed.

Categories

Resources