Nástroje používateľa

Nástoje správy stránok


start

Toto je staršia verzia dokumentu!


Posledné príspevky

Wineskin Engines archive

Comprehensive list of Wineskin engines for download.

Parsed from PortingKit list of engines.

These need to be copied into ~/Library/Application Support/Wineskin/Engines to appear in Wineskin Winery.

Wineskin Stable & Developer – WineHQ ''Stable'' and ''Developer'' branch engines

Stable builds are listed in bold. Stable branch always includes only bugfixes, whereas developer branch adds new features.

32bit builds

Wineskin 9
Wineskin 10

64bit builds

Wineskin 9
Wineskin 10
Wineskin 11

Wineskin Staging – WineHQ ''Staging'' branch engines

32bit builds

Wineskin 9
Wineskin 10

64bit builds

Wineskin 9
Wineskin 10
Wineskin 11

Wineskin CX(G) – CrossOver wine engines

  • CX builds are engines from CrossOver wine – see release notes
  • CXG builds are engines from (now discontinued) “CrossOver Games” edition – see release notes

32bit builds

Wineskin 8
Wineskin 9
Wineskin 10
Wineskin 11

64bit builds

Wineskin 10
Wineskin 11
Wineskin 12

Archived listEngines1.1 json files

Comments

2025/11/14 15:57 · Róbert Toth

My App settings defaults

A collection of my preferred hidden and undocumented settings for Apps I use.

The apps are alphabetically ordered by their title.

TextMate

Disable soft wraps for comments
Problem
Long comments (those going over window width) are wrapped even if View → Enable Soft Wrap is turned off.
Solution
Go to menu Bundles → Edit Bundles → Source → Settings and disable all items named Style: Line Comments *

See this and this thread

Comments

2025/11/08 16:43 · Róbert Toth

Róbert Toth: The Structure of Forms in Plato’s Theory of Forms (2023)

Citation

Toth, Robert, The Structure of Forms in Plato's Theory of Forms, Trinity College Dublin, School of Social Sciences & Philosophy, Philosophy, 2023

Abstract

The overall aim of this PhD dissertation is to consider and examine the relations between Forms in Plato’s theory of Forms. Undertaking this task does not require a full account of Plato’s theory of Forms, rather it requires a systematic and comprehensive investigation of how, according to Plato in different dialogues and different stages of his philosophical career, each Form is related to other Forms. For the purpose of this dissertation, I treat as familiar Plato’s claim that sensible things are what they are in relation to and by participating in particular Forms.

The main thesis of the dissertation is that Plato always, both before and after the Parmenides, in which he appears to submit the theory of Forms to critical investigation and assessment, held a single coherent view about the relations between Forms. This is the view that each Form, in addition to being what it is in virtue of itself (e.g. the Form of justice being, in virtue of itself and being the very thing it is, a certain harmony of the soul) has a number of properties in virtue of its relation to certain other Forms. According to this account of Plato’s view, which it is my aim to defend, each Form has a determinate structure, which consists of a combination of what it is in virtue of itself (kath’ auto) and what it is in virtue of its relation to certain other Forms (pros allo).

This overall thesis of the dissertation is of particular interest and significance, not least because it goes against a dominant (though not universally accepted) view in the literature, according to which Plato changed his mind radically about this issue and question in and when he wrote the Parmenides. According to this widely held view among critics, which it is my aim to argue against and refute and replace with a positive account, Plato, before the Parmenides and in such major dialogues as Republic, Phaedo and Symposium, held that individual Forms are what they are simply in virtue of themselves, and that Forms do not stand in relations to other Forms. Likewise according to this widely held view of Plato’s Forms and the theory of Forms, Plato came to realise in the Parmenides that each Form must stand in relations to other Forms, and he developed this view further in such dialogues as the Sophist.

A major aim of this dissertation is to argue against this dominant view in the literature and to show that, on the contrary, Plato holds, throughout these dialogues (including Charmides, Phaedo, Republic, Symposium, Parmenides and Sophist) a single coherent view about Forms, what they are in virtue of themselves, and what they are in virtue of their relations to each other.

2025/10/14 14:47 · Róbert Toth

Command-line tools for PDF processing

A collection of command line solutions for different PDFmanipulation usecases, such as:

  • PDF splitting (“explode” one multipage PDF into set of singlepage PDFs)
  • cropping PDF pages

Due to the nature of the topic, this post is (and probably will remain) a workinprogress.

