with -l you can copy (i.g. on Mega) your symlinks (as a file with .rclonelink as extension).
When you will sync from remote, that symlink will be created in your local system as symlink.
<advancedsettings>
<video>
<playcountminimumpercent>95</playcountminimumpercent>
<ignoresecondsatstart>60</ignoresecondsatstart>
<ignorepercentatend>1</ignorepercentatend>
</video>
</advancedsettings>
#!/bin/bash
# wrapper for mount.posixovl to conform with common mount syntax
# with this wrapper posixovl can be used in fstab
# location of the original mount.posixovl
origposixovl="/sbin/mount.posixovl.orig"
# gather inputs
while [ $# -gt 0 ]; do
if [[ "$1" == -* ]]; then
# var is an input switch
# we can only use the -o or -F switches
if [[ "$1" == *F* ]]; then
optsF="-F"
else
optsF=""
fi
if [[ "$1" == *o* ]]; then
shift
optsfuse="-- -o $1"
else
optsfuse=""
fi
shift
else
# var is a main argument
sourcedir="$1"
shift
if [[ "$1" != -* ]]; then
targetdir="$1"
shift
else
targetdir="$sourcedir"
fi
fi
done
# verify inputs
if [ "$sourcedir" == "" ]; then
echo "no source specified"
exit 1
fi
if [ "$targetdir" == "" ]; then
echo "no target specified"
exit 1
fi
# build mount.posixovl command
"$origposixovl" $optsF -S "$sourcedir" "$targetdir" $optsfuse
LABEL=Basic\0402 /media/duns/basic2 vfat user,rw,noauto,uid=1000,gid=1000,iocharset=iso8859-1,shortname=mixed,showexec,utf8 1 2
/media/duns/basic2 /mnt/e-reader posixovl noauto 0 0
#!/bin/bash
wmctrl -c mount.posixovl.orig
mount /media/duns/basic2
mount.posixovl -F /media/duns/basic2 /mnt/e-reader
krusader --left /mnt/e-reader/ebooks --right /mnt/zippati/eBooks
/*
* Copyright 2015 Martin Kotelnik
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
import QtQuick 2.2
import QtQuick.Layouts 1.1
import QtGraphicalEffects 1.0
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import "../code/model-utils.js" as ModelUtils
import "../code/config-utils.js" as ConfigUtils
Item {
id: main
anchors.fill: parent
property bool vertical: (plasmoid.formFactor == PlasmaCore.Types.Vertical)
property bool planar: (plasmoid.formFactor == PlasmaCore.Types.Planar)
property bool initialized: false
// configuration
property int temperatureUnit: plasmoid.configuration.temperatureUnit
property string configuredResources: plasmoid.configuration.resources
property int baseWarningTemperature: plasmoid.configuration.warningTemperature
property int baseMeltdownTemperature: plasmoid.configuration.meltdownTemperature
property int updateInterval: 1000 * plasmoid.configuration.updateInterval
property int itemMargin: 5
property double itemWidth: 0
property double itemHeight: 0
property color warningColor: Qt.tint(theme.textColor, '#60FF0000')
property var textFontFamily: theme.defaultFont.family
Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation
property double aliasFontSize: itemHeight * plasmoid.configuration.aliasFontSize * 0.01
property double temperatureFontSize: itemHeight * plasmoid.configuration.temperatureFontSize * 0.01
property double iconFontSize: itemHeight * plasmoid.configuration.iconFontSize * 0.01
property double temperatureRightMargin: itemHeight * plasmoid.configuration.temperatureRightMargin * 0.01
property double iconBottomMargin: itemHeight * plasmoid.configuration.iconBottomMargin * 0.01
property bool enableLabelDropShadow: plasmoid.configuration.enableLabelDropShadow
property var systemmonitorAvailableSources : []
property var systemmonitorSourcesToAdd
property int numberOfParts: temperatureModel.count
property double parentWidth: parent !== null ? parent.width : 0
property double parentHeight: parent !== null ? parent.height : 0
property double widgetWidth: 0
property double widgetHeight: 0
Layout.preferredWidth: widgetWidth
Layout.preferredHeight: widgetHeight
property bool debugLogging: false
function dbgprint(msg) {
if (!debugLogging) {
return
}
print('[thermalMonitor] ' + msg)
}
onParentWidthChanged: setWidgetSize()
onParentHeightChanged: setWidgetSize()
onNumberOfPartsChanged: setWidgetSize()
function setWidgetSize() {
if (!parentHeight) {
return
}
var orientationVertical = false
if (planar) {
var contentItemWidth = parentHeight
var contentWidth = numberOfParts * contentItemWidth + (numberOfParts-1) * itemMargin
var restrictToWidth = contentWidth / parentWidth > 1
itemWidth = restrictToWidth ? (parentWidth + itemMargin) / numberOfParts - itemMargin : contentItemWidth
} else if (vertical) {
orientationVertical = true
itemWidth = parentWidth
} else {
itemWidth = parentHeight
}
itemHeight = itemWidth
widgetWidth = orientationVertical ? itemWidth : numberOfParts * itemWidth + (numberOfParts-1) * itemMargin
widgetHeight = orientationVertical ? numberOfParts * itemHeight + (numberOfParts-1) * itemMargin : itemHeight
}
FontLoader {
source: '../fonts/fontawesome-webfont-4.3.0.ttf'
}
Image {
id: noResourceIcon;
anchors.centerIn: parent
visible: temperatureModel.count === 0
height: itemHeight
width: height
source: '../images/thermal-monitor.svg'
}
ListView {
id: listView
anchors.centerIn: parent
width: widgetWidth
height: widgetHeight
orientation: !planar && vertical ? ListView.Vertical : ListView.Horizontal
spacing: itemMargin
model: temperatureModel
delegate: TemperatureItem {}
}
/*
*
* One object has these properties: temperature, alias and other
*
*/
ListModel {
id: temperatureModel
}
Component.onCompleted: {
plasmoid.setAction('reloadSources', i18n('Reload Temperature Sources'), 'system-reboot');
reloadAllSources()
setWidgetSize()
}
onBaseWarningTemperatureChanged: {
tryReloadSources()
}
onBaseMeltdownTemperatureChanged: {
tryReloadSources()
}
onConfiguredResourcesChanged: {
dbgprint('configured resources changed')
tryReloadSources()
}
function tryReloadSources() {
if (!initialized) {
dbgprint('applet not initialized -> no reloading sources')
return
}
reloadAllSources()
}
function getSystemmonitorAvailableSources() {
if (!systemmonitorAvailableSources) {
systemmonitorAvailableSources = systemmonitorDS.sources
}
return systemmonitorAvailableSources
}
function action_reloadSources() {
reloadAllSources()
}
function reloadAllSources() {
dbgprint('reloading all sources...')
var resources = ConfigUtils.getResourcesObjectArray()
temperatureModel.clear()
if (!systemmonitorSourcesToAdd) {
systemmonitorSourcesToAdd = []
}
if (systemmonitorDS.connectedSources === undefined) {
systemmonitorDS.connectedSources = []
}
if (udisksDS.connectedSources === undefined) {
udisksDS.connectedSources = []
}
if (nvidiaDS.connectedSources === undefined) {
nvidiaDS.connectedSources = []
}
if (atiDS.connectedSources === undefined) {
atiDS.connectedSources = []
}
systemmonitorSourcesToAdd.length = 0
systemmonitorDS.connectedSources.length = 0
udisksDS.connectedSources.length = 0
udisksDS.cmdSourceBySourceName = {}
nvidiaDS.connectedSources.length = 0
atiDS.connectedSources.length = 0
ModelUtils.initModels(resources, temperatureModel)
for (var i = 0; i < temperatureModel.count; i++) {
var tempObj = temperatureModel.get(i)
var source = tempObj.sourceName
if (source === 'group-of-sources') {
dbgprint('adding group: ' + tempObj.alias)
for (var childSource in tempObj.childSourceObjects) {
dbgprint('adding source (for group): ' + childSource)
addSourceToDs(childSource)
}
} else {
addSourceToDs(source)
}
}
ModelUtils.rebuildModelIndexByKey(temperatureModel)
initialized = true
dbgprint('reloadAllSources() DONE')
}
function addSourceToDs(source) {
if (source.indexOf('udisks/') === 0) {
var diskLabel = source.substring('udisks/'.length)
var cmdSource = ModelUtils.getUdisksTemperatureCmd(diskLabel)
udisksDS.cmdSourceBySourceName[cmdSource] = source
dbgprint('adding source to udisksDS: ' + cmdSource)
addToSourcesOfDatasource(udisksDS, cmdSource)
} else if (source.indexOf('nvidia-') === 0 && nvidiaDS.connectedSources.length === 0) {
dbgprint('adding source to nvidiaDS')
addToSourcesOfDatasource(nvidiaDS, nvidiaDS.nvidiaSource)
} else if (source.indexOf('aticonfig') === 0 && atiDS.connectedSources.length === 0) {
dbgprint('adding source to atiDS')
addToSourcesOfDatasource(atiDS, atiDS.atiSource)
} else {
dbgprint('adding source to systemmonitorDS: ' + source)
if (getSystemmonitorAvailableSources().indexOf(source) > -1) {
dbgprint('adding to connected')
addToSourcesOfDatasource(systemmonitorDS, source)
} else {
dbgprint('adding to sta')
systemmonitorSourcesToAdd.push(source)
}
}
}
function addToSourcesOfDatasource(datasource, sourceName) {
if (datasource.connectedSources.indexOf(sourceName) > -1) {
// already added
dbgprint('source already added: ' + sourceName)
return
}
datasource.connectedSources.push(sourceName)
}
PlasmaCore.DataSource {
id: systemmonitorDS
engine: 'systemmonitor'
property string lmSensorsStart: 'lmsensors/'
property string acpiStart: 'acpi/Thermal_Zone/'
onSourceAdded: {
if (source.indexOf(lmSensorsStart) === 0 || source.indexOf(acpiStart) === 0) {
systemmonitorAvailableSources.push(source)
var staIndex = systemmonitorSourcesToAdd.indexOf(source)
if (staIndex > -1) {
addToSourcesOfDatasource(systemmonitorDS, source)
systemmonitorSourcesToAdd.splice(staIndex, 1)
}
}
}
onNewData: {
var temperature = 0
if (data.value === undefined) {
dbgprint('data for source ' + sourceName + ' not yet available')
} else {
temperature = parseFloat(data.value)
}
ModelUtils.updateTemperatureModel(temperatureModel, sourceName, temperature)
}
interval: updateInterval
}
PlasmaCore.DataSource {
id: udisksDS
engine: 'executable'
property var cmdSourceBySourceName
onNewData: {
dbgprint('udisks new data - valid: ' + valid + ', stdout: ' + data.stdout)
var temperature = 0
if (data['exit code'] > 0) {
dbgprint('new data error: ' + data.stderr)
} else {
temperature = ModelUtils.getCelsiaFromUdisksStdout(data.stdout)
}
ModelUtils.updateTemperatureModel(temperatureModel, cmdSourceBySourceName[sourceName], temperature)
}
interval: updateInterval
}
PlasmaCore.DataSource {
id: nvidiaDS
engine: 'executable'
property string nvidiaSource: 'nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader'
onNewData: {
var temperature = 0
if (data['exit code'] > 0) {
dbgprint('new data error: ' + data.stderr)
} else {
temperature = parseFloat(data.stdout)
}
ModelUtils.updateTemperatureModel(temperatureModel, 'nvidia-smi', temperature)
}
interval: updateInterval
}
PlasmaCore.DataSource {
id: atiDS
engine: 'executable'
property string atiSource: 'aticonfig --od-gettemperature | tail -1 | cut -c 43-44'
onNewData: {
var temperature = 0
if (data['exit code'] > 0) {
dbgprint('new data error: ' + data.stderr)
} else {
temperature = parseFloat(data.stdout)
}
ModelUtils.updateTemperatureModel(temperatureModel, 'aticonfig', temperature)
}
interval: updateInterval
}
Timer {
interval: updateInterval
repeat: true
running: true
onTriggered: {
ModelUtils.computeVirtuals(temperatureModel)
}
}
}
WallpaperFader {
visible: config.type == "image"
anchors.fill: parent
state: loginScreenRoot.uiVisible ? "on" : "off"
source: wallpaper
mainStack: mainStack
footer: footer
clock: clock
}
visible: config.type == "image"
visible: false
visible: false
WallPaperFader
adb tcpip 5555
from a command promptadb shell "ip addr show wlan0 | grep -e wlan0$ | cut -d\" \" -f 6 | cut -d/ -f 1"
to obtain the phone's IP address adb connect < ip_address > :5555
30 8-11,15-18 * * * /path/to/script
crontab -l
3. Per avere anche sullo smartphone l'avviso dovete avere kdeconnect
sudo nano /etc/systemd/system/YOUR_SERVICE_NAME.service
[Unit] Description=lampp [Service] ExecStart=/opt/lampp/lampp start ExecStop=/opt/lampp/lampp stop Type=forking [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable YOUR_SERVICE_NAME
sudo systemctl start YOUR_SERVICE_NAME
systemctl status YOUR_SERVICE_NAME
udisksctl
command.udisksctl mount -b /dev/disk/by-uuid/40B133AC2360CFAF
udisksctl mount -b /dev/disk/
by-label
/hd.esterno
Field Shadings
in Option -> Tools -> LibreOffice -> Application Colors -> Cat: Text Document
according to you preferred color (light grey, f.e.). # Get the current selection.
sText=clipboard.get_selection()
lLength=len(sText)
try:
if not store.has_key("textCycle"):
store.set_value("state","title")
except:
pass
# get saved value of textCycle
state = store.get_value("textCycle")
# modify text and set next modfication style
if state == "title":
#sText=sText.capitalize()
sText=sText.title()
newstate = "lower"
elif state == "lower":
sText=sText.lower()
newstate = "upper"
elif state == "upper":
sText=sText.upper()
newstate = "title"
else:
newstate = "lower"
# save for next run of script
store.set_value("textCycle",newstate)
# Send the result.
keyboard.send_keys(sText)
keyboard.send_keys("<shift>+<left>"*lLength)
sub translate_word
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Language"
args1(0).Value = "Current_Italian (Italy)"
dispatcher.executeDispatch(document, ".uno:LanguageStatus", "", 0, args1())
rem--nuovo inserim inizio
Dim oScriptProvider, oScript
oScriptProvider = ThisComponent.getScriptProvider()
oScript = oScriptProvider.getScript("vnd.sun.star.script:TradutorLibreText.py$TradutorLibreText?language=Python&location=user")
oScript.invoke(array(), array(), array())
rem--nuovo inserim fine
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:WordLeftSel", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Undo", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Undo", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Text"
args7(0).Value = " "
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args7())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Text"
args9(0).Value = ")"
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args9())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToPrevWord", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToPrevWord", "", 0, Array())
rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "Text"
args12(0).Value = "("
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args12())
rem ----------------------------------------------------------------------
dim args13(1) as new com.sun.star.beans.PropertyValue
args13(0).Name = "Count"
args13(0).Value = 1
args13(1).Name = "Select"
args13(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args13())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())
rem ----------------------------------------------------------------------
dim args16(1) as new com.sun.star.beans.PropertyValue
args16(0).Name = "Count"
args16(0).Value = 1
args16(1).Name = "Select"
args16(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args16())
rem ----------------------------------------------------------------------
dim args17(0) as new com.sun.star.beans.PropertyValue
args17(0).Name = "Color"
args17(0).Value = 8421504
dispatcher.executeDispatch(document, ".uno:Color", "", 0, args17())
rem ----------------------------------------------------------------------
dim args18(2) as new com.sun.star.beans.PropertyValue
args18(0).Name = "FontHeight.Height"
args18(0).Value = 8
args18(1).Name = "FontHeight.Prop"
args18(1).Value = 100
args18(2).Name = "FontHeight.Diff"
args18(2).Value = 0
dispatcher.executeDispatch(document, ".uno:FontHeight", "", 0, args18())
end sub
http://192.168.0.254/