peppermintos / ice Goto Github PK
View Code? Open in Web Editor NEWTool to create Chromium/Chrome/Firefox/Vivaldi SSBs in Peppermint OS.
Tool to create Chromium/Chrome/Firefox/Vivaldi SSBs in Peppermint OS.
Basically, when I set any app, like Evernote and launch REGULAR browser windows, it shows on a panel/dock as ice icon or whatever icon is assigned to given app.
So when I set Evernote with Chromium, launching Chromium shows Evernote icon on a panel. I tested it with regular Plasma panel as well with latte-dock, effect is the same. I changed browser for Firefox and again, normal Firefox is shown as Evernote. When I didn't set Evernote's icon and left default ice icon, that icon is shown for browser.
In result, ice-ssb is confusing and unusable on Plasma.
OS: Manjaro, Plasma 5.11.5
There is an exception on this line when fetching the favorite icon from a website I was trying:
Line 574 in 499b891
og_image is a string at this point, not a dictionary. This line should probably be just og_image. The variable has the contents of og_image["content"] from a few lines earlier.
Markdown is the standard language for LICENSE, README.md and other GitHub (or any other git plaform) default understandable files.
PR #36 (Pull Request) by me, fixes the formatting "issues" and is mergeable automatically by GitHub with a simple merge commit by the autors.
Thanks.
Please add an option to have a back button on the top of the SSB.
Hello,
ICE is a very nice utility ! For kiosk setups, but non only !
It may lack though a little safety trick : it is now ( version ice_6.0.3_all.deb ) possible to create a web-app without naming it.
Since from « name » depends creation of web-app's profile folder, it may end in a messy situation regarding web-app profiles stored then in
~/.local/share/ice/firefox/
instead of
~/.local/share/ice/firefox/web-app-name
and it creates in
~/.local/share/applications
an obviously hidden .desktop file ( ok you really have to want to launch that one but that may happen… )
Maybe the « apply » button should stay inactive as long as the « name app » box is empty ?
For reference ( french ) : https://forum.ubuntu-fr.org/viewtopic.php?pid=22106126#p22106126 where I still think the op issue is not related to ICE.
And question : where may I help translate ICE in french ? ( solved )
When you right click on a link, you get a standard set of options, ie.
That last one annoys me to no end because it requires going through Google's privacy statement(because it's a new profile) before you actually make the search and I:
a) often click it accidentally(it's just below the new tab which I usually want),
b) don't want to search with Google.
Can ICE include code to change the default search provider to http://ddg.gg, like the rest of Peppermint, or remove the search option from the right click menu entirely, to reduce misclicks?
I'd be happy to help write this feature, although my Python is not very good
I assume this is a general bug for Arch and Manjaro but I might be wrong. Anyway, after updating to 6.0.0-1 ice-ssb won't start and I get the output:
/usr/bin/ice:721: DeprecationWarning: Gtk.Button.new_from_stock is deprecated
apply_button = Gtk.Button.new_from_stock(Gtk.STOCK_APPLY)
Traceback (most recent call last):
File "/usr/bin/ice", line 818, in <module>
window = Ice()
File "/usr/bin/ice", line 759, in __init__
details = get_details(a)
File "/usr/bin/ice", line 72, in get_details
for line in a:
File "/usr/lib/python3.7/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
So I downgraded the package to the previous version that worked in the past (5.3.4-1) but it turned out it has a similar issue:
/usr/bin/ice:551: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
where_lab = Gtk.Label(_("Where in the menu?"))
/usr/bin/ice:577: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
choose_icon = Gtk.Button(_("Select an icon"))
/usr/bin/ice:579: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
download_icon = Gtk.Button(_("Use site favicon"))
/usr/bin/ice:640: DeprecationWarning: Gtk.Button.new_from_stock is deprecated
apply_button = Gtk.Button.new_from_stock(Gtk.STOCK_APPLY)
/usr/bin/ice:664: PyGTKDeprecationWarning: Using positional arguments with the GObject constructor has been deprecated. Please specify keyword(s) for "label" or use a class specific constructor. See: https://wiki.gnome.org/PyGObject/InitializerDeprecations
create_lab = Gtk.Label(_("Create"))
Traceback (most recent call last):
File "/usr/bin/ice", line 732, in <module>
window = Ice()
File "/usr/bin/ice", line 676, in __init__
nameline, pixbuf = get_details(a)
File "/usr/bin/ice", line 69, in get_details
for line in a:
File "/usr/lib/python3.7/codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
To describe my issue here is example:
I have some chat application, when somebody sends me a link it gets opened in my default browser (Chromium). If instance of chromium is already running a tab with this link gets opened in this instance.
This is the flow I got used to
Now, when I create Chromium application with Ice I also sometimes encounter links to external sites. When I click this links a new instance of Chromium gets started to open it, but new instance gets started even if there are already running instances of Chromium and I would like links to external sites to be opened in already running instances of Chromium instead of creating new ones.
from what ive read, brave browser full supports progressive web apps, any way to have support for Brave?
I think the current version is 5.1.8 but the last tagged is 5.1.4, is there a reason for this or would it be possible to tag the new versions, too?
(I'm asking because this would make it easier to make a PKGBUILD for archlinux with the recent version)
Thank you for this nice application 👍
Please add the fullscreen option. In Chromium browsers, the flag is "-start-fullscreen". Not sure about Firefox. This is useful for sites that such as Netflix, Hulu etc where you want it to be full screen.
And there's also a bug I wish you'd fix. In isolated browser mode, the browser gives you this message asking if you wish to make it your default browser and send feedback. I believe this setting is in the Local State file. Not sure how to do it in Firefox though.
Hello,
just install SSB version 6 on Manjaro. The application won't start and it was found that some folders needed are not created during build. The "profiles" folder once created manually fix the application.
~/.local/share/ice/profiles
Firefox and Vivaldi are presented as options. Chromium is not, however:
Installed on Pop!_OS
I've just realised that Firefox SSB's actually ARE caching to disk, even though they're set to remove the secondary cache directory if it gets created when started.
When a Firefox SSB is run, we should really create a user.js file and add these 6 preferences:
user_pref("browser.cache.disk.enable", false);
user_pref("browser.cache.disk.capacity", 0);
user_pref("browser.cache.disk.filesystem_reported", 1);
user_pref("browser.cache.disk.smart_size.enabled", false);
user_pref("browser.cache.disk.smart_size.first_run", false);
user_pref("browser.cache.disk.smart_size.use_old_max", false);
to a "user.js" file in the SSB's profile directory.
eg, change /usr/bin/ice-firefox from:
#!/usr/bin/env python3
import os
import sys
sys.argv[1]
profileid1 = str.replace(sys.argv[1], 'http://', '')
profileid2 = str.replace(profileid1, 'https://', '')
profileid = str.replace(profileid2, '/', '_')
chromepath = os.path.expanduser('~/.local/share/ice/firefox/' + str(profileid) + '/chrome')
path = os.path.dirname(chromepath)
execute = 'firefox -profile ' + path + ' -no-remote -new-instance' + ' ' + sys.argv[1]
os.system('mkdir -p ' + chromepath)
os.system('echo "#nav-bar { visibility: hidden !important; max-height: 0 !important; margin-bottom: -20px !important; } #TabsToolbar { display: none !important; }" > ' + chromepath + '/userChrome.css')
os.system(execute)
os.system('rm -rf ' + path + '/cache2')
to something like:
#!/usr/bin/env python3
import os
import sys
sys.argv[1]
profileid1 = str.replace(sys.argv[1], 'http://', '')
profileid2 = str.replace(profileid1, 'https://', '')
profileid = str.replace(profileid2, '/', '_')
profilepath = os.path.expanduser('~/.local/share/ice/firefox/' + str(profileid))
chromepath = os.path.expanduser('~/.local/share/ice/firefox/' + str(profileid) + '/chrome')
path = os.path.dirname(chromepath)
execute = 'firefox -profile ' + path + ' -no-remote -new-instance' + ' ' + sys.argv[1]
os.system('mkdir -p ' + chromepath)
os.system('echo "#nav-bar { visibility: hidden !important; max-height: 0 !important; margin-bottom: -20px !important; } #TabsToolbar { display: none !important; }" > ' + chromepath + '/userChrome.css')
os.system('echo "user_pref(\\"browser.cache.disk.enable\\", false);" > ' + profilepath + '/user.js')
os.system('echo "user_pref(\\"browser.cache.disk.capacity\\", 0);" >> ' + profilepath + '/user.js')
os.system('echo "user_pref(\\"browser.cache.disk.filesystem_reported\\", 1);" >> ' + profilepath + '/user.js')
os.system('echo "user_pref(\\"browser.cache.disk.smart_size.enabled\\", false);" >> ' + profilepath + '/user.js')
os.system('echo "user_pref(\\"browser.cache.disk.smart_size.first_run\\", false);" >> ' + profilepath + '/user.js')
os.system('echo "user_pref(\\"browser.cache.disk.smart_size.use_old_max\\", false);" >> ' + profilepath + '/user.js')
os.system(execute)
os.system('rm -rf ' + path + '/cache2')
which COMPLETELY disables disk caching for any Firefox SSB's
The above script does work, though I'm guessing there's a more elegant way of echoing those 6 lines to a user.js than appending them one line at a time ?
Hi @VinDSL,
Congratulations on this tool. It's a fantastic idea. I couldn't find your contact details and I'm not really sure who else to get in touch with. Maybe we can gith-poke people here if needed.
We'd like to add a Web-app manager like ICE in the next version of Linux Mint. After taking ICE for a ride I find it to work well but there's so many changes I'd like to implement, I'm not sure how to go ahead with this.
I'd like to get in touch with you and the other devs so we can discuss the changes and see how to proceed:
Here are some of the changes I'd like to implement:
These changes could be made optional and have no impact at all. Even the new UI, could be an additional UI in addition to the existing one, and we could make the tool use one UI or another based on gsettings. We'd just need to separate UI and utility functions a little bit more first.
The changes below are important also, but they couldn't be made optional:
If you'd prefer a collaboration on the core but not go ahead with the UI changes we could do the following:
Let me know your thoughts about all of this.
The SSB concept would seem to be ideal for creating simple Android apps out of simple web sites like https://xradio.us/mini-college.php Could you recommend a good ICE alternative for Android?
I was wondering if you mind If I packaged ice as a snap?
Chromium is good but it still has some evil Google code. Please add Ungoogled Chromium as an option for those who want basic vanilla chrome that has strong privacy and is google free.
I think it'd be nice if we could use the Homepage shortcut to quickly get back to the start page of the SSB. For Firefox, this could be done by setting the browser.startup.homepage
preference while creating the SSB. I don't know how it is for other browsers.
Hello,
I have been using ICE with browsers which were installed as deb packages. Recently I moved to use browsers which are installed from snap packages. ICE does not detect any browsers installed in the system. I tried both Firefox and Chromium. Is this something ICE supports?
The ability to use a password manager extension within the ice-ssb window would be beneficial.
For example, Gmail icessb, with bitwarden extension in window.
Ice should provide a way to change the executed browser per SSB .desktop file.
I don't know if this really fits within the project's scope, but at the very least I want to put some helpful info here for other Plasma/Kwin users.
Arch Linux
ice-ssb 6.0.5
kwin 5.16.5
After creating a Firefox SSB, I need to manually do a couple things to get the icons right. First I manually edit the .desktop
file to change the Icon
field to a plain theme-friendly icon name, so that it changes when the desktop's theme does. Then I create a kwin window rule to associate the window class with the proper .desktop
file/icon. Effectively this creates a new uniquely numbered entry in ~/.config/kwinrulesrc
like the following two examples:
[1]
Description=Application settings for ice-ssb-googlephotos
clientmachine=localhost
clientmachinematch=0
desktopfile=googlephotos
desktopfilerule=2
wmclass=navigator ice-ssb-googlephotos
wmclasscomplete=true
wmclassmatch=1
[2]
Description=Application settings for ice-ssb-googlemaps
clientmachine=localhost
clientmachinematch=0
desktopfile=googlemaps
desktopfilerule=2
wmclass=navigator ice-ssb-googlemaps
wmclasscomplete=true
wmclassmatch=1
Without those rules, the desktop uses the Firefox icon instead once the app is open.
Introduction: I re-created ssb's on my work laptop on Manjaro with Deepin DE. I mentioned in other thread that I had an issue in Deepin before, but it turned out that the ssb I created didn't show properly the icon for the desktop file. Deepin obviously checks that and without the icon, it isn't shown in the menu. Once the icon path is corrected manually, app shows up and everything is fine. -> End of the introduction to the topic ;).
I created ssb for my accounting-invoice app. I realized one big flaw. At some point of my work I need to save some files (pdf or zip files) on my disc but... I don't know where the app puts it. Even if I figure out where it is, I REALLY NEED:
This is important for the workflow. So I already thought that this is a hopeless case but I figured out some workaround.
Here is how my .desktop file looked like for my app:
[Desktop Entry]
Categories=GTK;Office;
Comment=wfirma-ff-properties (Ice SSB)
Exec=firefox --class ICE-SSB-wfirmaff --profile /home/stolmetzywiec/.local/share/ice/firefox/wfirmaff --no-remote about:preferences
IceFirefox=wfirmaff
Icon=/home/stolmetzywiec/.local/share/ice/wfirma.png
MimeType=text/html;text/xml;application/xhtml_xml;
Name=wfirma-ff-preferences
StartupNotify=true
StartupWMClass=ICE-SSB-wfirmaff
Terminal=false
Type=Application
Version=1.0
X-Deepin-Vendor=user-custom
X-MultipleArgs=false
This was all done on Firefox's ssb.
My request is: we really need a way to access preferences of created app's profile.
Putting the access icon on a gtk CSD bar as chrome/chromium is doing creates other issues (lack of SSD support for Plasma and other WMs).
My solution shows that WE CAN ACCESS preferences but it's inconvenient to go that route manually. So my proposal would be: have an option to create such additional properties launcher for a given app. Just a box to check. And if someone leaves it unchecked and wants to add it later, on the apps list it could be in the right-click menu to check or un-check (if someone wants to disable/delete such properties launcher).
Such launcher (.desktop file) would have schematized, automatic name: app-name:properties or something like that.
Of course, you can make this option active when Firefox or containerized version of other browser is created, otherwise, it could be grayed out (as it's unnecessary since then ssb inherits settings of the main browser).
I think this is a doable and very reasonable feature. It's maybe not ideal but it does the job. I think this could work for chromium based browsers as well. Preference pages for all supported browsers must be specified in ice-ssb.
Hello, thank you very much for developing such an interesting app.
I use a webapp based on my Nextcloud News webpage to show RSS feeds. This webapp uses Firefox as a backend.
Normally, when I get new feeds, Firefox display a push notification and if I the Nextcloud News window is not the focused one, then I receive a notification on GNOME notification tray.
However, with ice, push notification does not communicate with notification tray, so I am never informed when I receive new feeds.
Any idea (notification on dock, blinking icon, or on notification tray, or popup, etc.) is appreciated.
Thank you very much.
Please add the ability to use Tor browser over Tor. This will be great for a simple privacy browser app.
One of my top reasons (besides ideological ones - I don't want to support a Chrome monoculture) to want to use my main browser to provide is to have the environment I have already set up available to me, with my password manager, ad blocker and user scripts.
Setting this up for every new website would be really annoying.
Is it possible to link the profiles, so that most stuff is shared? What more does ice-SSB add than a userChrome.css and user.js?
Hey there everyone.
Thanks for providing this awesome program, however the most recent release 5.1.4 has this major bug of not creatinng the ~/.local/share/ice/ folder. Could you provide a new Release from master?
Thanks in advance!
Ctrl T/W, Ctrl Tab, etc...
Do you plan to make a browser extension that simply allows people to "create an app" from a website? That would be super useful. Cheers!
Ice requires a folder to exist in the users home folder at
~/.local/share/ice
to save Firefox SSB's and icons.
This folder is currently added from
/etc/skel
as the user account is created, but if it goes missing (for any reason) it doesn't get recreated .. which also means ice isn't a standalone package that other distros can utilise.
Would it be possible for the script to check if the folder is present, and create it if not ?
If you haven't time Brian, I could probably handle this ?
Well, Waterfox is a carbon copy of Firefox Pre-Quantum minus the telemetry. So... I would assume that having support for it would be really easy.
Hello,
I like the idea of having privacy invasive webapps (like, google, facebook, among others) within ice, however I find the lack of tab support not to be very convenient.
Is there a way to have tab support? (be able to use regular tabs). Would it be possible to use plugins? If it would be the case, vimperator would do the trick for me.
Thank you.
When using Firefox, for new profiles bookmark bar is shown. Not affect existing SSBs.
This patch fixes (I tested on my machine):
https://pastebin.com/jvCrm5dp
I want to add https://app.asana.com
When I click on "use icon from the site" and then apply, I get:
Http or url error. The site is probably unavailable or closed.
The site works fine and I use: https://app.asana.com
So what is the issue? Why can't it download the icon? When I proceed anyway I get the usual ice-ssb icon and I know I can change the icon manually by downloading it and providing the path to it in .desktop file but I remember this was working fine in the past.
The problem exists independently on the browser I want to set and on the link so I can use https://app.asana.com/ instead and it's always the same problem. On other sites it works, so what is this about this specific one? It does have an icon.
If the issue happens on this site then most probably there will be other sites with this bug as well.
Detecting presence of a browser shouldn't depend on hard-coded absolute paths, and should handle a little variation in bin name (e.g. "chromium-browser" vs "chromium").
I'm going to submit a PR that attempts to improve this with the help of an extra python dep (plumbum). I understand if it's desirable to implement this without an extra dep, but at least it will serve as an example.
Hi,
I'm using ice SSB together with Firefox 79.0 under Ubuntu 20.04.
I created a SSB for Threema (https://web.threema.ch). The page opens after creation, but if I close the SSB and re-open it, only a blank site is shown.
I have to re-create the profile with ice-firefox so that it opens again once.
I can also reproduce the issue with WhatsApp Web (https://web.whatsapp.com), but not with https://my.jdownloader.org
Thanks for your help.
Regards,
meiser79
Currently using
ice-ssb 6.0.5
firefox 70.0.1
Arch Linux
Some time after Firefox 68.0.2
, custom user chrome style became disregarded by default, now a "legacy" option.
Here's a Google Maps Firefox-SSB that I created in the past which hides the elements, next to a newly created Last.fm Firefox-SSB which does not:
This can be fixed, at least for now, by setting Firefox's toolkit.legacyUserProfileCustomizations.stylesheets
to true
.
Hi,
have you seen this https://geekermag.com/enable-site-specific-browser-firefox/ ?
It's available through about:config
add browser.ssb.enabled
with boolean value true
After restarting Firefox, a new option will appear in the ⋅⋅⋅ in the end of address bar : « Launch Site Specific Browser ». Or you may launch
firefox --ssb https://your_amazing_site.com
Seems working only with https. SSB window has no title.
Please add an option within the ice menu to clear the history, cookies and other data from the isolated browser. This would be more ideal than having to delete and recreate the webapp.
When i launch the web it uses the Firefox or Chromium icon , tested on Plasma 5 and Gnome
I'm using 'ice-ssb 5.2,3-1' from aur on newly installed 64bit Manjaro xfce, work previously on Manjaro KDE fine.
My ~/.local/share/ice/ folder exists, nothing in it yet.
When lauching from terminal, I see the message below, but not sure if this is really an issue based on some articles I've read saying it can be ignored.
"/usr/bin/ice:21: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
from gi.repository import Gtk"
No other messages from terminal, if I close without clicking the buttons mentioned earlier. If I do click them I have to forcibly close Ice.
All files listed from below are present:
/usr/bin/chromium-browser
/usr/bin/google-chrome
/usr/bin/ice
/usr/bin/ice-firefox
/usr/lib/peppermint/ice/ice.glade
/usr/share/applications/ice.desktop
/usr/share/applications/pixmaps/ice.png
I have uninstalled and installed again, any help on what to troubleshoot next would be great. Is there a verbose switch?
Please add an option for each webapp to allow foreign links to certain website to be opened in your main browser.
A good example of this is if you have a Gmail Ice app and when you click on a link in a email that takes you to a YouTube video, it will open the link in your browser and not within the Gmail Ice app.
Hi.
I was wondering, if You could create an .rpm build (or something that works crossplatform e.g. flatpak) of this great tool?
I used it alot on Debian-based distros, but I'm on openSUSE now, and I can't find a way to get this tool again. I use Firefox, so installing Chromium (or any other browser that supports it) just for this particular feature is an overkill for me.
Thank You.
Please add a option to require the user to enter a Password/PIN before opening the Ice webapp. This can add security to those who have webapps were they are logged into personal accounts.
Hi there
you guys have any interest in adding a native wrapper support, besides browsers
I can make it work with ICE if wanted.
https://github.com/codesardine/Jade-Application-Kit
Currently, I use Ice with Firefox, but I'm also a KDE user and have gotten comfortable using Qupzilla as my regular browser. It would be great if Ice would be able to support it alongside the others.
Could you please explain in the Readme how to install ICE in other distros (ubuntu, mint, etc)
There is somethong called the web app manofest which basically gives you slme information about the web app, such as name or description
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.