General: Overview of PDF-processing and manipulation tools

Coherent PDF (cpdf)

MuPDF (mutool)

pdfcpu

PDFtk server (pdftk)

QPDF

Other (non-/not-yet-tested) tools

TODO

1. Minimize PDF size

Example usecase: Obvious.

TL;DR: Summary first

  • Effectiveness of the tools (ordered by file size):
    • acrobat optimize ≪ mutool clean ≪ cpdf squeeze < pdfcpu optimize ≪ pdftk compress
    • ❶ Acrobat wins (but is paid), ❷ mutool is second & free (but is hard to configure), ❸ cpdf is third but is easiest to use
    • I have also tested all possible combinations between these tools, and the results are best when Acrobat Optimizer is followed by yet another tool. So…
  • Effectiveness of the combined tools (ordered by file size):
    • acrobat optimize + cpdf squeeze < acrobat optimize + pdfcpu optimize ≪ acrobat optimize + mutool clean

Conclusion: Always optimize PDF in Acrobat PDF Optimizer, then squeeze it with cpdf squeeze!

Coherent PDF (cpdf)

cpdf -squeeze:

cpdf -squeeze "in.pdf" [-squeeze-no-recompress] -o "out.pdf"

pdfcpu

pdfcpu optimize:

pdfcpu optimize "in.pdf" "out.pdf"

MuPDF (mutool)

mutool clean:

mutool clean -gggg -l -d -z -s "in.pdf" "out.pdf"

mutool clean has many options and it takes some experimentation to see what actually shrinks the PDF size:

  • gggg (Garbage collect unused objects / compact xref table / merge duplicate objects / check streams for duplication): first three g's do not affect the file size for me, and the fourth makes it sometimes a bit larger and sometimes a bit smaller. I usually use the whole gggg parameter.
  • l (Linearize PDF): this makes PDF ready for “Fast web view”, but makes it slightly larger. Note that MuPDF 1.26.0 removes linearisation support, so it does not really makes sense to use it.
  • d (Decompress streams): this decompresses the whole file, which makes it larger – but when combined with z (Deflate uncompressed streams), it allows better PDF compression
  • z (Deflate uncompressed streams): this is the most important switch, and when combined with d (Decompress streams) it lowers PDF size even more
  • f (Compress font streams): no effect for me
  • i (Compress image streams): no effect for me
  • c (Clean content streams): no effect for me
  • s (Sanitize content streams): this actually lowers file size for me
  • AA (Recreate appearance streams for annotations): no effect for me (and not sure what it really does – at least while there are no annotations, it does not affect PDF file size at all)

PDFtk server (pdftk)

pdftk compress is not suitable for the task of really shrinking the PDF size to minimum, as the developer himself claims:

pdftk "in.pdf" output "out.pdf" compress

QPDF

N/A (not tested yet TODO)

Adobe Acrobat

Acrobat PDF Optimizer has tons of options. After thorough testing, the best settings seems usually to be these:

Images tab
⚠️ This is a perPDF setting – it depends on your particular usecase and file. My default is to have it turned off.
Fonts tab
✅ always on, with font subsetting turned on
Transparency tab
🚫 This causes optimisation to take extremely long time in some PDFs. My default is to have it turned off (and I cannot remember a situation when I actually needed to turn it on).
Discard Objects tab
✅ Everything on, except Discard bookmarks (you never want that) and also Convert smooth lines to curves and Detect and merge image fragments (these are not needed in 99% of cases and they cause optimisation to take significantly longer, while they usually do not lower the PDF size at all). You might also want to Discard all Javascript actions, but if there are any internal links (e.g. table of contents, references or index pointing to specific places in PDF), this causes them to disfunction.
Discard User Data tab
✅ Everything on.
Clean Up tab
✅ Everything on.

2. Split each page of PDF into several pages (posterisation)

Example usecase: you have (scanned) pages where each PDF page contains two physical pages, and want to crop those into two.

TL;DR: Summary first

Conclusion: Use cpdf chop. MuPDF has some problems and combining pdftk with manual cropping in Adobe Acrobat is tedious.

MuPDF (mutool)

mutool poster:

mutool poster -x 2 "in.pdf" "out.pdf"

Note that mutool poster sometimes sets both mediabox and cropbox – the latter seems unnecessary. More importantly, mutool poster causes problems when mutool trim is used afterwards – for some reason, it leaves the PDF completely empty. This does not happen when mutool trim is used after cpdf chop.

