Greasemonkey script folder missing - greasemonkey

I am following the instructions to transfer Greasemonkey scripts to Tampermonkey: How to Transfer All Greasemonkey userscripts to Tampermonkey on Firefox 57+. However the folder "gm_scripts" mentioned in the instructions does not exist on my PC.
Here are the folders that I do have (Click for larger view):
Would you know which of these the scripts may be in?
I am a beginner at using scripts and maybe this is not really necessary, but it is good practice for me.

Apparently GreaseMonkey no longer stores the user scripts in gm_scripts for Firefox. I have Firefox 58 with GreaseMonkey 4.2. I manually added some junk data to one of the user scripts, followed by comparing file sizes for any changed files in AppData, and what I discovered is that the scripts are apparently stored in an SQLite database file located at:
C:\Users\[Username]\AppData\Roaming\Mozilla\Firefox\Profiles\[ID].default\storage\default\moz-extension+++[GUID]\idb\[Number]gyreekansoem.sqlite
I then proceeded to open the database file using a tool called DB Browser for SQLite. Inside the database, the GreaseMonkey user scripts appear to be stored within the object_data table under the data field. The data format is unfortunately not plain text, so I am not sure how exactly to fetch the JavaScript directly from this database field.

If you just need to export all the userscripts, there's a menu item called Export a backup... in the current version of Greasemonkey (tested with version 4.8). This exports all the scripts' folders and files into a ZIP file.

Related

How do I test file download using intern framework?

I have a requirement where I need to write functional test for download a file and testing its contents.
So i can say there are two parts.
1) Ensure clicking on a link downloads a file
2) Reading the file an checking its contents. Its a csv file, so I Can possibly do some manipulation with the content.
There are several issues with doing this. One is that if you're running a browser on a remote system, you'll need a way to get the file back to the system running Intern. The second issue is that you'll need to know where the downloaded file ended up when it was downloaded. A third issue is that some browsers (FF and IE) pop open OS-level dialogs that Selenium can't deal with.
The first question is: do you really need to download a file in the browser? It sounds like you may be testing a service rather than the browser, in which case you may be able to just download the file using Intern and inspect it there.
Assuming you do need to download a file via the browser, you should be able to configure a browser to not open a confirm dialog and to download the file to a known location, which at least handles 2 of the 3 issues mentioned above. Note that I haven't actually tested this.
In Firefox you can setup a test profile and use it when running tests. You'll likely need to configure the following properties:
browser.download.dir: 'path to download folder'
browser.download.folderList: 2
browser.helperApps.neverAsk.saveToDisk: 'text/csv'
browser.download.manager.showWhenStarting: false
For Chrome you'll pass options through the environment descriptor. The specific options should be:
'profile.default_content_settings.popups': 0
'download.default_directory': 'path to download folder'
Once you've setup the browser, your test code would need to click the link, then wait for some indeterminate amount of time (Selenium doesn't provide any sort of download progress data), then grab the file from the Intern test itself (using a network request or local file operation) to inspect it.

How to tell Gitbook where to store files locally?

I just want to create a simple gitbook on my local drive, not attached to any remote repository. I went to File->Change Library Path... and pointed to the place where I want my files to go. When I create a new book, Gitbook puts some stuff in that library path that looks right: README.md, etc. But when I change README.md in Gitbook and save the file, it doesn't save to the README.md it created when I created the book. In fact I can't even figure out where it saved my changes, even after doing a find/grep on my entire hard drive.
Edit: I need to know where it saves, so I can run the command-line gitbook to create a pdf.
Which OS are you using?
On Windows, the default directory is C:\Users\username\GitBook
I had troubles with this when I first started too.
Here is some background that may help you
There are three flavors of gitbook: The online editor (storage is on Gitbook.com or Github), the offline editor (same storage + local at C:\Users\Documents\Gitbook), and the CLI toolchain (any storage you desire).
If you talking about issuing commands, you want to install the toolchain
If you are running Windows, I can't help, but when you switch to Ubuntu :) go to toolchain.gitbook.com to see the the instructions.
Hope this helps
Yes, its weird that the changes are not immediately reflected in the physical file. I changed something and saved again, that actually made the first save visible. :D Try it once, this may work for you too.
Gitbook Editor works with git history only. So externally edited and not committed files in that folder will not be identified in the editor. However, when you save the files in gitbook editor, it creates a commit and then only it will be reflected in the physical drive location.
You can find more about the issue here: https://github.com/GitbookIO/feedback/issues/101
Currently there's no way to explicitly tell GitBook where to store files, however we use a simple workaround which allows us to use the GitBook Editor to edit a book in our own git repository but keep control of how and when we commit changes.
We have a docs directory in our project which contains the gitbook which is symlinked to the folder GitBook uses to store its own books. This directory has its own .git folder ignored from a parent directory as we don't need GitBooks commits.

