WineHQ

KeyNote NF

No Screenshot

Submit Screenshot

Released May 10th, 2024.

Application Details:

Version: 1.9.4.1
License: Free to use
URL: https://github.com/dpradov/key...
Votes: 0
Latest Rating: Silver
Latest Wine Version Tested: 9.9

Maintainers: About Maintainership

Free Download .exe installer available on Github

Test Results

Old test results
The test results for this version are very old, and as such they may not represent the current state of Wine. Please consider submitting a new test report.
Selected Test Results

What works

95% of functionality works:

  • Even minimize to tray & check for updates works
  • Insert Images works since wine 9.9 (with wine tricks) & keynote 1.9.4.1
  • It's easier to list what doesn't work.

5% of broken functionality boils down to:

  • Scrollbar issue in text content area
    • scrollbar can visually become out of date when switching between tree nodes.
      clicking the scrollbar will correct the visual.
      winetricks fix makes it happen less often, but it still happens
  • Benign / ignorable error message on close: 
    Access violation at address 7773C3D6 in module 'comctl32.dll'. Read of address 00000068.
    It only happens when you close the app, and it saves correctly so no data loss.
    (This pop up seems to be specific to a winetricks compatibility improvement. Also this error seems to go away and return between patch versions I recall seeing it around wine 8.9, then went away wine 9.0, then returned wine 9.9.)

What does not

1 Noticeable Issues:

(If all Noticeable issues were fixed, the app compatibility could change from Silver to Gold.)

  • Scrollbar (Visual Issue): 
    When switching between tree nodes, the scrollbar in the In the text content area
    often becomes out of date. Clicking the scrollbar fixes it.