Coherent PDF (cpdf)

cpdf -chop:

cpdf -chop "2 1" "in.pdf" -o "out.pdf"

Unlike MuPDF, cpdf chop only sets mediabox, which is enough.

Moreover, cpdf can also remove page labels, if needed:

cpdf -chop "2 1" "in.pdf" AND -remove-page-labels -o "dstNoLabels.pdf"

Indirect way: Duplicate each page, then crop out left or right half on odd and even pages

pdftk shuffle && cpdf -mediabox:

pdftk A=in.pdf shuffle A A output out.pdf
cpdf -mediabox "0mm 0mm a5landscape" "in.pdf" odd -o "srcOdd.pdf"
cpdf -mediabox "148.5mm 0mm a5landscape" "srcOdd.pdf" even -o "out.pdf"

The second step might also be done in Adobe Acrobat “Crop pages” function.

QPDF

N/A (not tested yet TODO)

3. Crop pages of PDF

See MuPDF documentation on different PDF page boxes (media|crop|art|trim|bleed]box).

Mediabox is a “physical” size of the page, while other boxes are in a way only “virtual”: they specify which content should be visible at what point and in which cases, but they do not alter real PDF page size.

Coherent PDF (cpdf)

cpdf -mediabox (/cropbox/artbox/trimbox/bleedbox):

cpdf -mediabox "0mm 0mm a4portrait" "srcA3.pdf" -o "dstA4.pdf"

Note that adjusting page sizes by cropping mediabox is (to my knowledge) the only way to do it without altering the PDF content in any way (as explained here in Coherent PDF manual). Cropping other boxes might lead to PDF structure being changed.

Adobe Acrobat

Note that Acrobat won't let you crop MediaBox, only other boxes (duh!).

  1. Go to “Edit PDF” and then “Crop pages” function.

QPDF

N/A (not tested yet TODO)

4. Remove cropped content from PDF

Example usecase: You have cropped some pages but you want to actually remove the content, since otherwise it is only hidden but remains in PDF – this can be seen when you inspect the PDF in Adobe Acrobat via “Edit PDF” and zoom out the page – the cropped content will be selectable, although not visible, since it is out of the page margins.

According to its author, it seems that cpdf is not going to support this feature.

MuPDF (mutool)

mutool trim:

mutool trim -o "out.pdf" -b cropbox "in.pdf"

Warning: In some PDFs, I have experienced mutool trim to also cut out some contents which was actually visible onpage (that is, inside mediabox & cropbox). I don't know whether it was because the PDF itself was malformed, or whether it is a problem with mutool – but just in case, better avoid and use Acrobat below.

Adobe Acrobat

  1. Download custom user script CropBoxFix
  2. Import it into Acrobat Preflight (by doubleclicking)
  3. Run preflight and the script

QPDF

N/A (not tested yet TODO)

5. Text in Calibri-created PDF files cannot be copied/searched in Preview

Preview app (or any PDFkitbased PDF viewer, such as Skim) cannot search/copy text from PDFs generated by Calibri. This is because the PDF created in such way uses CID Fonts, something which Preview app based on Apple's PDFKit does not support.

This leads to a situation where such PDF files can be properly shown and visually read, but trying to select (and copy) or search the text inside the PDF fails. See these sources for reference:

Fixing the problem with GhostScript

This can be fixed by converting/running the PDF file through the following GhostScript command:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH \
-dPrinted=false -dQUIET -sOutputFile="out.pdf" "in.pdf"

This was mentioned here.

GhostScript can be installed e.g. by MacPorts:

sudo port install ghostscript

6. Decompress the whole PDF for editing in text editor

Example usecase: There are some cases when you need to see or edit the actual text contents of the PDF. For example, there are some metadata at the level of individual pages (like ) which no existing program will actually clean (Acrobat “Find hidden information” lists them, but keeps them there when you select to remove them).

So directly editing text contents of the PDF might come in handy.

TL;DR: Summary first

Conclusion: TODO

Coherent PDF (cpdf)

cpdf -decompress:

cpdf -decompress [-no-preserve-objstm] "in.pdf" -o "out.pdf"

As mentioned by manual, -no-preserve-objstm will remove data from separate object streams and put them back into normal flow of PDF, which should make the PDF easier for direct editing.