Update some chrome extension files from own server

I am writing a chrome extension in which some script and an XML file in which I data is to be read by the script are changed almost twice per day. If I include a link to it on every page load, my hosting server load will probably suffer. Isn't it possible to get a copy of my script and XML Files each time that the browser is launched in order to update them in my extension ?
PS : I resorted to this solution since it is not possible to get the Update of the extension directly from my server since chrome's last upgrades.
- Any other way to update my extension is welcomed .

Creating a menu item generically in Linux

For part of a large university project I have built a large java based application. To make "installation" cleaner I am aiming to write a script to copy the jar to a hidden file in the users home directory then add a menu &/Or desktop launcher.
Since I do not know what platform the markers shall be using it seems sensible to make this generic so I was going to build a shell script and a batch file.
The shell script starts off simple, check the directory doesnt already exist, make it and copy the file accross.
Then it comes to making a launcher of some kind. I presume each desktop environment shall do things differently.
After 10 minutes with google it seems everything suggested is autotools but since I have no knowledge of this it seems a bit overkill.
Is there an easy way to achieve what i need?
Thanks
These days, basically all of the desktop environments uses desktop files. For the specification for those files, see the Desktop Entry Specification.
Normally, they're put in /usr/share/applications on the system. Those files are then read and used to construct the menu.
If you have the ability to write to the system /usr/share/applications directory, that's obviously simplest, but if you had that, you would probably be putting the JAR file somewhere other than a hidden directory in the user's home directory.
If not, the path that's supposed to be honored is ~/.local/share/applications. If you drop a desktop file in there, it should show up for the user. (This is somewhat newer; I don't think GNOME 2 supports, it for example. Older desktop environments had various special places for these files.)
Then, the problem basically reduces to figuring out what to write for the Exec line in the desktop file. (See the desktop files on your system in /usr/share/applications for some examples.) If you're lucky, you can get away with just sticking a java command in there, but the details will depend on your application.

How can I open a local file with a local program through my browser?

On my webpage, I have placed a link to a local file (e.g. "text.docx" on my local HD). I would like to double click on this link, and have a third party software which is installed locally on my PC (e.g. Microsoft Word) open it.
I would like to be able to do this with Firefox and Google Chrome. Obviously, I am a newbie to web programming.. can somebody show me the way? I have looked around and had the impression that I need to write and add an extension, maybe?
Thanks for your time. Jakob
This is only possible if you know either the absolute path to the file or the relative path from whatever working directory your browser runs from. You the create a link with
href="file://relative/path/to/file/text.docx"
or
href="file:///absolute/path/to/file/text.docx"
and any modern browser will query the system database for the mimetype of the file depending on its extension, thus prompting to open the correct application.
EDIT
I inawarently introduced a unixism in the previous code: Distinction bewteen absolute and realtive paths as above works well on current *nix desktops, but in Windows an absolute path will most likely look like
href="file://C:/drive/absolute/path/to/test.docx"
Mind the 2 (not 3) slashes a the beginning, and the forward (not backward) slashes.
As far as I know, you can't link to local files from a website. If you upload it to where your files are, you could then be able to download it.
I was able to execute code locally, using Firefox, by adding an extension which used the XPCOM interface. One such extension was "commandrun", and may be found here: https://github.com/aabeling/commandrun .

Resources