2 Not Fixable, but Ignorable Issues:

  • System Properties Invalid parameter:
    (This is a rarely used / useless feature that's easy to avoid)
    [Top Menu] --> [File] --> [Properties] --> (File Properties Windows Opens) -->
    [System] --> (Popup mentioning: Invalid parameter, OK) (you can just close it)
  • Insert Object does nothing:
    (This is a rarely used feature that won't be missed)
    [Top Menu] --> [Insert] --> [Object] --> (nothing happens) (the other items trigger a pop up dialog)


Workarounds

Issues fixable with workarounds:

See the "HowTo / Notes section" for:
General Installation Tips on how-to avoid, fix, and work around known issues.

  • Missing Fonts (avoidable, a permanent fix exists)
  • Black boxes covering up parts of the interface (avoidable, a permanent fix exists)
  • User Interface can appear to be frozen when it's not (easy to avoid and easy to work around if encountered)
  • How to install in a way that you can see pre-existing images.
  • Scrollbar visual issue (annoying wine bug, a workaround exists)
  • Windows Hypervisor Tips to avoid performance issues (for anyone testing Linux)


What was not tested

Rarely used file import / export, and encryption capabilities.

I didn't tweak the default settings much. I tried to test how well the default functionality worked.



Hardware tested

Graphics:

  • GPU: Intel
  • Driver: open source

Additional Comments

Note: Top Menu -> Folder -> Check Spelling --> will give an error about Unable to initialize MS Word (0): Invalid class string, ProgID: "Word.Application".
This is ignorable and is equivalent to how the program runs on Windows.
(Spell check only works if MS Office is also installed.)

selected in Test Results table below
Operating systemTest dateWine versionInstalls?Runs?Used
Workaround?
RatingSubmitter
CurrentopenSUSE Tumbleweed (rolling release)May 28 20249.9Yes Yes YesSilverChristopher McGrath 

Known Bugs

Bug # Description Status Resolution Other apps affected

Show all bugs

HowTo / Notes

Notes for Windows Users using a Hypervisor to test out KeyNote NF on Wine on Linux.

It's common to test out a Linux Distro in a VM before committing to a bare metal install.

If you are a Windows user who is interested in testing out KeyNote NF on Wine on Linux, then you should know that there is a recommended hypervisor to use for testing purposes: 

  • ALL Hypervisors that support Hypervisor Host to VM Guest based copy paste:


    • Recommendation: (It helps avoid potential copy paste errors related to text encoding.)
    • Load this webpage from within the VM Guest. Then copy paste the recommended commands from within the Guest VM. (This will result in a Linux to Linux copy paste.)
    • In other words, avoid the scenario of having this page open in a Windows Hypervisor Host, and copying from this webpage on Windows, into a terminal on Linux VM. (Note it'll actually work most of the time, just not 100% of the time, so the goal is to avoid unnecessary debugging.)
  • VMware Workstation Player - recommended Hypervisor:
    • It's free to download, install, and use for non-commercial use.
    • It's offers the best UX (User Experience):
      • Performance isn't as good as a bare metal install, but there's no significant lag.
      • You can bidirectionally copy and paste, both files and text between the Windows Hypervisor and the Linux Guest VM.
      • When you resize the Hypervisor application's "host window", the Linux guest VM will dynamically resize:
        • The guest VM's desktop resolution.
        • Any application windows running on the guest VM.
    • I've seen a rare stability issue specific to this hypervisor: 
      • By rare I mean about once every 2 days, KeyNote NF on wine and part of the Linux OS will freeze/lock up to a degree that the VM must be restarted to resolve it.
      • So data loss can occur in this scenario, it can be partially mitigated by changing Keynote NF's auto-save frequency from 10 min to 2 minute.
    • Important Tip: 
      • If you run a OpenSUSE VM in VMware Workstation Player, it'll prompt you to install VMware Tools (for guest VMs), you should ignore this. 
      • The intent of that is to get the ideal UX, you get that out of the box with no need to install anything extra because open-vm-tools & open-vm-tools-desktop are installed by default, so I believe the prompt is a false positive.
  • HyperV - not worth using: 
    • Its free/built into Windows and has near bare metal performance.
    • The problem with HyperV is the default user experience:
      • The guest VM will have a fixed resolution/fixed window size.
      • You won't be able to bidirectionally copy paste between the Hypervisor host and the linux guest VM.
    • These are probably fixable problems, but the amount of effort to fix them isn't worth it.
      • I was once able to change the default resolution of a linux VM, but that required lots of googling, running a hand crafted command in PowerShell, and rebooting the VM to make the change take effect. 
      • After too much effort spent trying to get it to work nicely, I still didn't end up with dynamic resolution/window resizing, and I couldn't figure out how to get bidirectional copy paste to work
  • Virtual Box - not worth using:
    • Pro: Virtual Box offers a UX similar to VMware Workstation Player, only it can only do bidirectional copy paste of text, instead of text and files.
    • The problem is it has extreme performance lag:
      • Launching KeyNote NF will be slow
      • Navigating Tree Notes will be painfully slow (on a bare metal install this would be instant.)
    • The following animated gif recording is how bad the lag looks when run on VirtualBox.
      Note: This is not normal and not a wine issue. It's a VirtualBox specific performance issue.
      I'm documenting it so others can avoid the issue / know the solution if they run into it.
KeyNote NF 1.9.4.1 Installation Tips for Maximum Wine Compatibility

Tips for avoiding edge case and identifying recommended installation commands:

  • Color Coding of Recommended Installation Commands:
    • Bold Blue Text: Indicates commands to copy paste into the terminal.
      (This, bullets, and other means are used to make this document skim friendly.)
  • General Suggestions for Avoiding Issues:
    • The commands should all be copy-pasted into the same terminal during one single session.
    • It's best to copy paste each command one at a time.
  • Edge Case Worth Being Aware Of in Advance:
    • Sometimes text encoding oddities will occur when text is copy pasted between Windows and Linux.
      • For example the text of 2 commands (the one you copy and paste) vs (the one you manually type out) will look identical to human eyes, but the byte encoding of the characters will be different.
      • Also sometimes odd extra characters can be added to the right, and problematically sometimes those extra characters will visually look like a space added to the far right of what you typed, but that space character doesn't have the same byte encoding as what your spare bar would produce.
      • This can result in odd error messages or things not working when they should work.
      • It happens semi rarely like ~1% of the time, but when it happens it's hard to debug unless you have prior knowledge of it's existence, which is why I'm mentioning it up front.
    • Important Concept: Byte/Text Encoding is often preserved when passed through an intermediary, such as a website. (Ex: this documentation website).
      • If I write/copy-paste directions from Windows onto this website, and then you copy paste from the website to a Linux terminal, there's a slim chance you can pick up some Windows specific text encoding / run into this edge case. (It's happened to me during testing.)
      • The point is: If after copy-pasting commands one at a time, you feel like you're getting odd/unexpected results/it seems like it's not working when you think it should be working. Try to press enter to create a new line and then manually type out the command without copy-pasting it, and see if that helps you get past the spot where things went wrong.

Tips for installing Wine (In General):

The following page is likely to have instructions on how to install the latest version of wine for your preferred Linux Distribution.
https://wiki.winehq.org/Download


Tips for installing Wine (on OpenSUSE TumbleWeed):

  1. These steps are a summarization of the following source's recommended method, titled "Add repository and install manually":
    https://software.opensuse.org/download/package?package=wine&project=Emulators%3AWine
  2. To Install wine (note also installs winetricks and other utilities):
    sudo zypper addrepo https://download.opensuse.org/repositories/Emulators:Wine/openSUSE_Tumbleweed/Emulators:Wine.repo
    sudo zypper refresh
    sudo zypper install wine


Tips for Updating Wine (on OpenSUSE TumbleWeed):

  • Update Wine at OS Layer
    wine --version
    sudo zypper refresh
    sudo zypper install wine
    wine --version
  • Restart wineserver (replaces older running wine server with updated one)
    wineserver --kill
  • Use cp -r to Backup, ls -lah ~ to verify backup was copied, then Update Wine Prefix
    cp -r ~/.wine-keynote ~/.wine-keynote-pre-update-backup

    ls -lah ~ | grep wine
    export WINEPREFIX=~/.wine-keynote
    wineboot --update


Recommended Way of Installing KeyNote NF into Wine:
The following commands will prep the environment in an ideal way, and then launch the installer:
(If you're curious about what these commands are doing, that's explained at the bottom.)
(The following commands should be run in a non-root terminal / as a normal user, so don't use sudo in front of them, and it's recommended to run echo $USER to verify you're not root. If echo $USER returns root, then stop and open a new terminal as a normal user.)

echo $USER
wine --version
cd ~/Downloads
wget https://github.com/dpradov/keynote-nf/releases/download/v1.9.4.1/kntSetup_1.9.4.1.exe
export WINEPREFIX=~/.wine-keynote
export WINEARCH=win32
winecfg -v win11

(^-- Unlikely to happen, but if this prompts to install wine-mono, KeyNote NF doesn't need it so click Cancel to skip.)
winetricks gdiplus msftedit riched20 msls31 corefonts arial comicsans courier georgia times tahoma

wine ~/Downloads/kntSetup_1.9.4.1.exe

The last command launches the downloaded setup file:

  • Ignore the associate KeyNote NF with .knt file extension (Trying to configuring KeyNote NF to open .knt files during installation wizard won't work, tips on how to set up file association on linux will be clarified further down).
  • Check the box to create a shortcut on the desktop. (This will create a shortcut on your Linux desktop environment, which is useful as it generates the shortcut with with KeyNote's icon.)
  • Uncheck "View README.md"
    • If you don't uncheck this, you'll see an error message pop up saying.
      Unable to execute file:
      C:\Program Files\KeyNote NF\doc\README.md
      ShellExecuteEx failed: code 193. BAD EXEC format for %1.
    • If you see the error you can safely ignore it, since it was just trying to display a
      readme text file. Unchecking the box just avoids the ignorable error message.
      (The ignorable error seems to be caused by a difference in how programs with
      arguments are launched from a terminal in Windows vs Linux.)
  • KeyNote NF should show up in your normal application launcher at this
    point, if you have trouble it can also be launched using the following method:
    export WINEPREFIX=~/.wine-keynote
    wine 'C:\Program Files\KeyNote NF\keynote.exe'
  • When you first launch KeyNote NF. On the first boot you'll see a KeyNote Tip of the Day,
    It's recommended that you unselect "show tips at startup"
    (Useful Workarounds to Know, section below explains why.)


Useful Workaround to Know #1:

  • Interface Seems Frozen - Issue Explanation:
    • If a pop-up occurs, when running on a real Windows installation,
      the pop-up window would have 2 important properties:
      • It'd pop-up
      • It'd stay on top
    • Examples of "pop-up windows":
      • KeyNote Tip of the Day
      • Configuration and Settings
      • Top Menu --> Open
      • Top Menu --> Save as
      • Top Menu --> File --> Properties
      • Top Menu --> Tools --> Configuration Options...
    • If a "pop-up window" occurs, when running on WINE, those
      important properties are no longer guaranteed.
      • The "pop-up window", sometimes becomes a "pop-under under".
      • It does not stay on top, if you click KeyNote NF's main window while the "pop-up window" is on screen, then KeyNote NF's application will show over top of the "pop-up window".
    • If the "pop-up window", is under the KeyNote NF application window, Then it can appear that KeyNote NF is frozen. (In reality it's waiting for you to interface with the "pop-up window", which you might not see, In the event it's under KeyNote)
    • Because "pop-up windows" aren't considered programs, you won't see a new app in the task area, so it's not usually possible to visually detect the presence of a "pop-up window" by looking at the taskbar area.
  • Interface Seems Frozen - Workaround Solution:
    • Minimize, resize to be smaller, or move the main KeyNote NF application window, until you see the "pop-up window" that "pop'ed-under", close it, and things will go back to normal.
    • Something to consider:
      I find configuring KDE's default of "Icons-only Task Manager" (which automatically groups similar instances of an app together), to "Task Manager" like below makes it easier to find Minimizable Windowed Apps. For example: If you have 2 copies of Firefox open as 2 different windowed applications, each would get it's own name rather than be grouped together with an icon.
      To do that you'd right click the taskbar, and click Show Alternatives, like in the image.
    • If in doubt or you can't find the "pop-under window", close KeyNote NF (the default settings should auto save any work in progress documents documents upon close), then reopen KeyNote NF. This should get things back to normal.

Useful Workaround to Know #2:

  • Black Lines on Interface - Issue Explanation:
    Parts of the menu can be covered in black lines, It looks different each time it happens, but it tends to look something like this:
    And if you mouse over parts will become revealed, but there will still be some black visual artifacts will remain that can no longer be revealed by mouse over.
  • Black Lines on Interface - Workaround Solutions:
    • If you use CrossOver, (which isn't wine, but based on wine/supports the development of wine and funds the hosting costs for appdb.winehq.org.) Switching from a 64-bit wine bottle (which are GUI representations of wine prefixes), to a 32-bit wine bottle, and going to Advanced options and turn on DXVK and ESync that should make the black lines issue stop appearing.
    • If you randomly see the black lines every rarity, then closing and reopening the program may be enough to fix it. I've noticed it's a bit random and more likely to show up in some configurations than others.
    • The most stable configuration I've found for Wine 9.x that makes me never see the black lines issue is when I use:
      • A 32-bit wine prefix
      • That has either no winetricks OR only the corefonts winetrick applied
      • KDE Desktop Environment
      • Wayland Windowing System.
    • If you deviate from the above your not guaranteed to see it, I'm just trying to document a happy path configuration that's known to work.
    • I've been able to reproduce the black lines by switching to Gnome Desktop Environment, as well as a few others. I didn't see it on Cinnamon DE.
    • I learned that trying to implement unnecessary winetricks can introduce the black bars.
    • Switching from X11 to Wayland or vice versa can also help. To do that you need to log out, then select a different session from the user login screen.
      Here's a picture for context:

      Note:
      • Plasma (Wayland) refers to the Wayland Windowing System backed version of KDE Plasma Desktop Environment.
      • Plasma (X11) refers to the X11 Windowing System backed version of KDE Plasma Desktop Environment.


Useful Workaround to Know #3:

  • Scrollbar Visual Glitch - Issue Explanation:

    If you navigate through the tree nodes the scrollbar in the text area won't visually update.

  • Scrollbar Visual Glitch - Workaround Solution:
    Click the visually glitched scrollbar and it'll trigger a redraw / immediately correct itself. (It's purely a cosmetic issue, but it's annoying because you have to do it repeatedly.)

Below are 2 .gif animations shared to help understand the scrollbar visual glitch:

  • Note: The following gifs were recorded prior to using winetricks,
    When you use winetricks:
    • Tree node text will have rich text
    • Note text will look richer/correct
    • Pre-existing image in "Welcome to KeyNote NF" will show up correctly
    • The scrollbar visual glitch will happen MUCH less often :), that said the recordings below are still handy to know how to workaround the scrollbar visual glitch when it does show up.
  • The 1st is a 43 second long loop, it demonstrates the scrollbar visual glitch and the workaround.


  • The 2nd is a 17 second long loop, it shows an interesting variation that happens when there's a mix of nodes that should and shouldn't have a scrollbar, which makes the visual glitch look a bit different.

Useful Workaround to Know #4:

  • Associate .knt with KeyNote NF - Issue Explanation:
    If you have a file, like mynotes.knt, you probably want to be able to just double click that file and have it open with KeyNote based on the .knt file association (like you can on Windows OS). (If you request to associate .knt during the KeyNote NF installation wizard, the setting will be ignored.)
  • Associate .knt with KeyNote NF - Workaround Solution:
    You can configure the desired file association where .knt files are opened with KeyNote NF, after it's installed by doing the following:
    (Note: the winehq.org's text editor doesn't like certain characters in the below, text, so I'll have to stop using rich text to explain the following section. Convention is that # = comments, and non comments represent code to copy paste.)
# Step 0: Awareness of some key background contextual information
# https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html
# Has existed for over 10 years now, so all linux desktop environments 
# follow the standardized specification.
# Many locations should exist as well-known locations based on the spec,
# referenced commands should exist for similar reason,
# theoretically these should be desktop environment agnostic.
##################################################################################
# `tee` and EOF (end of file) is meant to be a multi-line copy paste-able command
# that will allow templatized generation of a text config file at a location
# (the idea is tee is a lowest common denominator that should be available on all systems)
#
# If you run into trouble you should be able to replace the word tee with something like
# `kate` to launch a GUI based text editor, and then manually replace the variables
# with values.
#
# Also tee being able to generate templatized text config files allows, hard coded
# full/absolute paths to be based into config files, based on commonly available
# terminal environment variables. The freedesktop.org spec is janky in that it only
# supports full/absolute paths in a few scenarios. 
# The above technique will allows generic instructions that will work for most use cases.
##################################################################################
#
# Step 1: Copy Paste the following in a terminal
# It grabs a keynote.png to act as a file icon and stores it in a well-known location
wget -O $HOME/.local/share/icons/hicolor/32x32/apps/keynote.png https://i.postimg.cc/Bb6dtTng/Key-Note-NF-32x32-Transparent.png
#
#
# Step 2: Generate a config file to make .knt a recognized file extension
# the tee EOF needs to be copy pasted as a multi-line command (Avoid the comments)
# Note the file name is following a standardized naming convention 
# (x- is prepended to "experimental" / non-widespread file extensions)
# (so .knt gets an x- appended, but .doc wouldn't.)
#
export KEYNOTE_LOCATION="~/$(echo $WINEPREFIX | rev | cut -d '/' -f-1 | rev)"
echo $KEYNOTE_LOCATION
# Should Return the following (point is the ~ doesn't get expanded to home dir)
# ~/.wine-keynote
# 
tee $HOME/.local/share/mime/packages/x-wine-extension-knt.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="application/x-wine-extension-knt">
        <comment>KeyNote NF ($KEYNOTE_LOCATION)</comment>
        <glob pattern="*.knt"/>
    </mime-type>
</mime-info>
EOF
#
# Use cat to verify it looks correct
cat $HOME/.local/share/mime/packages/x-wine-extension-knt.xml
#
# Step 3: Run 2 commands to trigger a configuration refresh
update-mime-database ~/.local/share/mime
update-desktop-database ~/.local/share/applications
# At this point if you double click a file, you should get a notification
# asking what app you want to use to open it with, but the point is at
# at least now it recognizes it as a known file extension.
#
# Step 4: Generate a .desktop config file, that tells desktop environments
#         How they should handle this known file type.
export KEYNOTE_VERSION=1.9.4.1
echo $KEYNOTE_VERSION
echo $KEYNOTE_LOCATION
echo $WINEPREFIX
# ^-- verify these all have valid values
#
tee "$HOME/.local/share/applications/x-wine-extensions-knt.desktop" << EOF
[Desktop Entry]
Type=Application
Name=KeyNote NF (v$KEYNOTE_VERSION)
Comment=WINEPREFIX=$KEYNOTE_LOCATION
MimeType=application/x-wine-extension-knt;
Exec=env WINEPREFIX=$WINEPREFIX wine start /unix "$WINEPREFIX/drive_c/Program Files/KeyNote NF/keynote.exe" Z:/%f
Path=$WINEPREFIX/dosdevices/c:/Program Files/KeyNote NF
Terminal=false
Categories=Wine
NoDisplay=false
StartupNotify=true
Icon=keynote.png
StartupWMClass=keynote.exe
EOF
# ^-- explanation of above
# The exec command uses the custom wine prefix
# Tells the program to launch
# Then passed the file you double clicked as an argument to keynote
# Z: is a "network drive", (which doesn't leave your localhost), 
# Wine creates it to allow windows to interface with linux filesystem.
# %f represents the absolute path of the file you double clicked when you clicked a .knt
# extension, so it effectively passes the file path to keynote.
# 
# v-- verify it looks right / that values got substituted in
cat $HOME/.local/share/applications/x-wine-extensions-knt.desktop
#
# Step 5: Run 2 commands to trigger a configuration refresh
update-mime-database ~/.local/share/mime
update-desktop-database ~/.local/share/applications

So here's what all the above did:
At this point if you click a .knt file, it'll trigger KeyNote NF to launch, and open the file you clicked.
Also your linux equivalent of a start menu will have a new entry under Wine that shows
The keynote.png icon, KeyNote NF (v1.9.4.1), and WINEPREFIX=~/.wine-keynote
(will add screenshots in the future)

Detailed Explanation of what each command is doing and why (For those who are curious):

cd ~/Downloads 
wget 
https://github.com/dpradov/keynote-nf/releases/download/v1.x.y.z/kntSetup_1.x.y.z.exe

  • cd: change directory, sets the context of the terminal's current working directory to Downloads folder in ~, which is $HOME directory (basically changes to /home/$USER/Downloads)
  • wget: downloads the setup installer into the current folder / current working directory (downloads folder)
    (wget is web get, it's a way of downloading a file from the terminal)
  • Note: you can type pwd, which means "print working directory", to see your current contextual location in the file system.)

export WINEPREFIX=~/.wine-keynote

  • The meaning of ~/.wine-keynote
    • ~ = $HOME = /home/$USER
      So the above location corresponds to /home/$USER/.wine-keynote
    • When . is in front of a file or folder name, it's called a "dot file" or "dot folder"
      "dot files" and "dot folders" are hidden by default.
    • cd $HOME
      ls -la
      ls -la | grep -i wine
      • ^-- If you type both of these and press enter between each. 
      • cd $HOME: will change your working directory to $USER's home directory
        (/home/$USER)
      • ls -la: will show all files and folders in that directory, including hidden ones prefaced by a dot, in an easy to read format.
      • ls: stands for "list segments" (it lists files and folders in the current directory)
      • ls -a: means "list all segments" (-a = --all)
      • ls -l: -l is long list format (it's easier to read)
      • many files and folders will be in your home directory,
        | grep
        ^-- (read aloud as "pipe grep" can be used to filter the output of the previous command)
        | grep -i wine
        ^-- "| grep -i wine" means do a case-insensitive search for matches containing the text wine, and only display a filtered subset of results of the previous command.
      • cd $HOME ; ls -la | grep -i wine
        ^-- assuming you followed the convention of using the word wine in your wine prefixes, this should return a list of wine prefixes you have installed.
      • If you ever want to do the equivalent of a factory reset to wipe a wine prefix, you'd close any apps using it and then run.
        rm -rf ~/.wine-keynote
        ^-- stands for remove r: recursive (used for folders) and f: force
        Then ~/.wine-keynote represents the location of a wine-prefix.
  • Wine Prefixes are also known as "wine bottles".
    • They are basically the same thing.
    • Here's the context of why 2 names for the same thing exist. Crossover is a paid/licensed fork of wine that supports wine's ongoing development.
    • Crossover is a more GUI-driven version of wine, and they prefer the wine bottle terminology.
    • Wine is more CLI-driven, and it prefers to wine prefix terminology.
  • What's the point/purpose of a wine prefix? 
    • This creates a wine configuration environment that's isolated from other wine configuration environments. 
    • The reason this is desirable is some applications need WINEARCH=win32, WINEARCH=win64, no winetricks, or specific winetricks to work. These are often mutually exclusive, so if you wanted to install 2 applications in wine, setting up the environment dependencies to make application B work, could make application A break.
    • You can think of wine prefixes as being remotely similar to docker containers, in that they can allow application A and B to each get their own semi-isolated environment, and have different architectures/dependencies in each isolated environment.
    • This also means that you can create a 3rd isolated environment and potentially break it, without breaking applications A & B. 
    • So using one wine prefix per windows application is a best practice in terms of stability.
  • Useful Information about wine prefixes and how they're used in practice:
    • echo $WINEPREFIX
      can be used to see your current terminal's currently configured environment variable for what wine prefix to use.
      If after typing that it returns a blank line, that means the implicit default value will be used.
    • env | grep -i wine
      ^-- is an alternative to the above, it prints all environment variables, then filters the output to those that are a case insensitive match for the text wine. It can show you how multiple wine specific environment variables are configured (if they're configured away from their implicit default values.)
    • export WINEPREFIX=~/.wine
      ^--  is equivalent to the implicit default value.
    • When you run any of the following commands:
      • wine ...
      • winecfg ...
      • winetricks ...
      • ^-- they will only operate on / take action within the currently configured wine prefix.
        So if you have 2-3 wine prefixes, any operations involving any of the above 3 commands, will only work against 1 wine prefix at a time.
  • Useful Information to know about Linux Terminal Environment Variables:
    • export VARIABLE=VALUE
      ^-- This syntax represents logic that's scoped to the currently active terminal / only valid within the current terminal.
    • So if you have 2 terminals open, or you close then reopen a terminal, the environment variable will get unset, and if you'll need to re export the VARIABLE VALUE pair to use it again.
  • What this all means in the context of how we're using it and why things were done this way:
    • export WINEPREFIX=~/.wine-keynote
      wine, winecfg, and winetricks commands will run only against the location:
      /home/$USER/.wine-keynote
    • You should run all these installation commands in the same terminal in 1 session, because environment variables are scoped to a terminal instance.
    • The choice to use a custom WINEPREFIX, and not use implicit default value, results in improved stability, because it makes it harder to accidentally break your KeyNoteNF installation in the future.
    • If you ever wanted to do further customization to it,
      like say install an updated version of KeyNoteNF.
      Then you'd want to re-run
      export WINEPREFIX=~/.wine-keynote
      before running
      wine ~/Downloads/keynote-setup-updated-version.exe

export WINEARCH=win32

  • Background Contextual information that explains why this is Important to use:
    • export WINEARCH=win64 is the implicit default value
      (as in the value that's understood to be used when this environment variable is not set.
      In other words, when echo $WINEARCH shows a blank line.)
    • KeyNote NF, can theoretically work perfectly fine with WINEARCH=win64
    • The short version of why we're not setting that is to make the installation easier (more automation friendly), more reliable, and standardized.
    • The value of the WINEARCH environment variable is only used on the first run of winecfg in a wineprefix.
  • export WINEARCH=win32 has 2 important effects:
    • 1st effect: somewhat cosmetic, but has consequences in terms of standardization, automation, and documentation.
      • Clarification of Potential Misconceptions:
        • It doesn't mean you have a 32-bit computer. It works on 64-bit computers.
        • It doesn't mean it's wine intended to be used on 32-bit computers.
        • It doesn't mean it's going to create a 32-bit install of windows guest on your 64-bit computer.
          Proof: We can use WINEARCH=win32 and winecfg -v win11, together.
          Also fun fact win11 doesn't have a 32bit variant.
          Win10 was the last version of Windows with a pure 32bit variant.
      • So... What does it mean then?
        It's only purpose is to chose which standardized folder structure you want to use for the wine environment.
        If you install KeyNote NF with:
        • Implicit default values:
          WINEARCH=win64
          WINEPREFIX=~/.wine

          Then you'd end up with the following standardized folder structure
          ~/.wine/drive_c/Program Files (x86)/KeyNote NF/keynote.exe
        • How-to guided documentation suggested values:
          WINEARCH=win32
          WINEPREFIX=~/.wine-keynote

          Then you'll end up with the following standardized folder structure
          ~/.wine-keynote/drive_c/Program Files/KeyNote NF/keynote.exe
      • That standardization is important for documentation
        The documentation in this how-to guide is standardized on the assumption that WINEARCH=win32 was used to generate certain folder structure and paths. Many of the commands documented herein, work because we're following the same standard.
    • 2nd effect: access to stable winetricks
      • Another good question to ask is:
        Why would it be useful for a 64-bit computer to use a 32-bit wine prefix?
        The answer boils down to standardization is essential for automation.
        • Automation isn't possible without standardization, it's literally a prerequisite for automation to be possible, because automation depends on assumptions which are only valid in standardized environments.
        • The more standardized a setup is the easier it is to maintain the automation.
      • winetricks = automation.
        winetricks is a form of automating the configuration of a wine prefix.
      • winetricks technically works for both win32 & win64 architectures.
      • That said winetricks automation is more stable, reliable, maintained, and tested against, and compatible with the win32 architecture standardized folder structure.
      • Supposedly a subset of winetricks automation's aren't compatible with win64, rather than find out, I'd rather stay on the tried and true happy path.

winecfg -v win11

  • Different variations of the command:
    • winecfg
      Opens a Wine configuration pop up window
      you'll see several options in the GUI, but the [Applications] and [Libraries] tabs tend to be the most useful to know about. 
      • [Applications]
        This let's you change your windows version (version 9 of wine defaults to windows 10)
        (adding -v flag can configure the windows version from the cli)
      • [Libraries]
        This let's you edit DLL overrides managed by winetricks.
        (Usually winetricks configures this for you from the cli)
    • winecfg -v win10
      Passing a version of windows allows you configure wine without triggering a pop up window.
      This is equivalent to explicitly specifying the implicit default value.
    • winecfg -v win11
      Configures wine without triggering a pop up window.
      The version of windows specified has a very small effect, and because it doesn't do much they allow you to change on the fly.
      It's just the version of windows wine tells the program it's running on.
      If you run winecfg -v win7, then KeyNote NF installer will complain that it refuses to run on an older version of windows. (Only the installer, the app itself will run if you change it to this after installing.)
      There's actually no need to specify windows 11, the latest version of keynote will work with win2008r2 and higher. (winecfg /?, will list all valid versions)
  • Additional Behavior specific to the 1st run of any variation of the command:
    • The first time you run a variation of winecfg, it'll detect the WINEARCH and take about
      1 minute to generate files in the WINEPREFIX based on the WINEARCH.
      A non-interactive pop up will mention "The wine configuration is being updated please wait"
      (After the WINEPREFIX has been populated with files, you won't need to specify WINEARCH again when dealing with this prefix, WINEARCH is only used for the initial generation of a wineprefix.)
    • The population of files in the wineprefix only happens the first run, so subsequent runs of the command would be faster, (and not needed).
  • What's the point of doing it this way:
    • we need to run winecfg at least once to populate the wine prefix
    • running winecfg with flags (winecfg -v win11) allows a configuration pop up to be skipped.

winetricks gdiplus msftedit riched20 msls31 corefonts arial comicsans courier georgia times tahoma

  • The above command is also equivalent to splitting it out into multiple commands:
    winetricks corefonts arial comicsans courier georgia times tahoma
    winetricks msftedit riched20 msls31
    winetricks gdiplus
  • The above is idempotent, as in running it more than once won't hurt anything, as it'll detect it's already been run.
  • Here's a before and after visual of the difference winetricks makes
  • winetricks corefonts arial comicsans courier georgia times tahoma
    This installs fonts that will be missing by default. If you don't add these the text in the tree pane on the left will look odd
  • winetricks msftedit riched20
    winetricks msftedit riched20 msls31
    This fixes the formatting of the rich text in the text area on the right and makes it look correct
    Note I haven't seen it documented but, it seems to be the case that these are intended to be installed together as a pair/trio
    winetricks msftedit by itself will cause errors
    winetricks riched20 by itself will cause all text to visually disappear
    but if you install msftedit and riched20 together at the same time it'll work
    riched20 will implicitly install msls31, I'm just adding it to make it explicit.
  • winetricks gdiplus
    This allows images to appear (Notice the Image to the right of Welcome to KeyNote NF's blue text, in the text area on the right.)



wineserver --kill

  • This command is specific to upgrading wine
    When upgrading the running wine server can be older than the installed one.
    So this restarts it so the running wine server matches the installed version.
    Basically lets you update in a way that avoids a system reboot.

cp -r ~/.wine-keynote ~/.wine-keynote-pre-update-backup
ls -lah ~ | grep wine
export WINEPREFIX=~/.wine-keynote
wineboot --update

  • These command are specific to upgrading
    It's a best practice to backup before updating, because updating wineprefix has a chance of breaking your setup
  • The 1st command does a recursive copy of the wine prefix to a new location (basically a backup)
  • The 2nd command verifies the backup exists
  • The 3rd command effects the context on which the 4th command runs
  • The 4th command updates a wine prefix to match wine installed on system.

Comments

Back