[Q] Address book Ubuntu touch - Ubuntu Touch Q&A, Help & Troubleshooting

Hi there!
Who know how to export contact list into ubuntu touch.
As far as I know its work through sqlite. I have spent lot of time to find a way to uploading data.
I have tried
Code:
manage-address-books.py create
but its looks like they have removed this options from new images.

I believe they have removed the option at this point... Or rather the option no longer works under current configuration since they flipped the container.
UT, hopefully, will implement PIM via Google accounts before it goes live as a public release.

RumoredNow said:
I believe they have removed the option at this point... Or rather the option no longer works under current configuration since they flipped the container.
UT, hopefully, will implement PIM via Google accounts before it goes live as a public release.
Click to expand...
Click to collapse
You can sync with Google by doing this on the terminal (through the app, SSH or adb shell):
syncevolution --configure --sync-property "username=YOUR-EMAIL-ADDRESS" --sync-property "password=YOUR-EMAIL-PASSWORD" Google_Contacts
then, to load 50 contacts :
syncevolution --sync refresh-from-server Google_Contacts addressbook
then, if you have more than 50, complete with this one :
syncevolution --sync one-way-server Google_Contacts addressbook
(as you can see, contacts work with syncevolution, try to play with it if you want

eagleofdeath13 said:
You can sync with Google by doing this on the terminal (through the app, SSH or adb shell):
syncevolution --configure --sync-property "username=YOUR-EMAIL-ADDRESS" --sync-property "password=YOUR-EMAIL-PASSWORD" Google_Contacts
then, to load 50 contacts :
syncevolution --sync refresh-from-server Google_Contacts addressbook
then, if you have more than 50, complete with this one :
syncevolution --sync one-way-server Google_Contacts addressbook
(as you can see, contacts work with syncevolution, try to play with it if you want
Click to expand...
Click to collapse
I have tried use syncevolution through UT terminal -its returned many errors.
Looks like I need wait until official release(

eagleofdeath13 said:
You can sync with Google by doing this on the terminal (through the app, SSH or adb shell):
syncevolution --configure --sync-property "username=YOUR-EMAIL-ADDRESS" --sync-property "password=YOUR-EMAIL-PASSWORD" Google_Contacts
then, to load 50 contacts :
syncevolution --sync refresh-from-server Google_Contacts addressbook
then, if you have more than 50, complete with this one :
syncevolution --sync one-way-server Google_Contacts addressbook
(as you can see, contacts work with syncevolution, try to play with it if you want
Click to expand...
Click to collapse
vairkz said:
I have tried use syncevolution through UT terminal -its returned many errors.
Looks like I need wait until official release(
Click to expand...
Click to collapse
It just worked for me yesterday... Contacts anyway... I'm still working on Calendar...
I used almost exactly what eagleofdeath13 typed and put it in terminal on the device...
For the purposes of this demo I will use a phony email address and password so you will see the form as it should go in raw. The quotation marks (") don't actually get used
Code:
syncevolution --configure --sync-property [email protected] --sync-property password=CanNotWait Google_Contacts
After hitting enter, you will get some confirmations scrolling on the screen. Then use
Code:
syncevolution --sync refresh-from-server Google_Contacts addressbook
OR
Code:
syncevolution --sync one-way-server Google_Contacts addressbook
Syncevolution is included in Ubuntu Touch now... For more info read here: https://syncevolution.org/

You didn't used quote? (i used them (because where i've read it, they where used)).
But Syncevolution seems not to work today for me too (i've reset my phone, but without the NoBackup param, maybe that's the problem, i'll try with -no-backup ^^
Note : you need to be in RW to do that
$ adb shell
$ mount /dev/loop0 / -o remount,rw

eagleofdeath13 said:
You didn't used quote? (i used them (because where i've read it, they where used)).
But Syncevolution seems not to work today for me too (i've reset my phone, but without the NoBackup param, maybe that's the problem, i'll try with -no-backup ^^
Note : you need to be in RW to do that
$ adb shell
$ mount /dev/loop0 / -o remount,rw
Click to expand...
Click to collapse
It failed for me with quotes... I seem to remember when it first hit in March(?) I struggled to implement the sync and ended up with no quotes then as well. I never got it working again via my Ubuntu Box, including now. So glad we got terminal on the device.
On the cdimage-touch side there is a new version today: http://cdimage.ubuntu.com/ubuntu-touch/daily-preinstalled/ but I'm not getting any OTA for ubuntu-system since 20 August so I don't know if reflashing via Ubuntu Box gets you anything with
Code:
phablet-flash ubuntu-system --channel saucy --no-backup
except for a wipe of your data...

Related

commandline tips ?

hi, i installed sshdroid on my galaxy s2 so i am wondering if there is any way to mess around with anything like start a fone call or send a text message from the terminal ?
i am looking for programs like netcat, sshfs, aplay, ... but none can be found.
i also notice this (not sure why):
Code:
/data/data/berserker.android.apps.sshdroid # ps auxw | grep tv
2594 system 0:59 /system/bin/tvoutserver
has anybody done anything cool from the android command line ?
is there someway i can run com.cooliris.media from the commandline ?
schneidz said:
hi, i installed sshdroid on my galaxy s2 so i am wondering if there is any way to mess around with anything like start a fone call or send a text message from the terminal ?
i am looking for programs like netcat, sshfs, aplay, ... but none can be found.
i also notice this (not sure why):
Code:
/data/data/berserker.android.apps.sshdroid # ps auxw | grep tv
2594 system 0:59 /system/bin/tvoutserver
has anybody done anything cool from the android command line ?
is there someway i can run com.cooliris.media from the commandline ?
Click to expand...
Click to collapse
I don't know what sshdroid does, but for sure you can use terminal emulator or adb shell to launch apps.
The "am" command can be used to launch applications.
The example below is to open Email app:
Code:
su
Code:
am start com.android.email
to dig in more:
http://forum.xda-developers.com/showpost.php?p=30175170&postcount=3
easy for sms less easy to make a direct call:
Code:
su
Code:
service call phone 2 s16 "123456789"
where 123456789 is the number you want to call
fyi, sshdroid turns your fone into an ssh server so i can log into my fone via wifi from my fedora machine and use an actual keyboard to issue commands instead of an on-screen keyboard.
its also useful for things like scp/sftp... i can mount the fones harddrive/sd-card with sshfs on my pc but i cant mount my pc's harddrive to the fone with sshfs. is there a solution for this yet (i think the problem is that there is no fuse module for android yet) ?
this is weird:
Code:
~ # am start com.cooliris.media
sh: am: not found
~ # which am
/system/bin/am
~ # /system/bin/am start com.cooliris.media
sh: /system/bin/am: not found
~ # whoami
root
~ # service call phone 2 s16 "0151234567"
Result: Parcel(
0x00000000: ffffffff 00000022 006e004f 0079006c '...."...O.n.l.y.'
0x00000010: 00530020 0061006d 00740072 00610063 ' .S.m.a.r.t.c.a.'
0x00000020: 00640072 00410020 00490050 006d0020 'r.d. .A.P.I. .m.'
0x00000030: 00790061 00610020 00630063 00730065 'a.y. .a.c.c.e.s.'
0x00000040: 00200073 00490055 00430043 00000000 's. .U.I.C.C.....')
made a little bit more progress:
Code:
/system/bin/am start com.cooliris.media
Starting: Intent { act=android.intent.action.VIEW dat=com.cooliris.media }
Error: Activity not started, unable to resolve Intent { act=android.intent.action.VIEW dat=com.cooliris.media flg=0x10000000 }
schneidz said:
fyi, sshdroid turns your fone into an ssh server so i can log into my fone via wifi from my fedora machine and use an actual keyboard to issue commands instead of an on-screen keyboard.
its also useful for things like scp/sftp... i can mount the fones harddrive/sd-card with sshfs on my pc but i cant mount my pc's harddrive to the fone with sshfs. is there a solution for this yet (i think the problem is that there is no fuse module for android yet) ?
this is weird:
Code:
~ # am start com.cooliris.media
sh: am: not found
~ # which am
/system/bin/am
~ # /system/bin/am start com.cooliris.media
sh: /system/bin/am: not found
~ # whoami
root
~ # service call phone 2 s16 "0151234567"
Result: Parcel(
0x00000000: ffffffff 00000022 006e004f 0079006c '...."...O.n.l.y.'
0x00000010: 00530020 0061006d 00740072 00610063 ' .S.m.a.r.t.c.a.'
0x00000020: 00640072 00410020 00490050 006d0020 'r.d. .A.P.I. .m.'
0x00000030: 00790061 00610020 00630063 00730065 'a.y. .a.c.c.e.s.'
0x00000040: 00200073 00490055 00430043 00000000 's. .U.I.C.C.....')
Click to expand...
Click to collapse
Informative.. thanks!!

[Q] openssh-server on Ubuntu Touch

Dear all,
I installed Unbuntu Touch on my Nexus 4 yesterday (18.09.2013, with the build 20130917.1). It is working more or less, as expected :silly:
One of the problem I am facing is that the ssh server is not working. I could install (and --reinstall) it without problem (apt-get install openssh-server ssh), but if I check with "ps -ef|grep ssh") I only see the ssh-agent and the connection from another computer is not working.
Any idea?
Best regards,
Pierre
[email protected]:/# apt-get install --reinstall openssh-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 0 B/231 kB of archives.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 38659 files and directories currently installed.)
Preparing to replace openssh-server 1:6.2p2-6 (using .../openssh-server_1%3a6.2p2-6_armhf.deb) ...
Unpacking replacement openssh-server ...
Processing triggers for ureadahead ...
Processing triggers for ufw ...
WARN: / is world writable!
WARN: / is group writable!
Setting up openssh-server (1:6.2p2-6) ...
[email protected]:/#
[email protected]:~$ ssh [email protected]
ssh: connect to host 192.168.1.69 port 22: No route to host
[email protected]:/home/phablet/Downloads# ps -ef | grep ssh
phablet 739 711 0 09:11 ? 00:00:00 ssh-agent
I just noticed that I have the same problem...
If I had time I would look at it, too, but right now I have other things to do...
To98 said:
I just noticed that I have the same problem...
If I had time I would look at it, too, but right now I have other things to do...
Click to expand...
Click to collapse
Same problem here. ssh to another device is possible, but no acces to phablet.
Same In GNex
try
sudo service ssh start
(if you are root or not you must use sudo)
but it does not automatically start when reboot
Still not wokring
[email protected]:/# service ssh start
ssh start/running, process 5890
[email protected]:~$ ssh [email protected]
ssh: connect to host 192.168.1.69 port 22: No route to host
[email protected]:~$ ps -ef|grep 5890
vmalep 12613 12544 0 13:00 pts/4 00:00:00 grep --color=auto 5890
chaoskernel said:
try
sudo service ssh start
(if you are root or not you must use sudo)
but it does not automatically start when reboot
Click to expand...
Click to collapse
thank you! installed version 57 and used
sudo service ssh start
work fine!

SOLVED - Gmail sync issue...

I am trying to sync my gmail addressbook.
I am doing this drom the terminal as su
syncevolution --sync refresh-from-server Google_Contacts addressbook
and
syncevolution --sync one-way-from-server Google_Contacts addressbook
both give me the following error:
First ERROR encountered: GLib-GObject: g_object_unref: assertion
'G_IS_OBJECT (object)' failed
Solved - gmail addressbook sync issue
OldGaf said:
I am trying to sync my gmail addressbook.
I am doing this drom the terminal as su
syncevolution --sync refresh-from-server Google_Contacts addressbook
and
syncevolution --sync one-way-from-server Google_Contacts addressbook
both give me the following error:
First ERROR encountered: GLib-GObject: g_object_unref: assertion
'G_IS_OBJECT (object)' failed
Click to expand...
Click to collapse
I fixed this by switching from root to phablet ...

Ubuntu Touch Contact and Celandar Sync

I am looking for information on hown to sync Ubuntu Touch calendars and contacts with a caldav/carddav server.
Thanks
v.Caine
If you use google it has this built in and easy to setup up
Otherwise owncloud is a great solution
On the device use syncevolution to sync calendars and contacts
Impossible using it for all that plus my documents
Impossible just going to sort my contacts today then add cron scripts to automate the sync on nexus 5 and 7
Thundebird does this easily using sogo plugin
Sent from my awesome Ubuntu Touch device using the Forum Browser app
wayneward said:
On the device use syncevolution to sync calendars and contacts
Click to expand...
Click to collapse
How exectly are syncing your calendars and contacts? can you send me information on how to do that?
wayneward said:
Impossible just going to sort my contacts today then add cron scripts to automate the sync on nexus 5 and 7
Click to expand...
Click to collapse
How can I setup those cron scripts and what exactly are they for?
Thanks for your help!
About syncing...
I can't post links (i'm newby) but search in google
ubuntu touch sync caldav
And go to askubuntu link (3d result). And then, in askubuntu post, the 4th answer.
Basically:
-----
First I added the certificate of my site to the folder /usr/share/ca-certificates and updates the ca-cert database, since it is self-signed:
sudo mount /dev/loop0 / -o remount,rw
sudo cp /home/phablet/Downloads/server.crt /usr/share/ca-certificates
Add a star to the new certificate while running the configuration
sudo dpkg-reconfigure ca-certificates
Add the syncevolution configuration:
syncevolution --keyring=no --configure --template webdav username=<USERNAME> password=<PASSWORD> syncurl="in-its.de/owncloud" [email protected]
syncevolution --configure --template SyncEvolution_Client sync=none syncURL=local://@owncloud username= password= peerIsClient=1 owncloud
syncevolution --configure database=https://<SERVER>/owncloud/remote.php/carddav/addressbooks/<USERNAME>/contacts backend=carddav [email protected] contacts
syncevolution --configure sync=two-way backend=contacts database="Persönlich" owncloud contacts
Run sync:
syncevolution --sync slow owncloud contacts
That made all my Owncloud contacts available on my Ubuntu Phone.
And CalDAV works similar:
syncevolution --configure database=https://<SERVER>/owncloud/remote.php/caldav/calendars/<USERNAME>/personal backend=caldav [email protected] calendar
syncevolution --configure sync=two-way backend=events database="Persönlich" owncloud calendar
And then sync it:
syncevolution --sync slow owncloud calendar
------
And about cron... it's easy, search in google about creating cron job and create a job with above parameter

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