There is definitely a way to make it work with vertical alignment with a bit of CSS knowledge however it will break a lot of things which have been designed for horizontal alignment.
The purpose of TileBoard was to make a dashboard which is 100% customisable and hackable which does require some JS and CSS knowledge.
Is there anyway to randomize the screensaver options instead of it always shown in the same order? I see the JS function that grabs the images, but I’m not proficient enough in JS to merge the objects back randomly.
in file: scripts/controllers/screensaver.js
snippet starts at line 45:
You can define array of images for screensaver in the order you need and assign it to the config. You can even do crazy stuff like getting list of images from Flickr album:
if (CONFIG.screensaver && CONFIG.flickrApiKey) {
var url = 'https://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos'
+ '&photoset_id=' + CONFIG.flickrAlbum + '&api_key=' + CONFIG.flickrApiKey + '&format=json&nojsoncallback=1';
var req = new XMLHttpRequest();
req.open('GET', url, true);
req.onreadystatechange = function() {
if (req.readyState === 4) {
var res = JSON.parse(req.responseText);
if (res.photoset) res.photoset.photo.forEach(function(p) {
CONFIG.screensaver.slides.push({
bg: 'https://farm' + p.farm + '.staticflickr.com/' + p.server + '/' + p.id + '_' + p.secret + '_h.jpg'
});
});
}
};
req.send(null);
}
I have been using TileBoard on my Fire Tablets for a while now I have overcame most of the nuisances with the non rootable Fire Tablets. Iv managed to switch the screen on and off the instead of dimming and a few other bits. But performance has always been an issue.
This morning I switched off transitional animation and its like a whole different experience! If anybody is using a Fire tab with performance issues and hasn’t done so already switch transitions to simple instead of animated. I feel stupid for waiting until now to try this.
No problem all the information for the ability of automating the screen ON and OFF can be found here:
I use the licensed Fire specific version of FullyKiosk. I have managed to automate everything I need except for scheduled reboot which I’m hoping won’t be as required since changing transition type!
Things I automate using fully…
Screen ON OFF after above fix using pir in rooms
Screen brightness - depending on time of day or what I’m doing in the room.
Refreshing to TileBoard home screen after 15 min of screen being off
There are probably more but that’s all that comes to mind right now. If you want any more info let me know. I’m on mobile right now so can’t share any configs.
Testing out a way to do this that seems to be working out alright so far. I commented out lines 72 through 76 in screensaver.js and then added a new line below to get a random slide each time the interval expires:
The drawback is it’s picking a random slide every time rather than randomly reordering the slides on the fly, so you won’t necessarily see some of the slides as often as others.
Edit: I found another route that will reshuffle the array of slides each time the screensaver is closed. That way you are still seeing every slide if you have a lot of them. I added the following to the end of the window.hideScreensaver function:
for (i = $scope.slides.length - 1; i > 0; i--) {
j = Math.floor(Math.random() * (i + 1));
x = $scope.slides[i];
$scope.slides[i] = $scope.slides[j];
$scope.slides[j] = x;
}
If there’s an easier solution, I’m all for it. I know enough about Angular to be dangerous but I’m far from an expert.
But if I want to see the images in a different order each time the screensaver is triggered, I’d need it somewhere like in window.HideScreensaver, wouldn’t I?
Gotcha, I think I see what you are saying now. I could just fire off an event from HASS every so often, for example, and use that event as a trigger to my shuffle function. That way it keeps it all in config.js too… I like it.
@resoail it was a standard touchscreen monitor, just fitted it into a hole cut in the wall and to frame it ordered a custom size picture frame to fit the exact dimensions of the screen. Then connected to a RPI controller via usb cable