Warning: After processing a PDF using this command (with or without the nopreserveobjstm switch), I have not been able to use Adobe Acrobat's “Optimize” or “Compare documents” function on it ever again – no matter how much tinkering, documentprocessing, transforming and cleaning I did on the PDF. So I consider this method to be unreliable if you want to maintain Adobe Acrobat compatibility (which I always do).

MuPDF (mutool)

mutool clean:

mutool clean -d "in.pdf" "out.pdf"

mutool clean is specifically stated by developer as designated to “make a PDF file human editable” and to “expand compressed streams”, so this is the command to go.

There is one additional switch which deals with PDF decompression: a, which ASCIIhexencodes binary streams. This safely encodes binary streams so that there should be no problems when editing the PDF in text editor. However, this forces almost all streams in PDF to be encoded, which makes the whole PDF humanunreadable, so it is not really helpful.

Of all tested tools, mutool clean is the only one which maintains original object reference numbers (e.g. /Metadata 22 0 R referencing object #22).

Warning: After processing a PDF using this command (with or without the a switch), I have not been able to use Adobe Acrobat's “Optimize” or “Compare documents” function on it ever again – no matter how much tinkering, documentprocessing, transforming and cleaning I did on the PDF. So I consider this method to be unreliable if you want to maintain Adobe Acrobat compatibility (which I always do).

pdfcpu

pdfcpu does not seem to support decompressing PDFs.

PDFtk server (pdftk)

pdftk uncompress:

pdftk "in.pdf" output "out.pdf" uncompress

PDFtk separates individual PDF dictionary elements by newlines (0A). E.g. a page definition looks like this:

<<
/pdftk_PageNum 7
/Metadata 23 0 R
/Rotate 0
/Resources 24 0 R
/Type /Page
/Parent 25 0 R
/Contents 26 0 R
/MediaBox [0 0 370.158 591.26]
/CropBox [0 0 370.158 591.26]
>>

It also adds its own elements (e.g. /pdftk_PageNum).

QPDF

qpdf --stream-data=uncompress:

qpdf "in.pdf" --stream-data=uncompress "out_qpdf.pdf"

This will effectively equivalent to using both --compress-streams=n and --decode-level=generalized.

There is also another switch, --qdf, which TODO

QPDF currently does not support maintaining the original object ID.

New cases to come…

Comments

2025/05/07 22:14 · Róbert Toth

Adjusting $PATH on macOS Mojave (and linking it to Xcode Command Line binaries)

Trying to set PATH environment variable on macOS is hell.

This article presents a simple solution using launchctl utility which meets the following criteria:

  • the PATH change is permanent (that is, it survives system restart);
  • the PATH change is seen and propagated to both GUI and shell applications – that is, both Terminal (bash/Zsh in macOS Catalina+) and applications launched by Spotlight, Dock and Finder see the adjusted PATH;
  • it allows appending a path to existing PATH variable, not just rewriting it to custom value;
  • it should preferably allow setting the PATH on a peruser basis, not systemwide (and thus for all users);
  • lastly, it works (at least) on macOS 10.14 Mojave and onwards

The article will also show how to make Xcode Command Line binaries available to all applications – this will, for example, replace the need to separately install python3 package (which is sometimes a little difficult), since it is part of the Command Line utilities.

Solution with launchctl config subcommand

The onlysinglepossibleworking — way to set PATH environment variable is this:

  • Peruser $PATH change:
    sudo launchctl config user path <new_path>
  • Systemwide $PATH change:
    sudo launchctl config system path <new_path>

To actually append a custom path to the existing $PATH variable, the command would look like this:

sudo launchctl config user path $PATH:<new_path>

The manual page man launchctl is actually helpful here. It tells you that this command specifically works only for setting PATH environment variable. Setting any other environment variable is possible with another launchctl subcommand: launchctl setenv <variable> <new_value>.

What it does not mention is the crucial information that while it is meant to set environment variables in general, the setenv subcommand cannot be used to set PATH variable. This information is even more important given that at some point before macOS Mojave, this was the preferred and working solution. Well, it does not work at least from macOS Mojave (reports differ as to precise OS X version on which it stopped working – see 1. 2, 3).

Caveat: this does not propagate changed $PATH to Terminal

The above solution is the only single one able to expose adjusted $PATH to GUI applications launched by Dock, Spotlight or Finder. However, launchctl config fails to propagate this $PATH to shell environment under Terminal. So, to have the $PATH adjusted also under this environment, you have to add the same changed path to one of these locations:

  • /etc/paths
  • /etc/paths.d – this is actually a folder, where you create new file with your custom path(s)
  • ~/.bash_profile (probably works only until macOS Catalina+, which switched to Zsh – I guess that ~./zshrc will then work instead)

A good resource for these is here. I suggest using /etc/paths.d, since it allows adding or removing your custom path without interfering with other paths at all (as with /etc/paths) and it does not break with the change of default shell (as with ~/.bash_profile).

How to revert to default $PATH

As Hannes Schmidt, the author of EnvPane (a great app for setting environment values) fittingly noted:

Amusingly, there is no documented way to revert to the defaults.

The changes to $PATH made by launchctl config are stored in two different *.plist files under the /private/var/db/com.apple.xpc.launchd/config/ directory:

  • Peruser $PATH changes:
    /private/var/db/com.apple.xpc.launchd/config/user.plist
  • Systemwide $PATH changes:
    /private/var/db/com.apple.xpc.launchd/config/system.plist

So reverting to the default is possible by simply deleting these files (which requires sudo authentication) and rebooting.

What does NOT work

Since there are almost dozen different solutions to the problem, it is I guess worth to list of all the ways which I personally tried and can confirm that they do not work (at least on macOS 10.14 Mojave):

So, trying to set custom $PATH in any of these files does NOT work (neither for GUI apps nor for Terminal):

These files do NOT work to set custom $PATH for GUI applications, but they do set $PATH for Terminal only (and apps launched from it):

  • /etc/paths
  • /etc/paths.d
  • ~/.bash_profile (probably works only until macOS Catalina+, which switched to Zsh – I guess that ~./zshrc will then work instead)

The last two ways (/etc/paths.d and ~/.bash_profile) are explained here.

Also, here is a splendid list of ways to set PATH variable on different Unix/Linuxlike systems. Neither of them works on macOS Mojave, but it is a great reference for other systems (duh!). And here is a good attempt to list possibilities for macOS, albeit outdated and no longer valid.

Linking binaries from Xcode Command Line Tools to PATH (and thus installing python3 by doing so)

This task is now easy:

sudo launchctl config user path "$PATH:/Library/Developer/CommandLineTools/usr/bin"

And because Xcode Command Line Tools contain python3 package (v3.7.3 ships with Xcode Command Line Tools 11.3.1, which is the latest version working on Mojave), this will also install python3 for all applications on your system, including shell scripts run in Terminal and also GUI apps (for example, qBittorrent 4.2.2+ requires python3).

As explained above, making this change visible in Terminal will require you to supply the Command Line Tools path also to /etc/paths.d. For this, the following command is enough:

sudo tee /private/etc/paths.d/90-Xcode-command_line_tools <<< "/Library/Developer/CommandLineTools/usr/bin"

The leading 90 in the filename causes the path to Command Line binaries to be added near the end of the $PATH construction. This is because the /private/etc/paths.d folder is traversed in alphabetical order, so that alphabetically “later” files get their paths added to $PATH later. Thus, by putting “90” at the beginning of the filename, we push the path to generic Command Line binaries down the road to allow more specific sources of binaries to take precedence over them.

Remark on setting DYLD_* variables (e.g. DYLD_LIBRARY_PATH or DYLD_FALLBACK_LIBRARY_PATH)

One last note about a remotely related topic. You might want to use the above procedures to set custom path to your dynamic libraries (*.dylib). This would make sense even for Xcode Command Line Tools, since they have not only their own binaries, but also dynamic libraries supplied in /Library/Developer/CommandLineTools/usr/lib.

You would normally do this by adding a custom path to either DYLD_LIBRARY_PATH or DYLD_FALLBACK_LIBRARY_PATH.

TL;DR: Do not even try. Since OS X 10.11 El Capitan and later this is now absolutely impossible, since all DYLD_* environment variables are cleared upon the launch of any executable for security reasons as part of System Integrity Protection (SIP). This means that setting these values is pointless, since they will be cleared anyway (that is, unless you disable SIP).

The alternative to using DYLD_* variables is to change the paths where the executable itself is looking for these dynamic libraries by using install_name_tool, as explained in Tweaking apps, executables and dynamic libraries with install_name_tool and otool.

Comments

2025/01/09 23:40 · Róbert Toth
start.1378892983.txt.gz · Posledná úprava: 2013/09/11 11:49 od Róbert Toth