mirror of
https://github.com/pbek/QOwnNotes.git
synced 2025-06-28 12:59:52 +00:00
lint: format with treefmt
Signed-off-by: Patrizio Bekerle <patrizio@bekerle.com>
This commit is contained in:
parent
1f43a70622
commit
7aa2fb5297
474 changed files with 13885 additions and 11603 deletions
4
.github/FUNDING.yml
vendored
4
.github/FUNDING.yml
vendored
|
@ -1,6 +1,6 @@
|
|||
# These are supported funding model platforms
|
||||
|
||||
github: ['pbek']
|
||||
github: ["pbek"]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
|
@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl
|
|||
liberapay: pbek
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: ['https://paypal.me/pbek']
|
||||
custom: ["https://paypal.me/pbek"]
|
||||
|
|
16
.github/ISSUE_TEMPLATE/bug_report.md
vendored
16
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
@ -2,9 +2,8 @@
|
|||
name: Bug report
|
||||
about: Create a report to help us improve.
|
||||
title: "[BUG] "
|
||||
labels: 'Type: Support'
|
||||
assignees: ''
|
||||
|
||||
labels: "Type: Support"
|
||||
assignees: ""
|
||||
---
|
||||
|
||||
<!--
|
||||
|
@ -19,26 +18,25 @@ https://github.com/qownnotes/scripts/issues and mention the authors of the scrip
|
|||
You will find the authors in the *Script repository*.
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#### Expected behaviour
|
||||
|
||||
A clear and concise description of what you expected to happen
|
||||
and why you think it should be that way.
|
||||
|
||||
#### Actual behaviour
|
||||
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
#### Steps to reproduce
|
||||
|
||||
Steps to reproduce the behavior:
|
||||
|
||||
1. ...
|
||||
2. ...
|
||||
3. ...
|
||||
|
||||
#### Screenshots
|
||||
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
#### Output from the debug section in the settings dialog
|
||||
|
|
8
.github/ISSUE_TEMPLATE/editor_schema.md
vendored
8
.github/ISSUE_TEMPLATE/editor_schema.md
vendored
|
@ -2,18 +2,20 @@
|
|||
name: Editor schema
|
||||
about: Share your editor schema exported from "Editor fonts & colors" settings.
|
||||
title: "[EDITOR SCHEMA] "
|
||||
labels: 'Type: Feature'
|
||||
assignees: 'pbek'
|
||||
|
||||
labels: "Type: Feature"
|
||||
assignees: "pbek"
|
||||
---
|
||||
|
||||
#### Schema name
|
||||
|
||||
<!-- Please provide the name of the schema you want to add. -->
|
||||
|
||||
#### Screenshot
|
||||
|
||||
<!-- Please provide a screenshot of the schema in action. -->
|
||||
|
||||
#### Schema file
|
||||
|
||||
<!-- Please provide the schema file. -->
|
||||
<!-- You will need to compress the schema xml as zip or gz before GitHub lets you upload it. -->
|
||||
<!-- If you don't know how to do that you can also upload it to a file sharing service and post the link here or just post the content of the file in a code block. -->
|
||||
|
|
9
.github/ISSUE_TEMPLATE/feature_request.md
vendored
9
.github/ISSUE_TEMPLATE/feature_request.md
vendored
|
@ -2,9 +2,8 @@
|
|||
name: Feature request
|
||||
about: Suggest an idea for this project.
|
||||
title: "[FEATURE] "
|
||||
labels: 'Type: Support'
|
||||
assignees: ''
|
||||
|
||||
labels: "Type: Support"
|
||||
assignees: ""
|
||||
---
|
||||
|
||||
<!--
|
||||
|
@ -20,15 +19,19 @@ You will find the authors in the *Script repository*.
|
|||
-->
|
||||
|
||||
#### Is your feature request related to a problem? Please describe.
|
||||
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
#### Describe the solution you'd like
|
||||
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
#### Describe alternatives you've considered
|
||||
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
#### Additional context
|
||||
|
||||
Add any other context or screenshots about the feature request here.
|
||||
|
||||
#### Output from the debug section in the settings dialog
|
||||
|
|
6
.github/ISSUE_TEMPLATE/support.md
vendored
6
.github/ISSUE_TEMPLATE/support.md
vendored
|
@ -2,9 +2,8 @@
|
|||
name: Question / Support
|
||||
about: What do you want to ask?
|
||||
title: "[SUPPORT] "
|
||||
labels: 'Type: Support'
|
||||
assignees: ''
|
||||
|
||||
labels: "Type: Support"
|
||||
assignees: ""
|
||||
---
|
||||
|
||||
<!--
|
||||
|
@ -19,7 +18,6 @@ https://github.com/qownnotes/scripts/issues and mention the authors of the scrip
|
|||
You will find the authors in the *Script repository*.
|
||||
-->
|
||||
|
||||
|
||||
#### Question
|
||||
|
||||
#### Output from the debug section in the settings dialog
|
||||
|
|
6
.github/dependabot.yml
vendored
6
.github/dependabot.yml
vendored
|
@ -1,6 +1,6 @@
|
|||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
|
|
@ -11,11 +11,11 @@ on:
|
|||
branches:
|
||||
- main
|
||||
tags-ignore:
|
||||
- '*'
|
||||
- "*"
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-including-paths
|
||||
paths:
|
||||
- '.github/workflows/build-deploy-release-image.yml'
|
||||
- 'build-systems/github/ubuntu22-dev/Dockerfile'
|
||||
- ".github/workflows/build-deploy-release-image.yml"
|
||||
- "build-systems/github/ubuntu22-dev/Dockerfile"
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
|
|
57
.github/workflows/build-deploy-webpage.yml
vendored
57
.github/workflows/build-deploy-webpage.yml
vendored
|
@ -1,14 +1,14 @@
|
|||
name: Build and Deploy Webpage
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
branches: [main]
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-including-paths
|
||||
# if [[ ${changed_file} == "CHANGELOG.md" ]] || [[ ${changed_file} = screenshots* ]] || [[ ${changed_file} = webpage* ]] || [[ ${changed_file} = ".github/workflows/build-deploy-webpage.yml" ]] ;
|
||||
paths:
|
||||
- 'CHANGELOG.md'
|
||||
- 'screenshots/**'
|
||||
- 'webpage/**'
|
||||
- '.github/workflows/build-deploy-webpage.yml'
|
||||
- "CHANGELOG.md"
|
||||
- "screenshots/**"
|
||||
- "webpage/**"
|
||||
- ".github/workflows/build-deploy-webpage.yml"
|
||||
workflow_dispatch:
|
||||
|
||||
defaults:
|
||||
|
@ -17,30 +17,29 @@ defaults:
|
|||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
# copy screenshots and changelog to webpage folder
|
||||
- run: cp ../screenshots src/.vuepress/public -R; cp ../CHANGELOG.md src/changelog.md
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Build and push
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: true
|
||||
#path: ./webpage
|
||||
context: ./webpage
|
||||
file: ./webpage/Dockerfile
|
||||
tags: pbeke/qownnotes-webpage:latest
|
||||
- name: Image digest
|
||||
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||
- uses: actions/checkout@v4
|
||||
# copy screenshots and changelog to webpage folder
|
||||
- run: cp ../screenshots src/.vuepress/public -R; cp ../CHANGELOG.md src/changelog.md
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Build and push
|
||||
id: docker_build
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: true
|
||||
#path: ./webpage
|
||||
context: ./webpage
|
||||
file: ./webpage/Dockerfile
|
||||
tags: pbeke/qownnotes-webpage:latest
|
||||
- name: Image digest
|
||||
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||
|
|
26
.github/workflows/build-nix.yml
vendored
26
.github/workflows/build-nix.yml
vendored
|
@ -5,20 +5,20 @@ on:
|
|||
branches-ignore:
|
||||
- release
|
||||
tags-ignore:
|
||||
- '*'
|
||||
- "*"
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'shell.nix'
|
||||
- 'default.nix'
|
||||
- 'build-systems/nix/**'
|
||||
- '.github/workflows/build-nix.yml'
|
||||
- "src/**"
|
||||
- "shell.nix"
|
||||
- "default.nix"
|
||||
- "build-systems/nix/**"
|
||||
- ".github/workflows/build-nix.yml"
|
||||
pull_request:
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'shell.nix'
|
||||
- 'default.nix'
|
||||
- 'build-systems/nix/**'
|
||||
- '.github/workflows/build-nix.yml'
|
||||
- "src/**"
|
||||
- "shell.nix"
|
||||
- "default.nix"
|
||||
- "build-systems/nix/**"
|
||||
- ".github/workflows/build-nix.yml"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
@ -28,8 +28,8 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
just-recipe: ['nix-build', 'nix-build-cmake-qt5']
|
||||
os: ['ubuntu-latest', 'macos-latest', 'macos-14']
|
||||
just-recipe: ["nix-build", "nix-build-cmake-qt5"]
|
||||
os: ["ubuntu-latest", "macos-latest", "macos-14"]
|
||||
steps:
|
||||
- name: ⚙️ Install Nix
|
||||
uses: cachix/install-nix-action@v31
|
||||
|
|
56
.github/workflows/build-release-next.yml
vendored
56
.github/workflows/build-release-next.yml
vendored
|
@ -12,7 +12,7 @@ on:
|
|||
## - 'src/**'
|
||||
## - 'tests/**'
|
||||
# - '.github/workflows/build-release-next.yml'
|
||||
# For testing also on pull requests
|
||||
# For testing also on pull requests
|
||||
# pull_request:
|
||||
# paths:
|
||||
# - 'src/**'
|
||||
|
@ -38,9 +38,9 @@ env:
|
|||
|
||||
jobs:
|
||||
create_release:
|
||||
name: '🗃️️ Prepare release'
|
||||
name: "🗃️️ Prepare release"
|
||||
permissions:
|
||||
contents: write # for actions/create-release to create a release
|
||||
contents: write # for actions/create-release to create a release
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
|
@ -65,21 +65,21 @@ jobs:
|
|||
echo "TAG=${TAG}"
|
||||
echo "RELEASE_TEXT=${RELEASE_TEXT}"
|
||||
printenv
|
||||
# - name: Create release
|
||||
# id: create_release
|
||||
# uses: actions/create-release@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# tag_name: ${{ env.TAG }}
|
||||
# release_name: Release v${{ env.VERSION }}
|
||||
# body: ${{ env.RELEASE_TEXT }}
|
||||
# draft: true
|
||||
# prerelease: false
|
||||
# - name: Create release
|
||||
# id: create_release
|
||||
# uses: actions/create-release@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# tag_name: ${{ env.TAG }}
|
||||
# release_name: Release v${{ env.VERSION }}
|
||||
# body: ${{ env.RELEASE_TEXT }}
|
||||
# draft: true
|
||||
# prerelease: false
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
# Workflow jobs (GNU/Linux, macOS & Windows)
|
||||
#--------------------------------------------------------------------------------
|
||||
#--------------------------------------------------------------------------------
|
||||
# Workflow jobs (GNU/Linux, macOS & Windows)
|
||||
#--------------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# AppImage build
|
||||
|
@ -90,40 +90,39 @@ jobs:
|
|||
env:
|
||||
QT_VERSION: 5.15.2
|
||||
BUILD_DIR: build
|
||||
name: '🐧 AppImage Qt 5.15.2'
|
||||
name: "🐧 AppImage Qt 5.15.2"
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
aqtversion: '==2.0.0'
|
||||
aqtversion: "==2.0.0"
|
||||
setup-python: false
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Install dependencies'
|
||||
- name: "⚙️ Install dependencies"
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt install desktop-file-utils libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-composite0 libxcb-cursor0 libxcb-damage0 libxcb-dpms0 libxcb-dri2-0 libxcb-dri3-0 libxcb-ewmh2 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-record0 libxcb-render0 libxcb-res0 libxcb-screensaver0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1 libxkbcommon-x11-0
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
run: |
|
||||
echo "#define RELEASE \"AppImage\"" > release.h
|
||||
${{env.QMAKE}} ${{env.QMAKE_PROJECT}} CONFIG+=release PREFIX=/usr
|
||||
lrelease QOwnNotes.pro
|
||||
make -j${{env.CORES}}
|
||||
- name: '⚙️ Install linuxdeploy'
|
||||
- name: "⚙️ Install linuxdeploy"
|
||||
run: |
|
||||
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20240109-1/linuxdeploy-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/1-alpha-20240109-1/linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
chmod +x linuxdeploy-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
- name: '📦 Create AppImage'
|
||||
- name: "📦 Create AppImage"
|
||||
run: |
|
||||
export QMAKE=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/bin/${{env.QMAKE}}
|
||||
export PATH=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/libexec:$PATH
|
||||
|
@ -143,17 +142,16 @@ jobs:
|
|||
find -iname "*.AppImage"
|
||||
pwd
|
||||
|
||||
- name: '📤 Upload artifact: AppImage'
|
||||
- name: "📤 Upload artifact: AppImage"
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{env.EXECUTABLE}}-x86_64.AppImage
|
||||
path: src/${{env.EXECUTABLE}}-x86_64.AppImage
|
||||
- name: '📤 Upload artifact: AppImage sha256sum'
|
||||
- name: "📤 Upload artifact: AppImage sha256sum"
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
|
||||
path: src/${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
|
||||
|
||||
# #
|
||||
# # Snap build
|
||||
# #
|
||||
|
|
240
.github/workflows/build-release-qt6.yml
vendored
240
.github/workflows/build-release-qt6.yml
vendored
|
@ -3,21 +3,21 @@ name: Build release of QOwnNotes Qt6
|
|||
on:
|
||||
push:
|
||||
branches:
|
||||
# - release
|
||||
# - release
|
||||
# For testing also on main branch
|
||||
- main
|
||||
tags-ignore:
|
||||
- '*'
|
||||
- "*"
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-including-paths
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'tests/**'
|
||||
- '.github/workflows/build-release-qt6.yml'
|
||||
- 'build-systems/github/snap.qt6/**'
|
||||
- "src/**"
|
||||
- "tests/**"
|
||||
- ".github/workflows/build-release-qt6.yml"
|
||||
- "build-systems/github/snap.qt6/**"
|
||||
# For testing also on pull requests
|
||||
pull_request:
|
||||
paths:
|
||||
- 'src/**'
|
||||
- "src/**"
|
||||
workflow_dispatch:
|
||||
|
||||
defaults:
|
||||
|
@ -41,9 +41,9 @@ env:
|
|||
|
||||
jobs:
|
||||
create_release:
|
||||
name: '🗃️️ Prepare release'
|
||||
name: "🗃️️ Prepare release"
|
||||
permissions:
|
||||
contents: write # for actions/create-release to create a release
|
||||
contents: write # for actions/create-release to create a release
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
|
@ -68,21 +68,21 @@ jobs:
|
|||
echo "TAG=${TAG}"
|
||||
echo "RELEASE_TEXT=${RELEASE_TEXT}"
|
||||
printenv
|
||||
# - name: Create release
|
||||
# id: create_release
|
||||
# uses: actions/create-release@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# tag_name: ${{ env.TAG }}
|
||||
# release_name: Release v${{ env.VERSION }}
|
||||
# body: ${{ env.RELEASE_TEXT }}
|
||||
# draft: true
|
||||
# prerelease: false
|
||||
# - name: Create release
|
||||
# id: create_release
|
||||
# uses: actions/create-release@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# tag_name: ${{ env.TAG }}
|
||||
# release_name: Release v${{ env.VERSION }}
|
||||
# body: ${{ env.RELEASE_TEXT }}
|
||||
# draft: true
|
||||
# prerelease: false
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
# Workflow jobs (GNU/Linux, macOS & Windows)
|
||||
#--------------------------------------------------------------------------------
|
||||
#--------------------------------------------------------------------------------
|
||||
# Workflow jobs (GNU/Linux, macOS & Windows)
|
||||
#--------------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# AppImage build
|
||||
|
@ -93,40 +93,39 @@ jobs:
|
|||
env:
|
||||
QT_VERSION: 6.5.0
|
||||
BUILD_DIR: build
|
||||
name: '🐧 AppImage Ubuntu 20.04'
|
||||
name: "🐧 AppImage Ubuntu 20.04"
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
aqtversion: '==2.0.0'
|
||||
aqtversion: "==2.0.0"
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Install dependencies'
|
||||
- name: "⚙️ Install dependencies"
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# sudo apt-get install libgl1-mesa-dev libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libzstd-dev
|
||||
sudo apt install desktop-file-utils libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-composite0 libxcb-cursor0 libxcb-damage0 libxcb-dpms0 libxcb-dri2-0 libxcb-dri3-0 libxcb-ewmh2 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-record0 libxcb-render0 libxcb-res0 libxcb-screensaver0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1 libxkbcommon-x11-0
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
run: |
|
||||
echo "#define RELEASE \"AppImage\"" > release.h
|
||||
${{env.QMAKE}} ${{env.QMAKE_PROJECT}} CONFIG+=release PREFIX=/usr
|
||||
lrelease QOwnNotes.pro
|
||||
make -j${{env.CORES}}
|
||||
- name: '⚙️ Install linuxdeploy'
|
||||
- name: "⚙️ Install linuxdeploy"
|
||||
run: |
|
||||
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
chmod +x linuxdeploy-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
- name: '📦 Create AppImage'
|
||||
- name: "📦 Create AppImage"
|
||||
run: |
|
||||
export QMAKE=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/bin/${{env.QMAKE}}
|
||||
export PATH=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/libexec:$PATH
|
||||
|
@ -148,34 +147,34 @@ jobs:
|
|||
find -iname "*.AppImage"
|
||||
pwd
|
||||
|
||||
- name: '📤 Upload artifact: AppImage'
|
||||
- name: "📤 Upload artifact: AppImage"
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{env.EXECUTABLE}}-x86_64.AppImage
|
||||
path: src/${{env.EXECUTABLE}}-x86_64.AppImage
|
||||
- name: '📤 Upload artifact: AppImage sha256sum'
|
||||
- name: "📤 Upload artifact: AppImage sha256sum"
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
|
||||
path: src/${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
|
||||
# - name: '📤 Release AppImage for Linux'
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: ./src/QOwnNotes-x86_64.AppImage
|
||||
# asset_name: QOwnNotes-x86_64.AppImage
|
||||
# asset_content_type: application/vnd.appimage
|
||||
# - name: '📤 Release AppImage sha256sum'
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: ./src/QOwnNotes-x86_64.AppImage.sha256sum
|
||||
# asset_name: QOwnNotes-x86_64.AppImage.sha256sum
|
||||
# asset_content_type: text/plain
|
||||
# - name: '📤 Release AppImage for Linux'
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: ./src/QOwnNotes-x86_64.AppImage
|
||||
# asset_name: QOwnNotes-x86_64.AppImage
|
||||
# asset_content_type: application/vnd.appimage
|
||||
# - name: '📤 Release AppImage sha256sum'
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: ./src/QOwnNotes-x86_64.AppImage.sha256sum
|
||||
# asset_name: QOwnNotes-x86_64.AppImage.sha256sum
|
||||
# asset_content_type: text/plain
|
||||
|
||||
#
|
||||
# Snap build
|
||||
|
@ -186,66 +185,65 @@ jobs:
|
|||
env:
|
||||
QT_VERSION: 6.5.0
|
||||
continue-on-error: true
|
||||
name: '🐧 Snap Ubuntu 18.04'
|
||||
name: "🐧 Snap Ubuntu 18.04"
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: '⚙️ Set Env'
|
||||
- name: "⚙️ Set Env"
|
||||
shell: bash
|
||||
run: |
|
||||
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
|
||||
echo "VERSION=${VERSION}" >> $GITHUB_ENV
|
||||
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
aqtversion: '==2.0.0'
|
||||
aqtversion: "==2.0.0"
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Printenv'
|
||||
- name: "⚙️ Printenv"
|
||||
shell: bash
|
||||
run: |
|
||||
echo "VERSION=${VERSION}"
|
||||
printenv
|
||||
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
# https://github.com/snapcore/action-build
|
||||
uses: snapcore/action-build@v1
|
||||
id: snapcraft
|
||||
with:
|
||||
path: build-systems/github/snap.qt6
|
||||
|
||||
# - name: Release Snap for Linux
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: ./qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
# asset_name: QOwnNotes-amd64.snap
|
||||
# asset_content_type: application/octet-stream
|
||||
# - name: Release Snap for Linux
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: ./qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
# asset_name: QOwnNotes-amd64.snap
|
||||
# asset_content_type: application/octet-stream
|
||||
|
||||
# - shell: bash
|
||||
# run: |
|
||||
# snapcraft --version
|
||||
# cd .. && pwd
|
||||
# - name: Deploy Snap
|
||||
# uses: snapcore/action-publish@v1
|
||||
# continue-on-error: true
|
||||
# env:
|
||||
# # `snapcraft export-login --snaps=qownnotes --acls package_access,package_push,package_update,package_release -`, token valid for one year
|
||||
# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN_GH }}
|
||||
# with:
|
||||
# snap: /home/runner/work/QOwnNotes/QOwnNotes/qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
# release: stable
|
||||
# - shell: bash
|
||||
# run: |
|
||||
# snapcraft --version
|
||||
# cd .. && pwd
|
||||
# - name: Deploy Snap
|
||||
# uses: snapcore/action-publish@v1
|
||||
# continue-on-error: true
|
||||
# env:
|
||||
# # `snapcraft export-login --snaps=qownnotes --acls package_access,package_push,package_update,package_release -`, token valid for one year
|
||||
# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN_GH }}
|
||||
# with:
|
||||
# snap: /home/runner/work/QOwnNotes/QOwnNotes/qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
# release: stable
|
||||
|
||||
- name: '📤 Upload artifact: Snap'
|
||||
- name: "📤 Upload artifact: Snap"
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
|
@ -255,7 +253,7 @@ jobs:
|
|||
# Windows build
|
||||
#
|
||||
build-windows:
|
||||
name: '🧊 Windows Server 2019'
|
||||
name: "🧊 Windows Server 2019"
|
||||
needs: create_release
|
||||
# https://github.com/pbek/QOwnNotes/issues/2558 error on windows-2022!
|
||||
runs-on: windows-2019
|
||||
|
@ -264,16 +262,15 @@ jobs:
|
|||
QT_VERSION: 6.6.1
|
||||
continue-on-error: true
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: '==2.0.0'
|
||||
aqtversion: "==2.0.0"
|
||||
version: ${{env.QT_VERSION}}
|
||||
# https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt6_650/qt.qt6.650.win64_mingw/
|
||||
# https://aqtinstall.readthedocs.io/en/latest/getting_started.html
|
||||
|
@ -281,7 +278,7 @@ jobs:
|
|||
modules: ${{env.QT_MODULES}}
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Set Env'
|
||||
- name: "⚙️ Set Env"
|
||||
shell: bash
|
||||
run: |
|
||||
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
|
||||
|
@ -290,56 +287,55 @@ jobs:
|
|||
- name: Make sure MSVC is found
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: '⚙️ Printenv'
|
||||
- name: "⚙️ Printenv"
|
||||
shell: bash
|
||||
run: |
|
||||
echo "VERSION=${VERSION}"
|
||||
printenv
|
||||
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
run: '& ..\build-systems\github\windows\build-zip-qt6.ps1'
|
||||
|
||||
- name: '📤 Upload artifact: Windows'
|
||||
- name: "📤 Upload artifact: Windows"
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: QOwnNotes.zip
|
||||
path: QOwnNotes.zip
|
||||
- name: '📤 Upload artifact: Windows sha256sum'
|
||||
- name: "📤 Upload artifact: Windows sha256sum"
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: QOwnNotes.zip.sha256
|
||||
path: QOwnNotes.zip.sha256
|
||||
- name: '📤 Upload artifact: Windows clickable sha256sum'
|
||||
- name: "📤 Upload artifact: Windows clickable sha256sum"
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: QOwnNotes.zip.sha256sum
|
||||
path: QOwnNotes.zip.sha256sum
|
||||
|
||||
# - name: '📤 Release ZIP'
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: QOwnNotes.zip
|
||||
# asset_name: QOwnNotes.zip
|
||||
# asset_content_type: application/zip
|
||||
# - name: '📤 Release sha256 sum'
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: QOwnNotes.zip.sha256
|
||||
# asset_name: QOwnNotes.zip.sha256
|
||||
# asset_content_type: text/plain
|
||||
|
||||
# - name: '📤 Release ZIP'
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: QOwnNotes.zip
|
||||
# asset_name: QOwnNotes.zip
|
||||
# asset_content_type: application/zip
|
||||
# - name: '📤 Release sha256 sum'
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# with:
|
||||
# upload_url: ${{ needs.create_release.outputs.upload_url }}
|
||||
# asset_path: QOwnNotes.zip.sha256
|
||||
# asset_name: QOwnNotes.zip.sha256
|
||||
# asset_content_type: text/plain
|
||||
|
||||
#
|
||||
# macOS build
|
||||
#
|
||||
build-macos:
|
||||
name: '🍎 macOS Monterey'
|
||||
name: "🍎 macOS Monterey"
|
||||
needs: create_release
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
|
@ -347,34 +343,33 @@ jobs:
|
|||
QT_VERSION: 6.4.2
|
||||
continue-on-error: true
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
# https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
aqtversion: '==2.0.0'
|
||||
aqtversion: "==2.0.0"
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Set Env'
|
||||
- name: "⚙️ Set Env"
|
||||
shell: bash
|
||||
run: |
|
||||
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
|
||||
echo "VERSION=${VERSION}" >> $GITHUB_ENV
|
||||
|
||||
- name: '⚙️ Printenv'
|
||||
- name: "⚙️ Printenv"
|
||||
shell: bash
|
||||
run: |
|
||||
echo "VERSION=${VERSION}"
|
||||
printenv
|
||||
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
run: |
|
||||
echo "#define RELEASE \"GitHub Actions\"" > release.h
|
||||
lrelease QOwnNotes.pro
|
||||
|
@ -383,12 +378,11 @@ jobs:
|
|||
make -j ${{env.CORES}}
|
||||
../build-systems/github/macos/create-dmg-qt6.sh
|
||||
|
||||
- name: '📤 Upload artifact: macOS'
|
||||
- name: "📤 Upload artifact: macOS"
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: QOwnNotes.dmg
|
||||
path: src/QOwnNotes.dmg
|
||||
|
||||
# - name: '📤 Release DMG'
|
||||
# uses: actions/upload-release-asset@v1
|
||||
# env:
|
||||
|
|
172
.github/workflows/build-release.yml
vendored
172
.github/workflows/build-release.yml
vendored
|
@ -6,7 +6,7 @@ on:
|
|||
branches:
|
||||
- release
|
||||
tags-ignore:
|
||||
- '*'
|
||||
- "*"
|
||||
|
||||
defaults:
|
||||
run:
|
||||
|
@ -30,9 +30,9 @@ env:
|
|||
|
||||
jobs:
|
||||
create_release:
|
||||
name: '🗃️️ Prepare release'
|
||||
name: "🗃️️ Prepare release"
|
||||
permissions:
|
||||
contents: write # for actions/create-release to create a release
|
||||
contents: write # for actions/create-release to create a release
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
|
@ -70,9 +70,9 @@ jobs:
|
|||
draft: false
|
||||
prerelease: false
|
||||
|
||||
#--------------------------------------------------------------------------------
|
||||
# Workflow jobs (GNU/Linux, macOS & Windows)
|
||||
#--------------------------------------------------------------------------------
|
||||
#--------------------------------------------------------------------------------
|
||||
# Workflow jobs (GNU/Linux, macOS & Windows)
|
||||
#--------------------------------------------------------------------------------
|
||||
|
||||
#
|
||||
# AppImage build
|
||||
|
@ -83,40 +83,39 @@ jobs:
|
|||
env:
|
||||
QT_VERSION: 5.15.2
|
||||
BUILD_DIR: build
|
||||
name: '🐧 AppImage Qt 5.15.2'
|
||||
name: "🐧 AppImage Qt 5.15.2"
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
aqtversion: '==2.0.0'
|
||||
aqtversion: "==2.0.0"
|
||||
setup-python: false
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Install dependencies'
|
||||
- name: "⚙️ Install dependencies"
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt install desktop-file-utils libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-composite0 libxcb-cursor0 libxcb-damage0 libxcb-dpms0 libxcb-dri2-0 libxcb-dri3-0 libxcb-ewmh2 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-record0 libxcb-render0 libxcb-res0 libxcb-screensaver0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1 libxkbcommon-x11-0
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
run: |
|
||||
echo "#define RELEASE \"AppImage\"" > release.h
|
||||
${{env.QMAKE}} ${{env.QMAKE_PROJECT}} CONFIG+=release PREFIX=/usr
|
||||
lrelease QOwnNotes.pro
|
||||
make -j${{env.CORES}}
|
||||
- name: '⚙️ Install linuxdeploy'
|
||||
- name: "⚙️ Install linuxdeploy"
|
||||
run: |
|
||||
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
chmod +x linuxdeploy-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
- name: '📦 Create AppImage'
|
||||
- name: "📦 Create AppImage"
|
||||
run: |
|
||||
export QMAKE=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/bin/${{env.QMAKE}}
|
||||
export PATH=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/libexec:$PATH
|
||||
|
@ -136,17 +135,17 @@ jobs:
|
|||
find -iname "*.AppImage"
|
||||
pwd
|
||||
|
||||
# - name: '📤 Upload artifact: AppImage'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: ${{env.EXECUTABLE}}-x86_64.AppImage
|
||||
# path: src/${{env.EXECUTABLE}}-x86_64.AppImage
|
||||
# - name: '📤 Upload artifact: AppImage sha256sum'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: ${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
|
||||
# path: src/${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
|
||||
- name: '📤 Release AppImage for Linux'
|
||||
# - name: '📤 Upload artifact: AppImage'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: ${{env.EXECUTABLE}}-x86_64.AppImage
|
||||
# path: src/${{env.EXECUTABLE}}-x86_64.AppImage
|
||||
# - name: '📤 Upload artifact: AppImage sha256sum'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: ${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
|
||||
# path: src/${{env.EXECUTABLE}}-x86_64.AppImage.sha256sum
|
||||
- name: "📤 Release AppImage for Linux"
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -155,7 +154,7 @@ jobs:
|
|||
asset_path: ./src/QOwnNotes-x86_64.AppImage
|
||||
asset_name: QOwnNotes-x86_64.AppImage
|
||||
asset_content_type: application/vnd.appimage
|
||||
- name: '📤 Release AppImage sha256sum'
|
||||
- name: "📤 Release AppImage sha256sum"
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -174,40 +173,39 @@ jobs:
|
|||
env:
|
||||
QT_VERSION: 6.5.3
|
||||
BUILD_DIR: build
|
||||
name: '🐧 AppImage Qt 6.5.3'
|
||||
name: "🐧 AppImage Qt 6.5.3"
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
modules: ${{env.QT6_MODULES}}
|
||||
aqtversion: '==2.0.0'
|
||||
aqtversion: "==2.0.0"
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Install dependencies'
|
||||
- name: "⚙️ Install dependencies"
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# sudo apt-get install libgl1-mesa-dev libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libzstd-dev
|
||||
sudo apt install desktop-file-utils libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-composite0 libxcb-cursor0 libxcb-damage0 libxcb-dpms0 libxcb-dri2-0 libxcb-dri3-0 libxcb-ewmh2 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-record0 libxcb-render0 libxcb-res0 libxcb-screensaver0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1 libxkbcommon-x11-0
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
run: |
|
||||
echo "#define RELEASE \"AppImage\"" > release.h
|
||||
${{env.QMAKE}} ${{env.QMAKE_PROJECT}} CONFIG+=release PREFIX=/usr
|
||||
lrelease QOwnNotes.pro
|
||||
make -j${{env.CORES}}
|
||||
- name: '⚙️ Install linuxdeploy'
|
||||
- name: "⚙️ Install linuxdeploy"
|
||||
run: |
|
||||
wget https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20240109-1/linuxdeploy-x86_64.AppImage
|
||||
wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/1-alpha-20240109-1/linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
chmod +x linuxdeploy-x86_64.AppImage
|
||||
chmod +x linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
- name: '📦 Create AppImage'
|
||||
- name: "📦 Create AppImage"
|
||||
run: |
|
||||
export QMAKE=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/bin/${{env.QMAKE}}
|
||||
export PATH=${{env.REPO_DIR}}/Qt/${{env.QT_VERSION}}/gcc_64/libexec:$PATH
|
||||
|
@ -229,7 +227,7 @@ jobs:
|
|||
find -iname "*.AppImage"
|
||||
pwd
|
||||
|
||||
- name: '📤 Release AppImage Qt6 for Linux'
|
||||
- name: "📤 Release AppImage Qt6 for Linux"
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -238,7 +236,7 @@ jobs:
|
|||
asset_path: ./src/QOwnNotes-x86_64.AppImage
|
||||
asset_name: QOwnNotes-x86_64-Qt6.AppImage
|
||||
asset_content_type: application/vnd.appimage
|
||||
- name: '📤 Release AppImage Qt6 sha256sum'
|
||||
- name: "📤 Release AppImage Qt6 sha256sum"
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -256,38 +254,37 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
env:
|
||||
QT_VERSION: 5.15.2
|
||||
name: '🐧 Snap Qt 5.15.2'
|
||||
name: "🐧 Snap Qt 5.15.2"
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: '⚙️ Set Env'
|
||||
- name: "⚙️ Set Env"
|
||||
shell: bash
|
||||
run: |
|
||||
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
|
||||
echo "VERSION=${VERSION}" >> $GITHUB_ENV
|
||||
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Printenv'
|
||||
- name: "⚙️ Printenv"
|
||||
shell: bash
|
||||
run: |
|
||||
echo "VERSION=${VERSION}"
|
||||
printenv
|
||||
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
uses: snapcore/action-build@v1
|
||||
id: snapcraft
|
||||
|
||||
- name: '📤 Release Snap for Linux'
|
||||
- name: "📤 Release Snap for Linux"
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -297,7 +294,7 @@ jobs:
|
|||
asset_name: QOwnNotes-amd64.snap
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
- name: '📤 Deploy Snap'
|
||||
- name: "📤 Deploy Snap"
|
||||
uses: snapcore/action-publish@v1
|
||||
continue-on-error: true
|
||||
env:
|
||||
|
@ -307,17 +304,17 @@ jobs:
|
|||
snap: /home/runner/work/QOwnNotes/QOwnNotes/qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
release: stable
|
||||
|
||||
# - name: '📤 Upload artifact: Snap'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
# path: /home/runner/work/QOwnNotes/QOwnNotes/qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
# - name: '📤 Upload artifact: Snap'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
# path: /home/runner/work/QOwnNotes/QOwnNotes/qownnotes_${{ env.VERSION }}_amd64.snap
|
||||
|
||||
#
|
||||
# Windows build
|
||||
#
|
||||
build-windows:
|
||||
name: '🧊 Windows Qt 5.15.2'
|
||||
name: "🧊 Windows Qt 5.15.2"
|
||||
needs: create_release
|
||||
# https://github.com/pbek/QOwnNotes/issues/2558 error on windows-2022!
|
||||
runs-on: windows-2019
|
||||
|
@ -325,16 +322,15 @@ jobs:
|
|||
QT_VERSION: 5.15.2
|
||||
continue-on-error: true
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: '==2.0.0'
|
||||
aqtversion: "==2.0.0"
|
||||
version: ${{env.QT_VERSION}}
|
||||
# https://aqtinstall.readthedocs.io/en/latest/getting_started.html
|
||||
# https://ddalcino.github.io/aqt-list-server/
|
||||
|
@ -342,33 +338,33 @@ jobs:
|
|||
modules: ${{env.QT_MODULES}}
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Set Env'
|
||||
- name: "⚙️ Set Env"
|
||||
shell: bash
|
||||
run: |
|
||||
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
|
||||
echo "VERSION=${VERSION}" >> $GITHUB_ENV
|
||||
|
||||
- name: '⚙️ Printenv'
|
||||
- name: "⚙️ Printenv"
|
||||
shell: bash
|
||||
run: |
|
||||
echo "VERSION=${VERSION}"
|
||||
printenv
|
||||
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
run: '& ..\build-systems\github\windows\build-zip.ps1'
|
||||
|
||||
# - name: '📤 Upload artifact: Windows'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: QOwnNotes.zip
|
||||
# path: QOwnNotes.zip
|
||||
# - name: '📤 Upload artifact: Windows sha256sum'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: QOwnNotes.zip.sha256
|
||||
# path: QOwnNotes.zip.sha256
|
||||
# - name: '📤 Upload artifact: Windows'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: QOwnNotes.zip
|
||||
# path: QOwnNotes.zip
|
||||
# - name: '📤 Upload artifact: Windows sha256sum'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: QOwnNotes.zip.sha256
|
||||
# path: QOwnNotes.zip.sha256
|
||||
|
||||
- name: '📤 Release ZIP'
|
||||
- name: "📤 Release ZIP"
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -377,7 +373,7 @@ jobs:
|
|||
asset_path: QOwnNotes.zip
|
||||
asset_name: QOwnNotes.zip
|
||||
asset_content_type: application/zip
|
||||
- name: '📤 Release sha256 sum'
|
||||
- name: "📤 Release sha256 sum"
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -386,7 +382,7 @@ jobs:
|
|||
asset_path: QOwnNotes.zip.sha256
|
||||
asset_name: QOwnNotes.zip.sha256
|
||||
asset_content_type: text/plain
|
||||
- name: '📤 Release clickable sha256 sum'
|
||||
- name: "📤 Release clickable sha256 sum"
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -396,40 +392,37 @@ jobs:
|
|||
asset_name: QOwnNotes.zip.sha256sum
|
||||
asset_content_type: text/plain
|
||||
|
||||
|
||||
|
||||
#
|
||||
# macOS build
|
||||
#
|
||||
build-macos:
|
||||
name: '🍎 macOS Qt 5.15.2'
|
||||
name: "🍎 macOS Qt 5.15.2"
|
||||
needs: create_release
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
QT_VERSION: 5.15.2
|
||||
steps:
|
||||
|
||||
- name: '🧰 Checkout'
|
||||
- name: "🧰 Checkout"
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
# https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/
|
||||
- name: '⚙️ Install Qt'
|
||||
- name: "⚙️ Install Qt"
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
aqtversion: '==2.0.0'
|
||||
aqtversion: "==2.0.0"
|
||||
cache: true
|
||||
|
||||
- name: '⚙️ Set Env'
|
||||
- name: "⚙️ Set Env"
|
||||
shell: bash
|
||||
run: |
|
||||
export VERSION=$(cat version.h | sed 's/[^0-9,.]//g')
|
||||
echo "VERSION=${VERSION}" >> $GITHUB_ENV
|
||||
|
||||
- name: '⚙️ Printenv'
|
||||
- name: "⚙️ Printenv"
|
||||
shell: bash
|
||||
run: |
|
||||
echo "VERSION=${VERSION}"
|
||||
|
@ -437,7 +430,7 @@ jobs:
|
|||
|
||||
# qmake workaround: https://bugreports.qt.io/browse/QTBUG-117225?focusedId=754625&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-754625
|
||||
# See https://github.com/pbek/QOwnNotes/issues/3018
|
||||
- name: '🚧 Compile application'
|
||||
- name: "🚧 Compile application"
|
||||
run: |
|
||||
echo "#define RELEASE \"GitHub Actions\"" > release.h
|
||||
lrelease QOwnNotes.pro
|
||||
|
@ -446,13 +439,13 @@ jobs:
|
|||
make -j ${{env.CORES}}
|
||||
../build-systems/github/macos/create-dmg.sh
|
||||
|
||||
# - name: '📤 Upload artifact: macOS'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: QOwnNotes.dmg
|
||||
# path: src/QOwnNotes.dmg
|
||||
# - name: '📤 Upload artifact: macOS'
|
||||
# uses: actions/upload-artifact@v3
|
||||
# with:
|
||||
# name: QOwnNotes.dmg
|
||||
# path: src/QOwnNotes.dmg
|
||||
|
||||
- name: '📤 Release DMG'
|
||||
- name: "📤 Release DMG"
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -461,7 +454,6 @@ jobs:
|
|||
asset_path: src/QOwnNotes.dmg
|
||||
asset_name: QOwnNotes.dmg
|
||||
asset_content_type: application/x-apple-diskimage
|
||||
|
||||
# publish_release:
|
||||
# name: 📣 Publish release
|
||||
# runs-on: ubuntu-latest
|
||||
|
|
386
.github/workflows/build-test.yml
vendored
386
.github/workflows/build-test.yml
vendored
|
@ -5,20 +5,20 @@ on:
|
|||
branches-ignore:
|
||||
- release
|
||||
tags-ignore:
|
||||
- '*'
|
||||
- "*"
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-including-paths
|
||||
# if [[ ${changed_file} = src* ]] || [[ ${changed_file} = tests* ]] || [[ ${changed_file} = build-systems/github/* ]] || [[ ${changed_file} = ".github/workflows/build-test.yml" ]] ;
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'snap/**'
|
||||
- 'tests/**'
|
||||
- 'build-systems/github/**'
|
||||
- '.github/workflows/build-test.yml'
|
||||
- "src/**"
|
||||
- "snap/**"
|
||||
- "tests/**"
|
||||
- "build-systems/github/**"
|
||||
- ".github/workflows/build-test.yml"
|
||||
pull_request:
|
||||
paths:
|
||||
- 'src/**'
|
||||
- 'snap/**'
|
||||
- 'tests/**'
|
||||
- "src/**"
|
||||
- "snap/**"
|
||||
- "tests/**"
|
||||
workflow_dispatch:
|
||||
# schedule:
|
||||
# - cron: "0 0 */3 * *"
|
||||
|
@ -41,235 +41,245 @@ jobs:
|
|||
# Linux: https://download.qt.io/online/qtsdkrepository/linux_x64/desktop/
|
||||
# macOS: https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/
|
||||
# Windows: https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/
|
||||
qt-version: ['5.9.9', '5.13.2', '5.14.2', '5.15.2', '6.2.4', '6.4.3', '6.5.3', '6.6.3']
|
||||
qt-version:
|
||||
[
|
||||
"5.9.9",
|
||||
"5.13.2",
|
||||
"5.14.2",
|
||||
"5.15.2",
|
||||
"6.2.4",
|
||||
"6.4.3",
|
||||
"6.5.3",
|
||||
"6.6.3",
|
||||
]
|
||||
experimental: [false]
|
||||
exclude:
|
||||
# Failing SSL Tests
|
||||
- os: ubuntu-latest
|
||||
qt-version: '5.9.9'
|
||||
qt-version: "5.9.9"
|
||||
# tests.exe not found
|
||||
- os: windows-2019
|
||||
qt-version: '5.9.9'
|
||||
qt-version: "5.9.9"
|
||||
# we want to do it Qt 6.2.0
|
||||
- os: windows-2019
|
||||
qt-version: '6.2.4'
|
||||
qt-version: "6.2.4"
|
||||
experimental: false
|
||||
# we want to do it with "experimental: true"
|
||||
- os: windows-2019
|
||||
qt-version: '6.4.3'
|
||||
qt-version: "6.4.3"
|
||||
experimental: false
|
||||
# we want to do it with "experimental: true"
|
||||
- os: windows-2019
|
||||
qt-version: '6.5.3'
|
||||
qt-version: "6.5.3"
|
||||
experimental: false
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.6.3'
|
||||
# experimental: false
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.6.3'
|
||||
# experimental: false
|
||||
# Qt6 builds of macOS are currently breaking because of the workaround for https://bugreports.qt.io/browse/QTBUG-117225
|
||||
# See https://github.com/pbek/QOwnNotes/issues/3018
|
||||
- os: macos-latest
|
||||
qt-version: '6.2.4'
|
||||
qt-version: "6.2.4"
|
||||
experimental: false
|
||||
- os: macos-latest
|
||||
qt-version: '6.4.3'
|
||||
qt-version: "6.4.3"
|
||||
experimental: false
|
||||
- os: macos-latest
|
||||
qt-version: '6.5.3'
|
||||
qt-version: "6.5.3"
|
||||
experimental: false
|
||||
- os: macos-latest
|
||||
qt-version: '6.6.3'
|
||||
qt-version: "6.6.3"
|
||||
experimental: false
|
||||
# Qt installation times out too often
|
||||
# - os: windows-2019
|
||||
# qt-version: '5.13.2'
|
||||
# win64_mingw73 not found
|
||||
# - os: windows-2019
|
||||
# qt-version: '5.15.0'
|
||||
# # qt.conf not found (https://github.com/jurplel/install-qt-action/issues/54)
|
||||
# - os: windows-2019
|
||||
# qt-version: '5.15.1'
|
||||
# botan 32bit error
|
||||
# - os: windows-2019
|
||||
# qt-version: '5.13.2'
|
||||
# win64_mingw73 not found
|
||||
# - os: windows-2019
|
||||
# qt-version: '5.15.0'
|
||||
# # qt.conf not found (https://github.com/jurplel/install-qt-action/issues/54)
|
||||
# - os: windows-2019
|
||||
# qt-version: '5.15.1'
|
||||
# botan 32bit error
|
||||
include:
|
||||
# - os: ubuntu-latest
|
||||
# qt-version: '6.3.0'
|
||||
# experimental: true
|
||||
# - os: macos-latest
|
||||
# qt-version: '6.3.0'
|
||||
# experimental: true
|
||||
# - os: ubuntu-latest
|
||||
# qt-version: '6.3.0'
|
||||
# experimental: true
|
||||
# - os: macos-latest
|
||||
# qt-version: '6.3.0'
|
||||
# experimental: true
|
||||
# Other 6.2 releases didn't work
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.2.4'
|
||||
# experimental: true
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.4.3'
|
||||
# experimental: true
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.5.3'
|
||||
# experimental: true
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.6.3'
|
||||
# experimental: true
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.2.4'
|
||||
# experimental: true
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.4.3'
|
||||
# experimental: true
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.5.3'
|
||||
# experimental: true
|
||||
# - os: windows-2019
|
||||
# qt-version: '6.6.3'
|
||||
# experimental: true
|
||||
# Qt6 builds of macOS are currently breaking because of the workaround for https://bugreports.qt.io/browse/QTBUG-117225
|
||||
# See https://github.com/pbek/QOwnNotes/issues/3018
|
||||
- os: macos-latest
|
||||
qt-version: '6.2.4'
|
||||
qt-version: "6.2.4"
|
||||
experimental: true
|
||||
- os: macos-latest
|
||||
qt-version: '6.4.3'
|
||||
qt-version: "6.4.3"
|
||||
experimental: true
|
||||
- os: macos-latest
|
||||
qt-version: '6.5.3'
|
||||
qt-version: "6.5.3"
|
||||
experimental: true
|
||||
- os: macos-latest
|
||||
qt-version: '6.6.3'
|
||||
qt-version: "6.6.3"
|
||||
experimental: true
|
||||
# Snapcraft
|
||||
- os: ubuntu-22.04
|
||||
qt-version: '5.15.2'
|
||||
qt-version: "5.15.2"
|
||||
experimental: false
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
#
|
||||
# Install Qt
|
||||
#
|
||||
#
|
||||
# Install Qt
|
||||
#
|
||||
|
||||
# https://github.com/jurplel/install-qt-action
|
||||
- if: contains( matrix.os, 'windows') && ( matrix.qt-version == '5.9.9' )
|
||||
name: Install Qt 5.9 on Windows
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{ matrix.qt-version }}
|
||||
arch: win32_mingw53
|
||||
cache: true
|
||||
aqtversion: '==0.9.4'
|
||||
- if: contains( matrix.os, 'windows') && ( ( matrix.qt-version == '5.13.2' ) || ( matrix.qt-version == '5.14.2' ) )
|
||||
name: Install Qt on Windows
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{ matrix.qt-version }}
|
||||
arch: win64_mingw73
|
||||
cache: true
|
||||
- if: contains( matrix.os, 'windows') && matrix.qt-version == '5.15.2'
|
||||
name: Install Qt 5.15.2 on Windows
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: '==2.0.0'
|
||||
version: ${{ matrix.qt-version }}
|
||||
arch: win64_mingw81
|
||||
cache: true
|
||||
- if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
name: Install Qt 6 on Windows
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: '==2.0.*'
|
||||
version: ${{ matrix.qt-version }}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
cache: true
|
||||
- if: false == contains( matrix.os, 'windows') && false == startsWith( matrix.qt-version, '6.' )
|
||||
name: Install Qt < 6 on Linux/macOS
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: '==2.0.0'
|
||||
version: ${{ matrix.qt-version }}
|
||||
cache: true
|
||||
- if: false == contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
name: Install Qt 6 on Linux/macOS
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: '==2.0.0'
|
||||
version: ${{ matrix.qt-version }}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
cache: true
|
||||
- if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
name: Make sure MSVC is found on Windows for Qt 6
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
# https://github.com/jurplel/install-qt-action
|
||||
- if: contains( matrix.os, 'windows') && ( matrix.qt-version == '5.9.9' )
|
||||
name: Install Qt 5.9 on Windows
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{ matrix.qt-version }}
|
||||
arch: win32_mingw53
|
||||
cache: true
|
||||
aqtversion: "==0.9.4"
|
||||
- if: contains( matrix.os, 'windows') && ( ( matrix.qt-version == '5.13.2' ) || ( matrix.qt-version == '5.14.2' ) )
|
||||
name: Install Qt on Windows
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{ matrix.qt-version }}
|
||||
arch: win64_mingw73
|
||||
cache: true
|
||||
- if: contains( matrix.os, 'windows') && matrix.qt-version == '5.15.2'
|
||||
name: Install Qt 5.15.2 on Windows
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: "==2.0.0"
|
||||
version: ${{ matrix.qt-version }}
|
||||
arch: win64_mingw81
|
||||
cache: true
|
||||
- if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
name: Install Qt 6 on Windows
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: "==2.0.*"
|
||||
version: ${{ matrix.qt-version }}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
cache: true
|
||||
- if: false == contains( matrix.os, 'windows') && false == startsWith( matrix.qt-version, '6.' )
|
||||
name: Install Qt < 6 on Linux/macOS
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: "==2.0.0"
|
||||
version: ${{ matrix.qt-version }}
|
||||
cache: true
|
||||
- if: false == contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
name: Install Qt 6 on Linux/macOS
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
aqtversion: "==2.0.0"
|
||||
version: ${{ matrix.qt-version }}
|
||||
modules: ${{env.QT_MODULES}}
|
||||
cache: true
|
||||
- if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
name: Make sure MSVC is found on Windows for Qt 6
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
#
|
||||
# Do tests
|
||||
#
|
||||
#
|
||||
# Do tests
|
||||
#
|
||||
|
||||
- if: contains( matrix.os, 'ubuntu-latest')
|
||||
name: Do Linux tests
|
||||
run: |
|
||||
cd ../tests && qmake CONFIG+=debug CONFIG+=DEV_MODE DEFINES+=INTEGRATION_TESTS && make -s -j 8
|
||||
../bin/tests/tests -platform minimal -txt
|
||||
# qmake workaround: https://bugreports.qt.io/browse/QTBUG-117225?focusedId=754625&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-754625
|
||||
# See https://github.com/pbek/QOwnNotes/issues/3018
|
||||
- if: contains( matrix.os, 'macos')
|
||||
name: Do macOS tests
|
||||
run: |
|
||||
cd ../tests && qmake CONFIG+=debug CONFIG+=DEV_MODE DEFINES+=INTEGRATION_TESTS -early QMAKE_DEFAULT_LIBDIRS=$(xcrun -show-sdk-path)/usr/lib && make -s -j 8
|
||||
../bin/tests/tests.app/Contents/MacOS/tests -platform minimal -txt
|
||||
# - if: contains( matrix.os, 'windows') && (startsWith( matrix.qt-version, '5.' ) || matrix.qt-version == '6.2.4')
|
||||
- if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '5.' )
|
||||
name: Do Qt5 / Qt 6.2.4 Windows tests
|
||||
run: |
|
||||
cd ..\tests
|
||||
qmake DEFINES+=INTEGRATION_TESTS
|
||||
make
|
||||
copy ..\build-systems\github\windows\libcrypto-1_1-x64.dll .
|
||||
copy ..\build-systems\github\windows\libssl-1_1-x64.dll .
|
||||
Get-ChildItem -Recurse -Force ..
|
||||
copy ..\bin\tests\tests.exe .
|
||||
# echo set
|
||||
# gci env:* | sort-object name
|
||||
# echo path
|
||||
# echo echo $env:PATH
|
||||
# cd ..\bin\tests
|
||||
# echo test1
|
||||
# .\tests.exe -txt
|
||||
# echo windeployqt
|
||||
windeployqt --debug tests.exe
|
||||
# echo test2
|
||||
.\tests.exe -txt
|
||||
# - if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
# name: Do Qt 6.3+ Windows tests
|
||||
# run: |
|
||||
# cd ..\tests
|
||||
# qmake6 DEFINES+=INTEGRATION_TESTS
|
||||
# nmake
|
||||
# copy ..\build-systems\github\windows\libcrypto-1_1-x64.dll .
|
||||
# copy ..\build-systems\github\windows\libssl-1_1-x64.dll .
|
||||
# copy ..\bin\tests\tests.exe .
|
||||
# windeployqt --debug tests.exe
|
||||
# .\tests.exe -txt
|
||||
- if: contains( matrix.os, 'ubuntu-latest')
|
||||
name: Do Linux tests
|
||||
run: |
|
||||
cd ../tests && qmake CONFIG+=debug CONFIG+=DEV_MODE DEFINES+=INTEGRATION_TESTS && make -s -j 8
|
||||
../bin/tests/tests -platform minimal -txt
|
||||
# qmake workaround: https://bugreports.qt.io/browse/QTBUG-117225?focusedId=754625&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-754625
|
||||
# See https://github.com/pbek/QOwnNotes/issues/3018
|
||||
- if: contains( matrix.os, 'macos')
|
||||
name: Do macOS tests
|
||||
run: |
|
||||
cd ../tests && qmake CONFIG+=debug CONFIG+=DEV_MODE DEFINES+=INTEGRATION_TESTS -early QMAKE_DEFAULT_LIBDIRS=$(xcrun -show-sdk-path)/usr/lib && make -s -j 8
|
||||
../bin/tests/tests.app/Contents/MacOS/tests -platform minimal -txt
|
||||
# - if: contains( matrix.os, 'windows') && (startsWith( matrix.qt-version, '5.' ) || matrix.qt-version == '6.2.4')
|
||||
- if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '5.' )
|
||||
name: Do Qt5 / Qt 6.2.4 Windows tests
|
||||
run: |
|
||||
cd ..\tests
|
||||
qmake DEFINES+=INTEGRATION_TESTS
|
||||
make
|
||||
copy ..\build-systems\github\windows\libcrypto-1_1-x64.dll .
|
||||
copy ..\build-systems\github\windows\libssl-1_1-x64.dll .
|
||||
Get-ChildItem -Recurse -Force ..
|
||||
copy ..\bin\tests\tests.exe .
|
||||
# echo set
|
||||
# gci env:* | sort-object name
|
||||
# echo path
|
||||
# echo echo $env:PATH
|
||||
# cd ..\bin\tests
|
||||
# echo test1
|
||||
# .\tests.exe -txt
|
||||
# echo windeployqt
|
||||
windeployqt --debug tests.exe
|
||||
# echo test2
|
||||
.\tests.exe -txt
|
||||
# - if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
# name: Do Qt 6.3+ Windows tests
|
||||
# run: |
|
||||
# cd ..\tests
|
||||
# qmake6 DEFINES+=INTEGRATION_TESTS
|
||||
# nmake
|
||||
# copy ..\build-systems\github\windows\libcrypto-1_1-x64.dll .
|
||||
# copy ..\build-systems\github\windows\libssl-1_1-x64.dll .
|
||||
# copy ..\bin\tests\tests.exe .
|
||||
# windeployqt --debug tests.exe
|
||||
# .\tests.exe -txt
|
||||
|
||||
#
|
||||
# Build QOwnNotes
|
||||
#
|
||||
|
||||
- if: true && !(contains( matrix.os, 'windows') && (matrix.qt-version == '5.15.2' || startsWith( matrix.qt-version, '6.' ))) && !contains( matrix.os, 'ubuntu-22') && !contains( matrix.os, 'macos')
|
||||
name: Build QOwnNotes
|
||||
run: |
|
||||
lrelease QOwnNotes.pro && qmake CONFIG+=debug CONFIG+=DEV_MODE && make -j 8
|
||||
# qmake workaround: https://bugreports.qt.io/browse/QTBUG-117225?focusedId=754625&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-754625
|
||||
# See https://github.com/pbek/QOwnNotes/issues/3018
|
||||
- if: contains( matrix.os, 'macos')
|
||||
name: Build QOwnNotes for macOS with qmake fix
|
||||
run: |
|
||||
lrelease QOwnNotes.pro && qmake CONFIG+=debug CONFIG+=DEV_MODE -early QMAKE_DEFAULT_LIBDIRS=$(xcrun -show-sdk-path)/usr/lib && make -j 8
|
||||
../build-systems/github/macos/create-dmg.sh
|
||||
- if: contains( matrix.os, 'ubuntu-22') && ( matrix.qt-version == '5.15.2' )
|
||||
name: Build for Snapcraft
|
||||
uses: snapcore/action-build@v1
|
||||
- if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
name: Build QOwnNotes for Windows with Qt 6
|
||||
run: |
|
||||
qmake6 CONFIG+=debug QOwnNotes.pro CONFIG+=DEV_MODE
|
||||
nmake
|
||||
- if: true && !(contains( matrix.os, 'windows') && (matrix.qt-version == '5.15.2' || startsWith( matrix.qt-version, '6.' ))) && !contains( matrix.os, 'ubuntu-22') && !contains( matrix.os, 'macos')
|
||||
name: Build QOwnNotes
|
||||
run: |
|
||||
lrelease QOwnNotes.pro && qmake CONFIG+=debug CONFIG+=DEV_MODE && make -j 8
|
||||
# qmake workaround: https://bugreports.qt.io/browse/QTBUG-117225?focusedId=754625&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-754625
|
||||
# See https://github.com/pbek/QOwnNotes/issues/3018
|
||||
- if: contains( matrix.os, 'macos')
|
||||
name: Build QOwnNotes for macOS with qmake fix
|
||||
run: |
|
||||
lrelease QOwnNotes.pro && qmake CONFIG+=debug CONFIG+=DEV_MODE -early QMAKE_DEFAULT_LIBDIRS=$(xcrun -show-sdk-path)/usr/lib && make -j 8
|
||||
../build-systems/github/macos/create-dmg.sh
|
||||
- if: contains( matrix.os, 'ubuntu-22') && ( matrix.qt-version == '5.15.2' )
|
||||
name: Build for Snapcraft
|
||||
uses: snapcore/action-build@v1
|
||||
- if: contains( matrix.os, 'windows') && startsWith( matrix.qt-version, '6.' )
|
||||
name: Build QOwnNotes for Windows with Qt 6
|
||||
run: |
|
||||
qmake6 CONFIG+=debug QOwnNotes.pro CONFIG+=DEV_MODE
|
||||
nmake
|
||||
|
||||
#
|
||||
# Build QOwnNotes Windows Release and store it as artifact
|
||||
#
|
||||
#
|
||||
# Build QOwnNotes Windows Release and store it as artifact
|
||||
#
|
||||
|
||||
- if: contains( matrix.os, 'windows') && ( matrix.qt-version == '5.15.2' )
|
||||
name: Build QOwnNotes Windows Release
|
||||
run: '& ..\build-systems\github\windows\build-zip.ps1'
|
||||
- if: contains( matrix.os, 'windows') && ( matrix.qt-version == '5.15.2' )
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: QOwnNotes-Windows
|
||||
path: QOwnNotes.zip
|
||||
- if: contains( matrix.os, 'windows') && ( matrix.qt-version == '5.15.2' )
|
||||
name: Build QOwnNotes Windows Release
|
||||
run: '& ..\build-systems\github\windows\build-zip.ps1'
|
||||
- if: contains( matrix.os, 'windows') && ( matrix.qt-version == '5.15.2' )
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: QOwnNotes-Windows
|
||||
path: QOwnNotes.zip
|
||||
|
|
35
.github/workflows/build-webpage.yml
vendored
35
.github/workflows/build-webpage.yml
vendored
|
@ -1,19 +1,19 @@
|
|||
name: Build Webpage
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
branches: [main]
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-including-paths
|
||||
# if [[ ${changed_file} == "CHANGELOG.md" ]] || [[ ${changed_file} = screenshots* ]] || [[ ${changed_file} = webpage* ]] || [[ ${changed_file} = ".github/workflows/build-webpage.yml" ]] ;
|
||||
paths:
|
||||
- '.github/workflows/build-webpage.yml'
|
||||
- ".github/workflows/build-webpage.yml"
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
branches: [main]
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-including-paths
|
||||
# if [[ ${changed_file} == "CHANGELOG.md" ]] || [[ ${changed_file} = screenshots* ]] || [[ ${changed_file} = webpage* ]] || [[ ${changed_file} = ".github/workflows/build-webpage.yml" ]] ;
|
||||
paths:
|
||||
- 'CHANGELOG.md'
|
||||
- 'screenshots/**'
|
||||
- 'webpage/**'
|
||||
- "CHANGELOG.md"
|
||||
- "screenshots/**"
|
||||
- "webpage/**"
|
||||
|
||||
defaults:
|
||||
run:
|
||||
|
@ -21,18 +21,17 @@ defaults:
|
|||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- id: files
|
||||
uses: masesgroup/retrieve-changed-files@v3
|
||||
with:
|
||||
format: 'csv'
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
- uses: actions/checkout@v4
|
||||
- id: files
|
||||
uses: masesgroup/retrieve-changed-files@v3
|
||||
with:
|
||||
format: "csv"
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
- run: npm install
|
||||
- run: npm run build
|
||||
|
|
6
.github/workflows/stale.yml
vendored
6
.github/workflows/stale.yml
vendored
|
@ -10,8 +10,8 @@ permissions:
|
|||
jobs:
|
||||
close-issues:
|
||||
permissions:
|
||||
issues: write # for actions/stale to close stale issues
|
||||
pull-requests: write # for actions/stale to close stale PRs
|
||||
issues: write # for actions/stale to close stale issues
|
||||
pull-requests: write # for actions/stale to close stale PRs
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# https://github.com/marketplace/actions/close-stale-issues
|
||||
|
@ -22,7 +22,7 @@ jobs:
|
|||
stale-issue-label: "Stale"
|
||||
stale-issue-message: "This issue is stale because it has been open for 30 days with no activity."
|
||||
close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale."
|
||||
any-of-labels: 'Type: Support,Webpage: Support'
|
||||
any-of-labels: "Type: Support,Webpage: Support"
|
||||
days-before-pr-stale: -1
|
||||
days-before-pr-close: -1
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
#
|
||||
|
||||
before_script:
|
||||
- PATH="/Applications/Qt/5.4/clang_64/bin:$PATH"
|
||||
- QTDIR="/Applications/Qt/5.4/clang_64"
|
||||
- cd src
|
||||
# http://doc.gitlab.com/ci/variables/README.html
|
||||
- echo "#define BUILD ""$CI_BUILD_ID" > build_number.h
|
||||
- qmake -project
|
||||
- qmake QOwnNotes.pro -r -spec macx-clang CONFIG+=x86_64
|
||||
- make
|
||||
- PATH="/Applications/Qt/5.4/clang_64/bin:$PATH"
|
||||
- QTDIR="/Applications/Qt/5.4/clang_64"
|
||||
- cd src
|
||||
# http://doc.gitlab.com/ci/variables/README.html
|
||||
- echo "#define BUILD ""$CI_BUILD_ID" > build_number.h
|
||||
- qmake -project
|
||||
- qmake QOwnNotes.pro -r -spec macx-clang CONFIG+=x86_64
|
||||
- make
|
||||
|
||||
build_job:
|
||||
type: build
|
||||
|
|
|
@ -76,15 +76,15 @@ script:
|
|||
- cd ./tests
|
||||
- qmake DEFINES+=INTEGRATION_TESTS CONFIG+=ccache && make -s -j 2
|
||||
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then
|
||||
if [ "${TRAVIS_BRANCH}" != "release" ]; then
|
||||
./../bin/tests/tests -platform minimal -txt
|
||||
&& ../travis/linux/coveralls.sh
|
||||
;
|
||||
fi
|
||||
;
|
||||
if [ "${TRAVIS_BRANCH}" != "release" ]; then
|
||||
./../bin/tests/tests -platform minimal -txt
|
||||
&& ../travis/linux/coveralls.sh
|
||||
;
|
||||
fi
|
||||
;
|
||||
else
|
||||
./../bin/tests/tests.app/Contents/MacOS/tests -platform minimal -txt
|
||||
;
|
||||
./../bin/tests/tests.app/Contents/MacOS/tests -platform minimal -txt
|
||||
;
|
||||
fi
|
||||
- cd ./../src
|
||||
- echo "#define BUILD ""$TRAVIS_BUILD_NUMBER" > build_number.h
|
||||
|
@ -123,50 +123,50 @@ before_deploy:
|
|||
- git config --global user.email "builds@travis-ci.com"
|
||||
- git config --global user.name "Travis CI"
|
||||
- if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
|
||||
if [ "${TRAVIS_BRANCH}" == "release" ]; then
|
||||
export GIT_TAG=linux-b$TRAVIS_BUILD_NUMBER-$TIME_STRING
|
||||
;
|
||||
else
|
||||
export GIT_TAG=dev-linux-b$TRAVIS_BUILD_NUMBER-$TIME_STRING
|
||||
;
|
||||
fi
|
||||
;
|
||||
if [ "${TRAVIS_BRANCH}" == "release" ]; then
|
||||
export GIT_TAG=linux-b$TRAVIS_BUILD_NUMBER-$TIME_STRING
|
||||
;
|
||||
else
|
||||
if [ "${TRAVIS_BRANCH}" == "release" ]; then
|
||||
export GIT_TAG=macosx-b$TRAVIS_BUILD_NUMBER-$TIME_STRING
|
||||
;
|
||||
else
|
||||
export GIT_TAG=dev-macosx-b$TRAVIS_BUILD_NUMBER-$TIME_STRING
|
||||
;
|
||||
fi
|
||||
;
|
||||
export GIT_TAG=dev-linux-b$TRAVIS_BUILD_NUMBER-$TIME_STRING
|
||||
;
|
||||
fi
|
||||
;
|
||||
else
|
||||
if [ "${TRAVIS_BRANCH}" == "release" ]; then
|
||||
export GIT_TAG=macosx-b$TRAVIS_BUILD_NUMBER-$TIME_STRING
|
||||
;
|
||||
else
|
||||
export GIT_TAG=dev-macosx-b$TRAVIS_BUILD_NUMBER-$TIME_STRING
|
||||
;
|
||||
fi
|
||||
;
|
||||
fi
|
||||
- git tag $GIT_TAG -a -m "Generated tag from TravisCI for build $TRAVIS_BUILD_NUMBER"
|
||||
- git push -q https://$TAGPERM@github.com/pbek/QOwnNotes --tags >/dev/null 2>&1
|
||||
|
||||
deploy:
|
||||
# Linux release release
|
||||
# Linux release release
|
||||
- provider: releases
|
||||
api_key:
|
||||
secure: DaUepv9X3aPy91r8FBCyA0yUEQ0CNYQyA5EzlXsvLWsTi7XjscWZXCkv2BoFxk+MXvsCweaS6/qRbIn8/cW1TFLo6ZAbHjucnmjtSZn9wr9j3SEV7fM6jpAc6XBMMHtgjCaKZMpvH1R2Ed6O3DNr7L0//zB/PDhQx+rDeDre1kA=
|
||||
secure: DaUepv9X3aPy91r8FBCyA0yUEQ0CNYQyA5EzlXsvLWsTi7XjscWZXCkv2BoFxk+MXvsCweaS6/qRbIn8/cW1TFLo6ZAbHjucnmjtSZn9wr9j3SEV7fM6jpAc6XBMMHtgjCaKZMpvH1R2Ed6O3DNr7L0//zB/PDhQx+rDeDre1kA=
|
||||
file: QOwnNotes-$VERSION_NUMBER.deb
|
||||
skip_cleanup: true
|
||||
on:
|
||||
repo: pbek/QOwnNotes
|
||||
branch: release
|
||||
tags: false
|
||||
condition: $CONFIG = release && ${TRAVIS_OS_NAME} = linux
|
||||
repo: pbek/QOwnNotes
|
||||
branch: release
|
||||
tags: false
|
||||
condition: $CONFIG = release && ${TRAVIS_OS_NAME} = linux
|
||||
# macOS release release
|
||||
- provider: releases
|
||||
api_key:
|
||||
secure: DaUepv9X3aPy91r8FBCyA0yUEQ0CNYQyA5EzlXsvLWsTi7XjscWZXCkv2BoFxk+MXvsCweaS6/qRbIn8/cW1TFLo6ZAbHjucnmjtSZn9wr9j3SEV7fM6jpAc6XBMMHtgjCaKZMpvH1R2Ed6O3DNr7L0//zB/PDhQx+rDeDre1kA=
|
||||
secure: DaUepv9X3aPy91r8FBCyA0yUEQ0CNYQyA5EzlXsvLWsTi7XjscWZXCkv2BoFxk+MXvsCweaS6/qRbIn8/cW1TFLo6ZAbHjucnmjtSZn9wr9j3SEV7fM6jpAc6XBMMHtgjCaKZMpvH1R2Ed6O3DNr7L0//zB/PDhQx+rDeDre1kA=
|
||||
file: QOwnNotes-$VERSION_NUMBER.dmg
|
||||
skip_cleanup: true
|
||||
on:
|
||||
repo: pbek/QOwnNotes
|
||||
branch: release
|
||||
tags: false
|
||||
condition: $CONFIG = release && ${TRAVIS_OS_NAME} = osx
|
||||
repo: pbek/QOwnNotes
|
||||
branch: release
|
||||
tags: false
|
||||
condition: $CONFIG = release && ${TRAVIS_OS_NAME} = osx
|
||||
# Linux development release
|
||||
# - provider: releases
|
||||
# api_key:
|
||||
|
@ -178,7 +178,7 @@ deploy:
|
|||
# branch: main
|
||||
# tags: false
|
||||
# condition: ${TRAVIS_OS_NAME} = linux
|
||||
# macOS development release
|
||||
# macOS development release
|
||||
# - provider: releases
|
||||
# prerelease: true
|
||||
# api_key:
|
||||
|
@ -197,21 +197,21 @@ notifications:
|
|||
- developer@bekerle.com
|
||||
on_success: change
|
||||
on_failure: change
|
||||
# irc:
|
||||
# # https://docs.travis-ci.com/user/notifications/#IRC-notification
|
||||
# channels:
|
||||
# - "chat.freenode.net#qownnotes"
|
||||
# template:
|
||||
# - "[%{commit}] %{repository} (%{branch}): %{message} | Commit message: %{commit_message} | Changes: %{compare_url} | Build details: %{build_url}"
|
||||
# on_success: never
|
||||
# on_failure: change
|
||||
# use_notice: true
|
||||
# skip_join: true
|
||||
# irc:
|
||||
# # https://docs.travis-ci.com/user/notifications/#IRC-notification
|
||||
# channels:
|
||||
# - "chat.freenode.net#qownnotes"
|
||||
# template:
|
||||
# - "[%{commit}] %{repository} (%{branch}): %{message} | Commit message: %{commit_message} | Changes: %{compare_url} | Build details: %{build_url}"
|
||||
# on_success: never
|
||||
# on_failure: change
|
||||
# use_notice: true
|
||||
# skip_join: true
|
||||
webhooks:
|
||||
urls:
|
||||
- https://webhooks.gitter.im/e/7c80d5baa6681f02dca5
|
||||
#- https://fathomless-fjord-24024.herokuapp.com/notify
|
||||
#- "https://scalar.vector.im/api/neb/services/hooks/dHJhdmlzLWNpLyU0MHBiZWslM0FtYXRyaXgub3JnLyUyMXJVenJSdnJuck9zTGFzRGRicCUzQW1hdHJpeC5vcmc"
|
||||
on_success: change # options: [always|never|change] default: always
|
||||
on_failure: always # options: [always|never|change] default: always
|
||||
on_start: never # options: [always|never|change] default: always
|
||||
on_success: change # options: [always|never|change] default: always
|
||||
on_failure: always # options: [always|never|change] default: always
|
||||
on_start: never # options: [always|never|change] default: always
|
||||
|
|
5855
CHANGELOG.md
5855
CHANGELOG.md
File diff suppressed because it is too large
Load diff
29
README.md
29
README.md
|
@ -29,7 +29,6 @@
|
|||
[](https://crowdin.com/project/qownnotes)
|
||||
[](https://gitter.im/qownnotes/qownnotes)
|
||||
|
||||
|
||||
[QOwnNotes](https://www.qownnotes.org) is the **open source notepad** with
|
||||
[**Markdown support**](https://github.com/pbek/QOwnNotes/blob/main/src/demonotes/Markdown%20Cheatsheet.md)
|
||||
and **todo list manager** for **GNU/Linux**, **macOS** and **Windows**,
|
||||
|
@ -66,8 +65,8 @@ To access your ownCloud notes from your **mobile device** you may want to get on
|
|||
- For Android and Nextcloud: [Notes](https://f-droid.org/packages/it.niedermann.owncloud.notes)
|
||||
- For iOS: [CloudNotes](https://itunes.apple.com/app/cloudnotes-owncloud-notes/id813973264)
|
||||
|
||||
On Android you could also use any sync-tool like *Synchronize Ultimate* or *FolderSync*
|
||||
to sync your note files and use software like *neutriNotes* or
|
||||
On Android you could also use any sync-tool like _Synchronize Ultimate_ or _FolderSync_
|
||||
to sync your note files and use software like _neutriNotes_ or
|
||||
[**Markor**](https://f-droid.org/packages/net.gsantner.markor/) to edit your notes.
|
||||
|
||||
On iOS [Notebooks](https://itunes.apple.com/us/app/notebooks-write-and-organize/id780438662)
|
||||
|
@ -88,7 +87,7 @@ You can visit the [QOwnNotes project page](https://www.qownnotes.org) for more *
|
|||
(install [QOwnNotesAPI](https://github.com/pbek/qownnotesapi) on your server)
|
||||
- **trashed notes** can be restored from your Nextcloud / ownCloud server
|
||||
(install [QOwnNotesAPI](https://github.com/pbek/qownnotesapi) on your server)
|
||||
- there also is a local trash
|
||||
- there also is a local trash
|
||||
- sub-string searching of notes is possible and search results are highlighted in the notes
|
||||
- application can be operated with **customizable keyboard shortcuts**
|
||||
- external changes of note files are watched (notes or note list are reloaded)
|
||||
|
@ -101,14 +100,14 @@ You can visit the [QOwnNotes project page](https://www.qownnotes.org) for more *
|
|||
- implementation of the **[OpenAI completion API](https://www.qownnotes.org/blog/2024-05-17-AI-support-was-added-to-QOwnNotes.html)** to be used in scripts
|
||||
- [QOwnNotes Web Companion browser extension](https://github.com/qownnotes/web-companion)
|
||||
to a add notes from the selected text and other features
|
||||
- visit the [Chrome Web Store](https://chrome.google.com/webstore/detail/qownnotes-web-companion/pkgkfnampapjbopomdpnkckbjdnpkbkp)
|
||||
page to install the app on Google Chrome
|
||||
- visit the [Firefox Add-ons](https://addons.mozilla.org/firefox/addon/qownnotes-web-companion)
|
||||
page to install the app on Mozilla Firefox
|
||||
- visit the [Chrome Web Store](https://chrome.google.com/webstore/detail/qownnotes-web-companion/pkgkfnampapjbopomdpnkckbjdnpkbkp)
|
||||
page to install the app on Google Chrome
|
||||
- visit the [Firefox Add-ons](https://addons.mozilla.org/firefox/addon/qownnotes-web-companion)
|
||||
page to install the app on Mozilla Firefox
|
||||
- notes are getting their name from the first line of the note text (just like
|
||||
in the Nextcloud / ownCloud notes web-application) and the note text files are
|
||||
automatically renamed, if the first line changes
|
||||
- this feature can also be turned off, and you can use any filename you like
|
||||
- this feature can also be turned off, and you can use any filename you like
|
||||
- manage your Nextcloud / ownCloud todo lists (ownCloud tasks or Tasks Plus / Calendar Plus)
|
||||
- create [Nextcloud Deck](https://apps.nextcloud.com/apps/deck) cards and link to them in your notes
|
||||
- **encryption of notes** (AES-256 is built in, or you can use custom encryption methods like
|
||||
|
@ -128,11 +127,11 @@ You can visit the [QOwnNotes project page](https://www.qownnotes.org) for more *
|
|||
- Evernote (now with large files) and Joplin import
|
||||
- QOwnNotes is **available in over 60 different languages** like English, German,
|
||||
French, Polish, Chinese, Japanese, Russian, Portuguese, Hungarian, Dutch and Spanish
|
||||
- [Your help](https://www.qownnotes.org/contributing/translation.html) is
|
||||
very much appreciated to improve these translations or to translate
|
||||
QOwnNotes in more languages
|
||||
- Join the fun at **[Crowdin](https://crowdin.com/project/qownnotes)**
|
||||
to **help** with the **translations**
|
||||
- [Your help](https://www.qownnotes.org/contributing/translation.html) is
|
||||
very much appreciated to improve these translations or to translate
|
||||
QOwnNotes in more languages
|
||||
- Join the fun at **[Crowdin](https://crowdin.com/project/qownnotes)**
|
||||
to **help** with the **translations**
|
||||
|
||||
## Installation
|
||||
|
||||
|
@ -157,7 +156,7 @@ git submodule update --init
|
|||
Then download [Qt Creator](https://www.qt.io/download-open-source), you will also
|
||||
need the packages `qtwebsockets` to build QOwnNotes with Qt6
|
||||
(only `qtwebsockets` for Qt5). If you build under Windows, you want to stick to
|
||||
*MinGw 64-bit*.
|
||||
_MinGw 64-bit_.
|
||||
|
||||
Afterward open the project file `src/QOwnNotes.pro` and click on
|
||||
**Build** / **Build Project QOwnNotes**.
|
||||
|
|
26
appveyor.yml
26
appveyor.yml
|
@ -18,13 +18,13 @@ environment:
|
|||
|
||||
matrix:
|
||||
# latest Qt 32 bit
|
||||
# - QTDIR: C:\Qt\5.13\mingw73_32
|
||||
# TOOLCHAIN_VERSION: 730_32
|
||||
# gpp: win32-g++
|
||||
# - QTDIR: C:\Qt\5.13\mingw73_32
|
||||
# TOOLCHAIN_VERSION: 730_32
|
||||
# gpp: win32-g++
|
||||
# latest Qt 64 bit (broken)
|
||||
# - QTDIR: C:\Qt\latest\mingw73_64
|
||||
# TOOLCHAIN_VERSION: 730_64
|
||||
# gpp: g++
|
||||
# - QTDIR: C:\Qt\latest\mingw73_64
|
||||
# TOOLCHAIN_VERSION: 730_64
|
||||
# gpp: g++
|
||||
# Qt 5.7 (for Windows XP)
|
||||
- QTDIR: C:\Qt\5.7\mingw53_32
|
||||
TOOLCHAIN_VERSION: 530_32
|
||||
|
@ -41,8 +41,8 @@ cache:
|
|||
|
||||
install:
|
||||
# Qt-versions: https://www.appveyor.com/docs/build-environment/#qt
|
||||
# - set QTDIR=C:\Qt\5.7\mingw53_32
|
||||
# - set QTDIR=C:\Qt\5.10.1\mingw53_32
|
||||
# - set QTDIR=C:\Qt\5.7\mingw53_32
|
||||
# - set QTDIR=C:\Qt\5.10.1\mingw53_32
|
||||
- set PATH=%PATH%;%QTDIR%\bin;C:\Qt\Tools\QtCreator\bin;C:\Qt\Tools\mingw%TOOLCHAIN_VERSION%\bin
|
||||
- echo PATH=%PATH%
|
||||
- set RELEASE_PATH=appveyor\release
|
||||
|
@ -64,7 +64,7 @@ before_build:
|
|||
# we need to modify that to make it running on AppVeyor
|
||||
#- sed -i "s/CONFIG += c++11/QMAKE_CXXFLAGS += -std=gnu++0x\nQMAKE_CXX=ccache %gpp%/g" QOwnNotesTests.pro
|
||||
- sed -i "s/CONFIG += c++11/QMAKE_CXXFLAGS += -std=gnu++0x/g" QOwnNotesTests.pro
|
||||
- "echo #define RELEASE \"AppVeyor\" > release.h"
|
||||
- 'echo #define RELEASE "AppVeyor" > release.h'
|
||||
- qmake QOwnNotesTests.pro DEFINES+=INTEGRATION_TESTS CONFIG+=ccache
|
||||
- mingw32-make
|
||||
# creating the test path
|
||||
|
@ -98,13 +98,13 @@ build_script:
|
|||
# we need to modify that to make it running on AppVeyor
|
||||
#- sed -i "s/CONFIG += c++11/QMAKE_CXXFLAGS += -std=gnu++0x\nQMAKE_CXX=ccache %gpp%/g" QOwnNotes.pro
|
||||
- sed -i "s/CONFIG += c++11/QMAKE_CXXFLAGS += -std=gnu++0x/g" QOwnNotes.pro
|
||||
- "echo #define RELEASE \"AppVeyor\" > release.h"
|
||||
- 'echo #define RELEASE "AppVeyor" > release.h'
|
||||
# setting the build number in the header file
|
||||
- "echo #define BUILD %APPVEYOR_BUILD_NUMBER% > build_number.h"
|
||||
# - qmake QOwnNotes.pro -r -spec win32-g++
|
||||
# - qmake QOwnNotes.pro -r -spec %gpp% CONFIG+=ccache QMAKE_CXX="ccache $$QMAKE_CXX"
|
||||
# - qmake QOwnNotes.pro -r -spec win32-g++
|
||||
# - qmake QOwnNotes.pro -r -spec %gpp% CONFIG+=ccache QMAKE_CXX="ccache $$QMAKE_CXX"
|
||||
- qmake QOwnNotes.pro -r -spec %gpp% CONFIG+=ccache
|
||||
# - qmake QOwnNotes.pro -r -spec win32-g++ "CONFIG+=debug"
|
||||
# - qmake QOwnNotes.pro -r -spec win32-g++ "CONFIG+=debug"
|
||||
- lrelease QOwnNotes.pro
|
||||
- mingw32-make
|
||||
# creating the release path
|
||||
|
|
|
@ -27,22 +27,22 @@ CUR_DIR=$(pwd)
|
|||
_QQwnNotesCheckSumVarFile="/tmp/QOwnNotes.checksum.vars"
|
||||
|
||||
if [[ ! -f ${_QQwnNotesCheckSumVarFile} ]]; then
|
||||
echo "${_QQwnNotesCheckSumVarFile} doesn't exist. build-github-src.sh must be run ahead of build script!"
|
||||
exit 1
|
||||
echo "${_QQwnNotesCheckSumVarFile} doesn't exist. build-github-src.sh must be run ahead of build script!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source ${_QQwnNotesCheckSumVarFile}
|
||||
|
||||
# check checksum variable from build-systems/github/build-github-src.sh
|
||||
if [ -z ${QOWNNOTES_ARCHIVE_SHA256} ]; then
|
||||
echo "QOWNNOTES_ARCHIVE_SHA256 was not set!"
|
||||
exit 1
|
||||
echo "QOWNNOTES_ARCHIVE_SHA256 was not set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Started the AUR packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
mkdir $PROJECT_PATH
|
||||
|
@ -57,12 +57,12 @@ git clone --depth=1 ssh://aur@aur.archlinux.org/qownnotes.git aur -b master
|
|||
git clone --depth=1 git@github.com:pbek/QOwnNotes.git QOwnNotes -b $BRANCH
|
||||
cd QOwnNotes || exit 1
|
||||
|
||||
gitCommitHash=`git rev-parse HEAD`
|
||||
gitCommitHash=$(git rev-parse HEAD)
|
||||
echo "Current commit: $gitCommitHash"
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
fi
|
||||
|
||||
cd ../aur || exit 1
|
||||
|
@ -82,12 +82,11 @@ echo "Archive sha256: ${QOWNNOTES_ARCHIVE_SHA256}"
|
|||
# replace the version in the .SRCINFO file
|
||||
sed -i "s/VERSION-STRING/$QOWNNOTES_VERSION/g" .SRCINFO
|
||||
|
||||
|
||||
echo "Committing changes..."
|
||||
git commit -m "releasing version $QOWNNOTES_VERSION" PKGBUILD .SRCINFO
|
||||
git push
|
||||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -4,16 +4,15 @@
|
|||
#
|
||||
|
||||
# This is used inside the release docker container
|
||||
if [ "$1" = "--docker" ]
|
||||
then
|
||||
if [ "$1" = "--docker" ]; then
|
||||
echo "Importing PGP key..."
|
||||
gpg --import ~/private.pgp
|
||||
echo "Adding AUR ssh key..."
|
||||
eval `ssh-agent -s`
|
||||
eval $(ssh-agent -s)
|
||||
ssh-add ~/.ssh/aur_rsa
|
||||
fi
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
echo "Upload source archive to GitHub release..."
|
||||
|
||||
|
@ -21,7 +20,8 @@ echo "Upload source archive to GitHub release..."
|
|||
"$DIR/github/build-github-src.sh"
|
||||
|
||||
# check if exit code was 0
|
||||
rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi
|
||||
rc=$?
|
||||
if [[ $rc != 0 ]]; then exit $rc; fi
|
||||
|
||||
# Upload source archive to SourceForge
|
||||
#$DIR/sourceforge/build-sourceforge-src.sh
|
||||
|
@ -52,16 +52,10 @@ snap/build-for-launchpad-snap.sh
|
|||
|
||||
exit
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# this was the previous konsole tabs implementation
|
||||
#
|
||||
|
||||
|
||||
|
||||
# List of commands to run, with parameters, in quotes, space-separated; do not use quotes inside (see bash arrays)
|
||||
COMMANDS=("$DIR/../ubuntu-launchpad/build-for-launchpad.sh" "$DIR/../obs/build-for-obs.sh" "$DIR/aur/build-for-aur.sh" "$DIR/gentoo/build-for-gentoo.sh" "$DIR/slackware/build-for-slackware.sh" "$DIR/snap/build-for-launchpad-snap.sh")
|
||||
# "$DIR/snap/build-for-local-snap.sh"
|
||||
|
@ -69,14 +63,14 @@ COMMANDS=("$DIR/../ubuntu-launchpad/build-for-launchpad.sh" "$DIR/../obs/build-f
|
|||
# KDS=$KONSOLE_DBUS_SERVICE # This is the ref of the current konsole and only works in a konsole
|
||||
# KDS=$(org.kde.konsole) # This is found in some examples but is incomplete
|
||||
|
||||
qdbus >/tmp/q0 # Get the current list of konsoles
|
||||
/usr/bin/konsole & # Launch a new konsole
|
||||
qdbus >/tmp/q0 # Get the current list of konsoles
|
||||
/usr/bin/konsole & # Launch a new konsole
|
||||
# PID=$! # And get its PID - But for some reason this is off by a few
|
||||
sleep 1
|
||||
qdbus >/tmp/q1 # Get the new list of konsoles
|
||||
qdbus >/tmp/q1 # Get the new list of konsoles
|
||||
# KDS=org.kde.konsole-$PID
|
||||
# KDS=org.kde.konsole # Sometimes
|
||||
KDS=$(diff /tmp/q{0,1} | grep konsole) # Let's hope there's only one
|
||||
KDS=$(diff /tmp/q{0,1} | grep konsole) # Let's hope there's only one
|
||||
#echo $KDS
|
||||
KDS=${KDS:3}
|
||||
echo "$KDS"
|
||||
|
@ -93,31 +87,29 @@ echo >>/tmp/KDS
|
|||
|
||||
FirstTime=1
|
||||
|
||||
for i in "${COMMANDS[@]}"
|
||||
do
|
||||
echo "Starting: $i"
|
||||
echo >>/tmp/KDS
|
||||
if [ $FirstTime -eq 1 ]
|
||||
then
|
||||
session=$(qdbus $KDS /Windows/1 currentSession)
|
||||
FirstTime=0
|
||||
else
|
||||
session=$(qdbus $KDS /Windows/1 newSession)
|
||||
fi
|
||||
echo $session >>/tmp/KDS
|
||||
for i in "${COMMANDS[@]}"; do
|
||||
echo "Starting: $i"
|
||||
echo >>/tmp/KDS
|
||||
if [ $FirstTime -eq 1 ]; then
|
||||
session=$(qdbus $KDS /Windows/1 currentSession)
|
||||
FirstTime=0
|
||||
else
|
||||
session=$(qdbus $KDS /Windows/1 newSession)
|
||||
fi
|
||||
echo $session >>/tmp/KDS
|
||||
|
||||
# Test: Display possible actions
|
||||
qdbus $KDS /Sessions/${session} >>/tmp/KDS
|
||||
# Test: Display possible actions
|
||||
qdbus $KDS /Sessions/${session} >>/tmp/KDS
|
||||
|
||||
# Doesn't work well, maybe use setTabTitleFormat 0/1 instead
|
||||
# Title "0" appears to be the initial title, title "1" is the title used after commands are executed.
|
||||
#qdbus $KDS /Sessions/${session} setTitle 0 $i
|
||||
#qdbus $KDS /Sessions/${session} setTitle 1 $i
|
||||
# Doesn't work well, maybe use setTabTitleFormat 0/1 instead
|
||||
# Title "0" appears to be the initial title, title "1" is the title used after commands are executed.
|
||||
#qdbus $KDS /Sessions/${session} setTitle 0 $i
|
||||
#qdbus $KDS /Sessions/${session} setTitle 1 $i
|
||||
|
||||
# The line break is necessary to commit the command. \n doesn't work
|
||||
qdbus $KDS /Sessions/${session} sendText "${i}
|
||||
# The line break is necessary to commit the command. \n doesn't work
|
||||
qdbus $KDS /Sessions/${session} sendText "${i}
|
||||
"
|
||||
|
||||
# Optional: will ping when there's no more output in the window
|
||||
qdbus $KDS /Sessions/${session} setMonitorSilence true
|
||||
# Optional: will ping when there's no more output in the window
|
||||
qdbus $KDS /Sessions/${session} setMonitorSilence true
|
||||
done
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
#!/bin/sh
|
||||
#!/bin/env bash
|
||||
#
|
||||
# Runs qt6 build script
|
||||
#
|
||||
|
||||
# This is used inside the release docker container
|
||||
if [ "$1" = "--docker" ]
|
||||
then
|
||||
if [ "$1" = "--docker" ]; then
|
||||
echo "Importing PGP key..."
|
||||
gpg --import ~/private.pgp
|
||||
echo "Adding AUR ssh key..."
|
||||
eval `ssh-agent -s`
|
||||
eval $(ssh-agent -s)
|
||||
ssh-add ~/.ssh/aur_rsa
|
||||
fi
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
cd "$DIR" || exit 1
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
version: '3'
|
||||
version: "3"
|
||||
services:
|
||||
releaser:
|
||||
build: .
|
||||
|
@ -17,8 +17,8 @@ services:
|
|||
- ../secrets/private.pgp:/home/ubuntu/private.pgp
|
||||
- ../secrets/gh/hosts.yml:/home/ubuntu/.config/gh/hosts.yml
|
||||
- ../secrets/gh/config.yml:/home/ubuntu/.config/gh/config.yml
|
||||
# - ../secrets/id_rsa:/home/ubuntu/.ssh/id_rsa:ro
|
||||
# - ../secrets/id_rsa.pub:/home/ubuntu/.ssh/id_rsa.pub:ro
|
||||
# - ../secrets/id_rsa:/home/ubuntu/.ssh/id_rsa:ro
|
||||
# - ../secrets/id_rsa.pub:/home/ubuntu/.ssh/id_rsa.pub:ro
|
||||
# fakeroot became terribly slow
|
||||
# this helped: https://github.com/moby/moby/issues/45436#issuecomment-1528445371
|
||||
ulimits:
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
# https://github.com/pbek/QOwnNotes/releases
|
||||
#
|
||||
|
||||
|
||||
# uncomment this if you want to force a version
|
||||
#QOWNNOTES_VERSION=1.1.0.4
|
||||
|
||||
|
@ -20,27 +19,27 @@ PROJECT_PATH="/tmp/QOwnNotes-gentoo-$$"
|
|||
_QQwnNotesCheckSumVarFile="/tmp/QOwnNotes.checksum.vars"
|
||||
|
||||
if [[ ! -f ${_QQwnNotesCheckSumVarFile} ]]; then
|
||||
echo "${_QQwnNotesCheckSumVarFile} doesn't exist. build-github-src.sh must be run ahead of build script!"
|
||||
exit 1
|
||||
echo "${_QQwnNotesCheckSumVarFile} doesn't exist. build-github-src.sh must be run ahead of build script!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source ${_QQwnNotesCheckSumVarFile}
|
||||
|
||||
# check checksum variable from build-systems/github/build-github-src.sh
|
||||
if [ -z ${QOWNNOTES_ARCHIVE_SHA512} ]; then
|
||||
echo "QOWNNOTES_ARCHIVE_SHA512 was not set!"
|
||||
exit 1
|
||||
echo "QOWNNOTES_ARCHIVE_SHA512 was not set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z ${QOWNNOTES_ARCHIVE_SIZE} ]; then
|
||||
echo "QOWNNOTES_ARCHIVE_SIZE was not set!"
|
||||
exit 1
|
||||
echo "QOWNNOTES_ARCHIVE_SIZE was not set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Started the ebuild packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
mkdir $PROJECT_PATH
|
||||
|
@ -56,8 +55,8 @@ git clone --depth=1 git@github.com:pbek/QOwnNotes.git QOwnNotes -b $BRANCH
|
|||
cd QOwnNotes || exit 1
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
fi
|
||||
|
||||
ARCHIVE_FILE=qownnotes-${QOWNNOTES_VERSION}.tar.xz
|
||||
|
@ -69,7 +68,7 @@ cp ../../../QOwnNotes/build-systems/gentoo/qownnotes.ebuild .
|
|||
sed -i "s/VERSION-STRING/$QOWNNOTES_VERSION/g" qownnotes.ebuild
|
||||
|
||||
# update the Manifest file
|
||||
echo "DIST ${ARCHIVE_FILE} ${QOWNNOTES_ARCHIVE_SIZE} SHA512 ${QOWNNOTES_ARCHIVE_SHA512}" >> Manifest
|
||||
echo "DIST ${ARCHIVE_FILE} ${QOWNNOTES_ARCHIVE_SIZE} SHA512 ${QOWNNOTES_ARCHIVE_SHA512}" >>Manifest
|
||||
|
||||
eBuildFile="qownnotes-$QOWNNOTES_VERSION.ebuild"
|
||||
mv qownnotes.ebuild ${eBuildFile}
|
||||
|
@ -81,5 +80,5 @@ git push
|
|||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -27,7 +27,7 @@ gh auth status || gh auth login --insecure-storage
|
|||
echo "Started the GitHub packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
mkdir $PROJECT_PATH
|
||||
|
@ -43,15 +43,15 @@ cd QOwnNotes || exit 1
|
|||
lrelease src/QOwnNotes.pro
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
else
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" > src/version.h
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" >src/version.h
|
||||
fi
|
||||
|
||||
# set the release string
|
||||
echo "#define RELEASE \"GitHub\"" > src/release.h
|
||||
echo '#define RELEASE "GitHub"' >src/release.h
|
||||
|
||||
echo "Using version $QOWNNOTES_VERSION..."
|
||||
|
||||
|
@ -72,14 +72,14 @@ archiveFile="$qownnotesSrcDir.tar.xz"
|
|||
echo "Creating archive $archiveFile..."
|
||||
tar -cJf $archiveFile $qownnotesSrcDir
|
||||
|
||||
QOWNNOTES_ARCHIVE_MD5=`md5sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.md5`
|
||||
QOWNNOTES_ARCHIVE_SHA256=`sha256sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.sha256`
|
||||
QOWNNOTES_ARCHIVE_SHA512=`sha512sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.sha512`
|
||||
QOWNNOTES_ARCHIVE_SIZE=`stat -c "%s" ${archiveFile}`
|
||||
QOWNNOTES_ARCHIVE_MD5=$(md5sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.md5)
|
||||
QOWNNOTES_ARCHIVE_SHA256=$(sha256sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.sha256)
|
||||
QOWNNOTES_ARCHIVE_SHA512=$(sha512sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.sha512)
|
||||
QOWNNOTES_ARCHIVE_SIZE=$(stat -c "%s" ${archiveFile})
|
||||
|
||||
# also create checksum files that are compatible with sha256sum and sha512sum
|
||||
sha256sum ${archiveFile} > ${archiveFile}.sha256sum
|
||||
sha512sum ${archiveFile} > ${archiveFile}.sha512sum
|
||||
sha256sum ${archiveFile} >${archiveFile}.sha256sum
|
||||
sha512sum ${archiveFile} >${archiveFile}.sha512sum
|
||||
|
||||
echo ""
|
||||
echo "Sums:"
|
||||
|
@ -92,10 +92,10 @@ echo $QOWNNOTES_ARCHIVE_SIZE
|
|||
|
||||
# write temporary checksum variable file for the deployment scripts
|
||||
_QQwnNotesCheckSumVarFile="/tmp/QOwnNotes.checksum.vars"
|
||||
echo "QOWNNOTES_ARCHIVE_MD5=$QOWNNOTES_ARCHIVE_MD5" > ${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SHA256=$QOWNNOTES_ARCHIVE_SHA256" >> ${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SHA512=$QOWNNOTES_ARCHIVE_SHA512" >> ${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SIZE=$QOWNNOTES_ARCHIVE_SIZE" >> ${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_MD5=$QOWNNOTES_ARCHIVE_MD5" >${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SHA256=$QOWNNOTES_ARCHIVE_SHA256" >>${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SHA512=$QOWNNOTES_ARCHIVE_SHA512" >>${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SIZE=$QOWNNOTES_ARCHIVE_SIZE" >>${_QQwnNotesCheckSumVarFile}
|
||||
|
||||
echo "Uploading files to GitHub..."
|
||||
|
||||
|
@ -104,17 +104,16 @@ gh release upload --clobber v$QOWNNOTES_VERSION ${archiveFile}*
|
|||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
url="https://github.com/pbek/QOwnNotes/releases/download/v$QOWNNOTES_VERSION/${archiveFile}"
|
||||
echo "Checking if $url exists..."
|
||||
|
||||
# try to download file from github
|
||||
until curl --output /dev/null --silent --head --fail "$url"
|
||||
do
|
||||
echo "URL does not exist: $url..."
|
||||
sleep 2
|
||||
until curl --output /dev/null --silent --head --fail "$url"; do
|
||||
echo "URL does not exist: $url..."
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo "URL exists: $url"
|
||||
|
|
|
@ -8,12 +8,12 @@ APP=QOwnNotes
|
|||
# this directory name will also be shown in the title when the DMG is mounted
|
||||
TEMPDIR=$APP
|
||||
SIGNATURE="Patrizio Bekerle"
|
||||
NAME=`uname`
|
||||
NAME=$(uname)
|
||||
PLIST=$APP.app/Contents/Info.plist
|
||||
|
||||
if [ "$NAME" != "Darwin" ]; then
|
||||
echo "This is not a Mac"
|
||||
exit 1
|
||||
echo "This is not a Mac"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#env
|
||||
|
@ -50,8 +50,8 @@ ${QT_ROOT_DIR}/bin/macdeployqt ./$APP.app
|
|||
#macdeployqt ./$APP.app
|
||||
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to run macdeployqt"
|
||||
exit 1
|
||||
echo "Failed to run macdeployqt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
##
|
||||
|
@ -70,32 +70,32 @@ echo "Create $TEMPDIR"
|
|||
#Create a temporary directory if one doesn't exist
|
||||
mkdir -p $TEMPDIR
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create temporary folder"
|
||||
exit 1
|
||||
echo "Failed to create temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Clean $TEMPDIR"
|
||||
#Delete the contents of any previous builds
|
||||
rm -Rf ./$TEMPDIR/*
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Move application bundle"
|
||||
#Move the application to the temporary directory
|
||||
mv ./$APP.app ./$TEMPDIR
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to move application bundle"
|
||||
exit 1
|
||||
echo "Failed to move application bundle"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Create symbolic link"
|
||||
#Create a symbolic link to the applications folder
|
||||
ln -s /Applications ./$TEMPDIR/Applications
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create link to /Applications"
|
||||
exit 1
|
||||
echo "Failed to create link to /Applications"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Create new disk image"
|
||||
|
@ -103,15 +103,15 @@ echo "Create new disk image"
|
|||
rm -f ./$APP.dmg
|
||||
hdiutil create -srcfolder ./$TEMPDIR -ov -format UDBZ -fs HFS+ ./$APP.dmg
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create disk image"
|
||||
exit 1
|
||||
echo "Failed to create disk image"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# delete the temporary directory
|
||||
rm -Rf ./$TEMPDIR/*
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -7,12 +7,12 @@ APP=QOwnNotes
|
|||
# this directory name will also be shown in the title when the DMG is mounted
|
||||
TEMPDIR=$APP
|
||||
SIGNATURE="Patrizio Bekerle"
|
||||
NAME=`uname`
|
||||
NAME=$(uname)
|
||||
PLIST=$APP.app/Contents/Info.plist
|
||||
|
||||
if [ "$NAME" != "Darwin" ]; then
|
||||
echo "This is not a Mac"
|
||||
exit 1
|
||||
echo "This is not a Mac"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Changing bundle identifier"
|
||||
|
@ -42,8 +42,8 @@ cp ${QT_ROOT_DIR}/translations/qtbase_*.qm $APP.app/Contents/Resources
|
|||
echo "Calling macdeployqt"
|
||||
${QT_ROOT_DIR}/bin/macdeployqt ./$APP.app
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to run macdeployqt"
|
||||
exit 1
|
||||
echo "Failed to run macdeployqt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
##
|
||||
|
@ -62,32 +62,32 @@ echo "Create $TEMPDIR"
|
|||
#Create a temporary directory if one doesn't exist
|
||||
mkdir -p $TEMPDIR
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create temporary folder"
|
||||
exit 1
|
||||
echo "Failed to create temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Clean $TEMPDIR"
|
||||
#Delete the contents of any previous builds
|
||||
rm -Rf ./$TEMPDIR/*
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Move application bundle"
|
||||
#Move the application to the temporary directory
|
||||
mv ./$APP.app ./$TEMPDIR
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to move application bundle"
|
||||
exit 1
|
||||
echo "Failed to move application bundle"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Create symbolic link"
|
||||
#Create a symbolic link to the applications folder
|
||||
ln -s /Applications ./$TEMPDIR/Applications
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create link to /Applications"
|
||||
exit 1
|
||||
echo "Failed to create link to /Applications"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Create new disk image"
|
||||
|
@ -95,15 +95,15 @@ echo "Create new disk image"
|
|||
rm -f ./$APP.dmg
|
||||
hdiutil create -srcfolder ./$TEMPDIR -ov -format UDBZ -fs HFS+ ./$APP.dmg
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create disk image"
|
||||
exit 1
|
||||
echo "Failed to create disk image"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# delete the temporary directory
|
||||
rm -Rf ./$TEMPDIR/*
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -19,8 +19,8 @@ apps:
|
|||
qownnotes:
|
||||
command: desktop-launch $SNAP/usr/bin/QOwnNotes -style=Breeze --snap
|
||||
environment:
|
||||
DISABLE_WAYLAND: 1
|
||||
QT_QPA_PLATFORMTHEME: gtk3
|
||||
DISABLE_WAYLAND: 1
|
||||
QT_QPA_PLATFORMTHEME: gtk3
|
||||
# see https://docs.snapcraft.io/reference/interfaces
|
||||
plugs:
|
||||
- x11
|
||||
|
@ -28,7 +28,7 @@ apps:
|
|||
- network
|
||||
- network-bind
|
||||
- home
|
||||
# - kde-frameworks-5-plug
|
||||
# - kde-frameworks-5-plug
|
||||
- desktop
|
||||
- desktop-legacy
|
||||
- removable-media
|
||||
|
@ -103,38 +103,38 @@ parts:
|
|||
after: [desktop-qt6]
|
||||
|
||||
desktop-qt6:
|
||||
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
|
||||
source-subdir: qt
|
||||
plugin: make
|
||||
make-parameters: ["FLAVOR=qt6"]
|
||||
build-packages:
|
||||
- build-essential
|
||||
- qt6-base-dev
|
||||
- dpkg-dev
|
||||
stage-packages:
|
||||
- libxkbcommon0
|
||||
- fonts-ubuntu
|
||||
- dmz-cursor-theme
|
||||
- light-themes
|
||||
- adwaita-icon-theme
|
||||
- gnome-themes-standard
|
||||
- shared-mime-info
|
||||
- libqt6gui6
|
||||
- libgdk-pixbuf2.0-0
|
||||
- libqt6svg6 # for loading icon themes which are svg
|
||||
- locales-all
|
||||
- xdg-user-dirs
|
||||
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
|
||||
source-subdir: qt
|
||||
plugin: make
|
||||
make-parameters: ["FLAVOR=qt6"]
|
||||
build-packages:
|
||||
- build-essential
|
||||
- qt6-base-dev
|
||||
- dpkg-dev
|
||||
stage-packages:
|
||||
- libxkbcommon0
|
||||
- fonts-ubuntu
|
||||
- dmz-cursor-theme
|
||||
- light-themes
|
||||
- adwaita-icon-theme
|
||||
- gnome-themes-standard
|
||||
- shared-mime-info
|
||||
- libqt6gui6
|
||||
- libgdk-pixbuf2.0-0
|
||||
- libqt6svg6 # for loading icon themes which are svg
|
||||
- locales-all
|
||||
- xdg-user-dirs
|
||||
|
||||
plasma-integration:
|
||||
plugin: nil
|
||||
stage-packages:
|
||||
# - plasma-integration # causes the KDE file selector to be used that didn't work
|
||||
- kde-style-breeze
|
||||
- breeze-icon-theme
|
||||
# - kio # runtime slaves for kio, but does not seem to work
|
||||
# - plasma-integration # causes the KDE file selector to be used that didn't work
|
||||
- kde-style-breeze
|
||||
- breeze-icon-theme
|
||||
# - kio # runtime slaves for kio, but does not seem to work
|
||||
prime:
|
||||
- "-usr/share/wallpapers/*"
|
||||
- "-usr/share/fonts/*"
|
||||
- "-usr/share/wallpapers/*"
|
||||
- "-usr/share/fonts/*"
|
||||
|
||||
qt6-gtk-platform:
|
||||
plugin: nil
|
||||
|
|
|
@ -1,30 +1,13 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
cmake,
|
||||
qttools,
|
||||
qtbase,
|
||||
qtdeclarative,
|
||||
qtsvg,
|
||||
qtwayland,
|
||||
qtwebsockets,
|
||||
qtx11extras,
|
||||
makeWrapper,
|
||||
wrapQtAppsHook,
|
||||
botan2,
|
||||
pkg-config,
|
||||
xvfb-run,
|
||||
installShellFiles,
|
||||
}:
|
||||
{ lib, stdenv, fetchurl, cmake, qttools, qtbase, qtdeclarative, qtsvg, qtwayland
|
||||
, qtwebsockets, qtx11extras, makeWrapper, wrapQtAppsHook, botan2, pkg-config
|
||||
, xvfb-run, installShellFiles, }:
|
||||
|
||||
let
|
||||
pname = "qownnotes";
|
||||
appname = "QOwnNotes";
|
||||
# version = builtins.head (builtins.match "#define VERSION \"([0-9.]+)\"" (builtins.readFile ./src/version.h));
|
||||
version = "local-build";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
in stdenv.mkDerivation {
|
||||
inherit pname appname version;
|
||||
|
||||
src = builtins.path {
|
||||
|
@ -33,39 +16,26 @@ stdenv.mkDerivation {
|
|||
};
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
cmake
|
||||
qttools
|
||||
wrapQtAppsHook
|
||||
pkg-config
|
||||
installShellFiles
|
||||
]
|
||||
[ cmake qttools wrapQtAppsHook pkg-config installShellFiles ]
|
||||
++ lib.optionals stdenv.isLinux [ xvfb-run ]
|
||||
++ lib.optionals stdenv.isDarwin [ makeWrapper ];
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
qtwebsockets
|
||||
qtx11extras
|
||||
botan2
|
||||
] ++ lib.optionals stdenv.isLinux [ qtwayland ];
|
||||
buildInputs = [ qtbase qtdeclarative qtsvg qtwebsockets qtx11extras botan2 ]
|
||||
++ lib.optionals stdenv.isLinux [ qtwayland ];
|
||||
|
||||
cmakeFlags = [
|
||||
# "-DQON_QT6_BUILD=ON"
|
||||
"-DBUILD_WITH_SYSTEM_BOTAN=ON"
|
||||
];
|
||||
|
||||
postInstall =
|
||||
''
|
||||
# installShellCompletion --cmd ${appname} \
|
||||
# --bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
# --fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
# installShellCompletion --cmd ${pname} \
|
||||
# --bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
# --fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
''
|
||||
postInstall = ''
|
||||
# installShellCompletion --cmd ${appname} \
|
||||
# --bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
# --fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
# installShellCompletion --cmd ${pname} \
|
||||
# --bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
# --fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
''
|
||||
# Create a lowercase symlink for Linux
|
||||
+ lib.optionalString stdenv.isLinux ''
|
||||
ln -s $out/bin/${appname} $out/bin/${pname}
|
||||
|
@ -79,15 +49,13 @@ stdenv.mkDerivation {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Plain-text file notepad and todo-list manager with Markdown support and Nextcloud/ownCloud integration";
|
||||
description =
|
||||
"Plain-text file notepad and todo-list manager with Markdown support and Nextcloud/ownCloud integration";
|
||||
homepage = "https://www.qownnotes.org/";
|
||||
changelog = "https://www.qownnotes.org/changelog.html";
|
||||
downloadPage = "https://github.com/pbek/QOwnNotes/releases/tag/v${version}";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [
|
||||
pbek
|
||||
totoroot
|
||||
];
|
||||
maintainers = with maintainers; [ pbek totoroot ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,29 +1,13 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
qmake,
|
||||
qttools,
|
||||
qtbase,
|
||||
qtdeclarative,
|
||||
qtsvg,
|
||||
qtwayland,
|
||||
qtwebsockets,
|
||||
makeWrapper,
|
||||
wrapQtAppsHook,
|
||||
botan2,
|
||||
pkg-config,
|
||||
xvfb-run,
|
||||
installShellFiles,
|
||||
}:
|
||||
{ lib, stdenv, fetchurl, qmake, qttools, qtbase, qtdeclarative, qtsvg, qtwayland
|
||||
, qtwebsockets, makeWrapper, wrapQtAppsHook, botan2, pkg-config, xvfb-run
|
||||
, installShellFiles, }:
|
||||
|
||||
let
|
||||
pname = "qownnotes";
|
||||
appname = "QOwnNotes";
|
||||
# version = builtins.head (builtins.match "#define VERSION \"([0-9.]+)\"" (builtins.readFile ./src/version.h));
|
||||
version = "local-build";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
in stdenv.mkDerivation {
|
||||
inherit pname appname version;
|
||||
|
||||
src = builtins.path {
|
||||
|
@ -32,38 +16,24 @@ stdenv.mkDerivation {
|
|||
};
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
qmake
|
||||
qttools
|
||||
wrapQtAppsHook
|
||||
pkg-config
|
||||
installShellFiles
|
||||
]
|
||||
[ qmake qttools wrapQtAppsHook pkg-config installShellFiles ]
|
||||
++ lib.optionals stdenv.isLinux [ xvfb-run ]
|
||||
++ lib.optionals stdenv.isDarwin [ makeWrapper ];
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
qtwebsockets
|
||||
botan2
|
||||
] ++ lib.optionals stdenv.isLinux [ qtwayland ];
|
||||
buildInputs = [ qtbase qtdeclarative qtsvg qtwebsockets botan2 ]
|
||||
++ lib.optionals stdenv.isLinux [ qtwayland ];
|
||||
|
||||
qmakeFlags = [
|
||||
"USE_SYSTEM_BOTAN=1"
|
||||
];
|
||||
qmakeFlags = [ "USE_SYSTEM_BOTAN=1" ];
|
||||
|
||||
# Install shell completion on Linux (there is no xvfb-run on macOS)
|
||||
postInstall =
|
||||
lib.optionalString stdenv.isLinux ''
|
||||
installShellCompletion --cmd ${appname} \
|
||||
--bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
--fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
installShellCompletion --cmd ${pname} \
|
||||
--bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
--fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
''
|
||||
postInstall = lib.optionalString stdenv.isLinux ''
|
||||
installShellCompletion --cmd ${appname} \
|
||||
--bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
--fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
installShellCompletion --cmd ${pname} \
|
||||
--bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
--fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
''
|
||||
# Create a lowercase symlink for Linux
|
||||
+ lib.optionalString stdenv.isLinux ''
|
||||
ln -s $out/bin/${appname} $out/bin/${pname}
|
||||
|
@ -77,15 +47,13 @@ stdenv.mkDerivation {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Plain-text file notepad and todo-list manager with Markdown support and Nextcloud/ownCloud integration";
|
||||
description =
|
||||
"Plain-text file notepad and todo-list manager with Markdown support and Nextcloud/ownCloud integration";
|
||||
homepage = "https://www.qownnotes.org/";
|
||||
changelog = "https://www.qownnotes.org/changelog.html";
|
||||
downloadPage = "https://github.com/pbek/QOwnNotes/releases/tag/v${version}";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [
|
||||
pbek
|
||||
totoroot
|
||||
];
|
||||
maintainers = with maintainers; [ pbek totoroot ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,30 +1,13 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
qmake,
|
||||
qttools,
|
||||
qtbase,
|
||||
qtdeclarative,
|
||||
qtsvg,
|
||||
qtwayland,
|
||||
qtwebsockets,
|
||||
qtx11extras,
|
||||
makeWrapper,
|
||||
wrapQtAppsHook,
|
||||
botan2,
|
||||
pkg-config,
|
||||
xvfb-run,
|
||||
installShellFiles,
|
||||
}:
|
||||
{ lib, stdenv, fetchurl, qmake, qttools, qtbase, qtdeclarative, qtsvg, qtwayland
|
||||
, qtwebsockets, qtx11extras, makeWrapper, wrapQtAppsHook, botan2, pkg-config
|
||||
, xvfb-run, installShellFiles, }:
|
||||
|
||||
let
|
||||
pname = "qownnotes";
|
||||
appname = "QOwnNotes";
|
||||
# version = builtins.head (builtins.match "#define VERSION \"([0-9.]+)\"" (builtins.readFile ./src/version.h));
|
||||
version = "local-build";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
in stdenv.mkDerivation {
|
||||
inherit pname appname version;
|
||||
|
||||
src = builtins.path {
|
||||
|
@ -33,39 +16,23 @@ stdenv.mkDerivation {
|
|||
};
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
qmake
|
||||
qttools
|
||||
wrapQtAppsHook
|
||||
pkg-config
|
||||
installShellFiles
|
||||
xvfb-run
|
||||
]
|
||||
[ qmake qttools wrapQtAppsHook pkg-config installShellFiles xvfb-run ]
|
||||
++ lib.optionals stdenv.isLinux [ xvfb-run ]
|
||||
++ lib.optionals stdenv.isDarwin [ makeWrapper ];
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
qtwebsockets
|
||||
qtx11extras
|
||||
botan2
|
||||
] ++ lib.optionals stdenv.isLinux [ qtwayland ];
|
||||
buildInputs = [ qtbase qtdeclarative qtsvg qtwebsockets qtx11extras botan2 ]
|
||||
++ lib.optionals stdenv.isLinux [ qtwayland ];
|
||||
|
||||
qmakeFlags = [
|
||||
"USE_SYSTEM_BOTAN=1"
|
||||
];
|
||||
qmakeFlags = [ "USE_SYSTEM_BOTAN=1" ];
|
||||
|
||||
postInstall =
|
||||
''
|
||||
# installShellCompletion --cmd ${appname} \
|
||||
# --bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
# --fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
# installShellCompletion --cmd ${pname} \
|
||||
# --bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
# --fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
''
|
||||
postInstall = ''
|
||||
# installShellCompletion --cmd ${appname} \
|
||||
# --bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
# --fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
# installShellCompletion --cmd ${pname} \
|
||||
# --bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
# --fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
''
|
||||
# Create a lowercase symlink for Linux
|
||||
+ lib.optionalString stdenv.isLinux ''
|
||||
ln -s $out/bin/${appname} $out/bin/${pname}
|
||||
|
@ -79,15 +46,13 @@ stdenv.mkDerivation {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Plain-text file notepad and todo-list manager with Markdown support and Nextcloud/ownCloud integration";
|
||||
description =
|
||||
"Plain-text file notepad and todo-list manager with Markdown support and Nextcloud/ownCloud integration";
|
||||
homepage = "https://www.qownnotes.org/";
|
||||
changelog = "https://www.qownnotes.org/changelog.html";
|
||||
downloadPage = "https://github.com/pbek/QOwnNotes/releases/tag/v${version}";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [
|
||||
pbek
|
||||
totoroot
|
||||
];
|
||||
maintainers = with maintainers; [ pbek totoroot ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
# https://github.com/pbek/QOwnNotes/releases
|
||||
#
|
||||
|
||||
|
||||
# uncomment this if you want to force a version
|
||||
#QOWNNOTES_VERSION=16.06.12
|
||||
|
||||
|
@ -21,22 +20,22 @@ PROJECT_PATH="/tmp/QOwnNotes-slackware-$$"
|
|||
_QQwnNotesCheckSumVarFile="/tmp/QOwnNotes.checksum.vars"
|
||||
|
||||
if [[ ! -f ${_QQwnNotesCheckSumVarFile} ]]; then
|
||||
echo "${_QQwnNotesCheckSumVarFile} doesn't exist. build-github-src.sh must be run ahead of build script!"
|
||||
exit 1
|
||||
echo "${_QQwnNotesCheckSumVarFile} doesn't exist. build-github-src.sh must be run ahead of build script!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source ${_QQwnNotesCheckSumVarFile}
|
||||
|
||||
# check checksum variable from build-systems/github/build-github-src.sh
|
||||
if [ -z ${QOWNNOTES_ARCHIVE_MD5} ]; then
|
||||
echo "QOWNNOTES_ARCHIVE_MD5 was not set!"
|
||||
exit 1
|
||||
echo "QOWNNOTES_ARCHIVE_MD5 was not set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Started the slackware packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
mkdir $PROJECT_PATH
|
||||
|
@ -52,8 +51,8 @@ git clone --depth=1 git@github.com:pbek/QOwnNotes.git QOwnNotes -b $BRANCH
|
|||
cd QOwnNotes || exit 1
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
fi
|
||||
|
||||
buildSystemPath="../../../QOwnNotes/build-systems/slackware"
|
||||
|
@ -82,5 +81,5 @@ git push
|
|||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
# https://github.com/pbek/QOwnNotes/releases
|
||||
#
|
||||
|
||||
|
||||
# uncomment this if you want to force a version
|
||||
#QOWNNOTES_VERSION=16.07.6
|
||||
|
||||
|
@ -23,22 +22,22 @@ PROJECT_PATH="/tmp/QOwnNotes-launchpad-snap-$$"
|
|||
_QQwnNotesCheckSumVarFile="/tmp/QOwnNotes.checksum.vars"
|
||||
|
||||
if [[ ! -f ${_QQwnNotesCheckSumVarFile} ]]; then
|
||||
echo "${_QQwnNotesCheckSumVarFile} doesn't exist. build-github-src.sh must be run ahead of build script!"
|
||||
exit 1
|
||||
echo "${_QQwnNotesCheckSumVarFile} doesn't exist. build-github-src.sh must be run ahead of build script!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source ${_QQwnNotesCheckSumVarFile}
|
||||
|
||||
# check checksum variable from build-systems/github/build-github-src.sh
|
||||
if [ -z ${QOWNNOTES_ARCHIVE_SHA256} ]; then
|
||||
echo "QOWNNOTES_ARCHIVE_SHA256 was not set!"
|
||||
exit 1
|
||||
echo "QOWNNOTES_ARCHIVE_SHA256 was not set!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Started the Launchpad Snap packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
mkdir $PROJECT_PATH
|
||||
|
@ -54,8 +53,8 @@ git clone --depth=1 git@github.com:pbek/QOwnNotes.git QOwnNotes -b $BRANCH
|
|||
cd QOwnNotes || exit 1
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
fi
|
||||
|
||||
cd ../snap || exit 1
|
||||
|
@ -67,7 +66,6 @@ sed -i "s/VERSION-STRING/$QOWNNOTES_VERSION/g" snapcraft.yaml
|
|||
# replace the archive sha256 hash in the snapcraft.yaml file
|
||||
sed -i "s/ARCHIVE-SHA256/$QOWNNOTES_ARCHIVE_SHA256/g" snapcraft.yaml
|
||||
|
||||
|
||||
echo "Committing changes..."
|
||||
git add -A
|
||||
git commit -m "releasing version $QOWNNOTES_VERSION" -a
|
||||
|
@ -75,5 +73,5 @@ git push
|
|||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
# https://github.com/pbek/QOwnNotes/releases
|
||||
#
|
||||
|
||||
|
||||
# uncomment this if you want to force a version
|
||||
#QOWNNOTES_VERSION=16.07.3
|
||||
|
||||
|
@ -21,11 +20,10 @@ BRANCH=main
|
|||
PROJECT_PATH="/tmp/QOwnNotes-local-snap-$$"
|
||||
CUR_DIR=$(pwd)
|
||||
|
||||
|
||||
echo "Started the Snap building process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
mkdir $PROJECT_PATH
|
||||
|
@ -38,8 +36,8 @@ git clone --depth=1 https://github.com/pbek/QOwnNotes.git QOwnNotes -b $BRANCH
|
|||
cd QOwnNotes
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
fi
|
||||
|
||||
cd build-systems/snap/snapcraft
|
||||
|
@ -64,5 +62,5 @@ snapcraft push qownnotes_${QOWNNOTES_VERSION}_amd64.snap --release stable
|
|||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -8,12 +8,10 @@
|
|||
[Screenshots](https://www.qownnotes.org/getting-started/overview.html) |
|
||||
[ownCloud Apps page](https://apps.owncloud.com/content/show.php?content=168497)
|
||||
|
||||
|
||||
[QOwnNotes](https://www.qownnotes.org) is the **open source notepad** with **markdown support** and **todo list manager** for **GNU/Linux**, **macOS** and **Windows**, that works together with the default [**notes application**](https://github.com/owncloud/notes) of [**ownCloud**](http://owncloud.org/).
|
||||
|
||||
## Building the qownnotes snap
|
||||
|
||||
Just run `snapcraft` to build the snap. It uses C++ and Qt5 with qmake.
|
||||
|
||||
|
||||
You can also visit [QOwnNotes on GitHub](https://github.com/pbek/QOwnNotes).
|
||||
|
|
|
@ -16,15 +16,15 @@ apps:
|
|||
# "=" is not allowed in the command anymore in core20
|
||||
command: "./wrapper.sh"
|
||||
environment:
|
||||
DISABLE_WAYLAND: 1
|
||||
QT_QPA_PLATFORMTHEME: gtk3
|
||||
GIT_EXEC_PATH: $SNAP/usr/lib/git-core
|
||||
GIT_TEMPLATE_DIR: $SNAP/usr/share/git-core/templates
|
||||
GIT_AUTHOR_NAME: "QOwnNotes"
|
||||
GIT_AUTHOR_EMAIL: "snap@qownnotes.git"
|
||||
GIT_COMMITTER_NAME: "QOwnNotes"
|
||||
GIT_COMMITTER_EMAIL: "snap@qownnotes.git"
|
||||
EMAIL: "snap@qownnotes.git"
|
||||
DISABLE_WAYLAND: 1
|
||||
QT_QPA_PLATFORMTHEME: gtk3
|
||||
GIT_EXEC_PATH: $SNAP/usr/lib/git-core
|
||||
GIT_TEMPLATE_DIR: $SNAP/usr/share/git-core/templates
|
||||
GIT_AUTHOR_NAME: "QOwnNotes"
|
||||
GIT_AUTHOR_EMAIL: "snap@qownnotes.git"
|
||||
GIT_COMMITTER_NAME: "QOwnNotes"
|
||||
GIT_COMMITTER_EMAIL: "snap@qownnotes.git"
|
||||
EMAIL: "snap@qownnotes.git"
|
||||
# see https://docs.snapcraft.io/reference/interfaces
|
||||
plugs:
|
||||
- x11
|
||||
|
@ -32,7 +32,7 @@ apps:
|
|||
- network
|
||||
- network-bind
|
||||
- home
|
||||
# - kde-frameworks-5-plug
|
||||
# - kde-frameworks-5-plug
|
||||
- desktop
|
||||
- desktop-legacy
|
||||
- removable-media
|
||||
|
@ -65,12 +65,12 @@ parts:
|
|||
source: https://github.com/pbek/QOwnNotes/releases/download/vVERSION-STRING/qownnotes-VERSION-STRING.tar.xz
|
||||
source-checksum: sha256/ARCHIVE-SHA256
|
||||
# see https://snapcraft.io/docs/qmake-plugin
|
||||
# plugin: qmake
|
||||
# plugin: qmake
|
||||
plugin: make
|
||||
# qmake-parameters:
|
||||
# - CONFIG+=release
|
||||
# - CONFIG+=snapcraft
|
||||
# qmake-project-file: ./src/QOwnNotes.pro
|
||||
# qmake-parameters:
|
||||
# - CONFIG+=release
|
||||
# - CONFIG+=snapcraft
|
||||
# qmake-project-file: ./src/QOwnNotes.pro
|
||||
override-build: |
|
||||
export QT_SELECT=qt5
|
||||
# remove the default desktop file
|
||||
|
@ -108,39 +108,39 @@ parts:
|
|||
after: [desktop-qt5]
|
||||
|
||||
desktop-qt5:
|
||||
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
|
||||
source-subdir: qt
|
||||
plugin: make
|
||||
make-parameters: ["FLAVOR=qt5"]
|
||||
build-packages:
|
||||
- build-essential
|
||||
- qtbase5-dev
|
||||
- dpkg-dev
|
||||
stage-packages:
|
||||
- libxkbcommon0
|
||||
# - ttf-ubuntu-font-family
|
||||
- dmz-cursor-theme
|
||||
- light-themes
|
||||
- adwaita-icon-theme
|
||||
- gnome-themes-standard
|
||||
- shared-mime-info
|
||||
- libqt5gui5
|
||||
- libgdk-pixbuf2.0-0
|
||||
# - libgtk2.0-0 # snapcraft was complaining about missing libgtk-x11-2.0.so.0
|
||||
- libqt5svg5 # for loading icon themes which are svg
|
||||
# - appmenu-qt5
|
||||
- locales-all
|
||||
- xdg-user-dirs
|
||||
- fcitx-frontend-qt5
|
||||
- libglib2.0-0
|
||||
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
|
||||
source-subdir: qt
|
||||
plugin: make
|
||||
make-parameters: ["FLAVOR=qt5"]
|
||||
build-packages:
|
||||
- build-essential
|
||||
- qtbase5-dev
|
||||
- dpkg-dev
|
||||
stage-packages:
|
||||
- libxkbcommon0
|
||||
# - ttf-ubuntu-font-family
|
||||
- dmz-cursor-theme
|
||||
- light-themes
|
||||
- adwaita-icon-theme
|
||||
- gnome-themes-standard
|
||||
- shared-mime-info
|
||||
- libqt5gui5
|
||||
- libgdk-pixbuf2.0-0
|
||||
# - libgtk2.0-0 # snapcraft was complaining about missing libgtk-x11-2.0.so.0
|
||||
- libqt5svg5 # for loading icon themes which are svg
|
||||
# - appmenu-qt5
|
||||
- locales-all
|
||||
- xdg-user-dirs
|
||||
- fcitx-frontend-qt5
|
||||
- libglib2.0-0
|
||||
|
||||
plasma-integration:
|
||||
plugin: nil
|
||||
stage-packages:
|
||||
# - plasma-integration # causes the KDE file selector to be used that didn't work
|
||||
# - plasma-integration # causes the KDE file selector to be used that didn't work
|
||||
- kde-style-breeze
|
||||
- breeze-icon-theme
|
||||
# - kio # runtime slaves for kio, but does not seem to work
|
||||
# - kio # runtime slaves for kio, but does not seem to work
|
||||
prime:
|
||||
- "-usr/share/wallpapers/*"
|
||||
- "-usr/share/fonts/*"
|
||||
|
|
|
@ -20,11 +20,10 @@ BRANCH=main
|
|||
|
||||
PROJECT_PATH="/tmp/QOwnNotes-sourceforge-$$"
|
||||
|
||||
|
||||
echo "Started the SourceForge packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
mkdir $PROJECT_PATH
|
||||
|
@ -46,15 +45,15 @@ lrelease src/QOwnNotes.pro
|
|||
rm -Rf .git
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
else
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" > src/version.h
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" >src/version.h
|
||||
fi
|
||||
|
||||
# set the release string
|
||||
echo "#define RELEASE \"SourceForge\"" > src/release.h
|
||||
echo '#define RELEASE "SourceForge"' >src/release.h
|
||||
|
||||
echo "Using version $QOWNNOTES_VERSION..."
|
||||
|
||||
|
@ -75,18 +74,18 @@ archiveFile="$qownnotesSrcDir.tar.xz"
|
|||
echo "Creating archive $archiveFile..."
|
||||
tar -cJf $archiveFile $qownnotesSrcDir
|
||||
|
||||
md5sum $archiveFile > $archiveFile.md5
|
||||
sha256sum $archiveFile | awk '{ print $1 }' > $archiveFile.sha256
|
||||
sha512sum $archiveFile | awk '{ print $1 }' > $archiveFile.sha512
|
||||
md5sum $archiveFile >$archiveFile.md5
|
||||
sha256sum $archiveFile | awk '{ print $1 }' >$archiveFile.sha256
|
||||
sha512sum $archiveFile | awk '{ print $1 }' >$archiveFile.sha512
|
||||
|
||||
remotePath="patbek@frs.sourceforge.net:/home/frs/project/qownnotes/src"
|
||||
sourceForgeReadme="sourceforge-readme.md"
|
||||
|
||||
# generate the readme for sourceforge with a screenshot from GitHub
|
||||
cat README.md | sed "s/screenshots\\/screenshot.png/https:\\/\\/raw.githubusercontent.com\\/pbek\\/QOwnNotes\\/main\\/screenshots\\/screenshot.png/g" >> ${sourceForgeReadme}
|
||||
echo >> ${sourceForgeReadme}
|
||||
echo >> ${sourceForgeReadme}
|
||||
cat CHANGELOG.md >> ${sourceForgeReadme}
|
||||
cat README.md | sed 's/screenshots\/screenshot.png/https:\/\/raw.githubusercontent.com\/pbek\/QOwnNotes\/main\/screenshots\/screenshot.png/g' >>${sourceForgeReadme}
|
||||
echo >>${sourceForgeReadme}
|
||||
echo >>${sourceForgeReadme}
|
||||
cat CHANGELOG.md >>${sourceForgeReadme}
|
||||
|
||||
echo "Uploading files to SourceForge..."
|
||||
|
||||
|
@ -102,5 +101,5 @@ rsync -ahv --progress ${archiveFile}* ${remotePath}
|
|||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -25,11 +25,10 @@ BRANCH=release
|
|||
|
||||
PROJECT_PATH="/tmp/QOwnNotes-tuxfamily-$$"
|
||||
|
||||
|
||||
echo "Started the TuxFamily packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
mkdir $PROJECT_PATH
|
||||
|
@ -48,15 +47,15 @@ lrelease src/QOwnNotes.pro
|
|||
rm -Rf .git
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
else
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" > src/version.h
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" >src/version.h
|
||||
fi
|
||||
|
||||
# set the release string
|
||||
echo "#define RELEASE \"TuxFamily\"" > src/release.h
|
||||
echo '#define RELEASE "TuxFamily"' >src/release.h
|
||||
|
||||
echo "Using version $QOWNNOTES_VERSION..."
|
||||
|
||||
|
@ -77,10 +76,10 @@ archiveFile="$qownnotesSrcDir.tar.xz"
|
|||
echo "Creating archive $archiveFile..."
|
||||
tar -cJf $archiveFile $qownnotesSrcDir
|
||||
|
||||
QOWNNOTES_ARCHIVE_MD5=`md5sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.md5`
|
||||
QOWNNOTES_ARCHIVE_SHA256=`sha256sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.sha256`
|
||||
QOWNNOTES_ARCHIVE_SHA512=`sha512sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.sha512`
|
||||
QOWNNOTES_ARCHIVE_SIZE=`stat -c "%s" ${archiveFile}`
|
||||
QOWNNOTES_ARCHIVE_MD5=$(md5sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.md5)
|
||||
QOWNNOTES_ARCHIVE_SHA256=$(sha256sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.sha256)
|
||||
QOWNNOTES_ARCHIVE_SHA512=$(sha512sum ${archiveFile} | awk '{ print $1 }' | tee ${archiveFile}.sha512)
|
||||
QOWNNOTES_ARCHIVE_SIZE=$(stat -c "%s" ${archiveFile})
|
||||
|
||||
echo ""
|
||||
echo "Sums:"
|
||||
|
@ -93,19 +92,19 @@ echo $QOWNNOTES_ARCHIVE_SIZE
|
|||
|
||||
# write temporary checksum variable file for the deployment scripts
|
||||
_QQwnNotesCheckSumVarFile="/tmp/QOwnNotes.checksum.vars"
|
||||
echo "QOWNNOTES_ARCHIVE_MD5=$QOWNNOTES_ARCHIVE_MD5" > ${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SHA256=$QOWNNOTES_ARCHIVE_SHA256" >> ${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SHA512=$QOWNNOTES_ARCHIVE_SHA512" >> ${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SIZE=$QOWNNOTES_ARCHIVE_SIZE" >> ${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_MD5=$QOWNNOTES_ARCHIVE_MD5" >${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SHA256=$QOWNNOTES_ARCHIVE_SHA256" >>${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SHA512=$QOWNNOTES_ARCHIVE_SHA512" >>${_QQwnNotesCheckSumVarFile}
|
||||
echo "QOWNNOTES_ARCHIVE_SIZE=$QOWNNOTES_ARCHIVE_SIZE" >>${_QQwnNotesCheckSumVarFile}
|
||||
|
||||
remotePath="pbek@ssh.tuxfamily.org:/home/qownnotes/qownnotes-repository/src"
|
||||
tuxFamilyReadme="tuxfamily-readme.md"
|
||||
|
||||
# generate the readme for tuxfamily with a screenshot from GitHub
|
||||
cat README.md | sed "s/screenshots\\/screenshot.png/https:\\/\\/raw.githubusercontent.com\\/pbek\\/QOwnNotes\\/main\\/screenshots\\/screenshot.png/g" >> ${tuxFamilyReadme}
|
||||
echo >> ${tuxFamilyReadme}
|
||||
echo >> ${tuxFamilyReadme}
|
||||
cat CHANGELOG.md >> ${tuxFamilyReadme}
|
||||
cat README.md | sed 's/screenshots\/screenshot.png/https:\/\/raw.githubusercontent.com\/pbek\/QOwnNotes\/main\/screenshots\/screenshot.png/g' >>${tuxFamilyReadme}
|
||||
echo >>${tuxFamilyReadme}
|
||||
echo >>${tuxFamilyReadme}
|
||||
cat CHANGELOG.md >>${tuxFamilyReadme}
|
||||
|
||||
echo "Uploading files to TuxFamily..."
|
||||
|
||||
|
@ -121,17 +120,16 @@ rsync -ahv --progress ${archiveFile}* ${remotePath}
|
|||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
url="https://download.tuxfamily.org/qownnotes/src/${archiveFile}"
|
||||
echo "Checking if $url exists..."
|
||||
|
||||
# try to download file from tuxfamily
|
||||
until curl --output /dev/null --silent --head --fail "$url"
|
||||
do
|
||||
echo "URL does not exist: $url..."
|
||||
sleep 2
|
||||
until curl --output /dev/null --silent --head --fail "$url"; do
|
||||
echo "URL does not exist: $url..."
|
||||
sleep 2
|
||||
done
|
||||
|
||||
echo "URL exists: $url"
|
||||
|
|
52
crowdin.yaml
52
crowdin.yaml
|
@ -16,38 +16,30 @@ project_id: 158883
|
|||
|
||||
preserve_hierarchy: true
|
||||
files:
|
||||
-
|
||||
# source files filter
|
||||
source: '/src/languages/QOwnNotes_en.ts'
|
||||
- # source files filter
|
||||
source: "/src/languages/QOwnNotes_en.ts"
|
||||
# where translations live
|
||||
translation: '/src/languages/QOwnNotes_%locale_with_underscore%.ts'
|
||||
translation: "/src/languages/QOwnNotes_%locale_with_underscore%.ts"
|
||||
#translation: '/src/languages/QOwnNotes_%locale%.ts'
|
||||
#translation: 'src/languages/QOwnNotes_%two_letters_code%.ts'
|
||||
#"languages_mapping" : {
|
||||
#"two_letters_code" : {
|
||||
#"pt" : "pt_PT",
|
||||
#"pt-BR" : "pt_BR"
|
||||
#}
|
||||
#"two_letters_code" : {
|
||||
#"pt" : "pt_PT",
|
||||
#"pt-BR" : "pt_BR"
|
||||
#}
|
||||
dest: '/QOwnNotes_en.ts'
|
||||
-
|
||||
source: '/webpage/src/index.md'
|
||||
translation: '/webpage/src/%two_letters_code%/%original_file_name%'
|
||||
-
|
||||
source: '/webpage/src/contributing/*.md'
|
||||
translation: '/webpage/src/%two_letters_code%/contributing/%original_file_name%'
|
||||
-
|
||||
source: '/webpage/src/editor/*.md'
|
||||
translation: '/webpage/src/%two_letters_code%/editor/%original_file_name%'
|
||||
-
|
||||
source: '/webpage/src/faq/*.md'
|
||||
translation: '/webpage/src/%two_letters_code%/faq/%original_file_name%'
|
||||
-
|
||||
source: '/webpage/src/getting-started/*.md'
|
||||
translation: '/webpage/src/%two_letters_code%/getting-started/%original_file_name%'
|
||||
-
|
||||
source: '/webpage/src/installation/*.md'
|
||||
translation: '/webpage/src/%two_letters_code%/installation/%original_file_name%'
|
||||
-
|
||||
source: '/webpage/src/scripting/*.md'
|
||||
translation: '/webpage/src/%two_letters_code%/scripting/%original_file_name%'
|
||||
#}
|
||||
dest: "/QOwnNotes_en.ts"
|
||||
- source: "/webpage/src/index.md"
|
||||
translation: "/webpage/src/%two_letters_code%/%original_file_name%"
|
||||
- source: "/webpage/src/contributing/*.md"
|
||||
translation: "/webpage/src/%two_letters_code%/contributing/%original_file_name%"
|
||||
- source: "/webpage/src/editor/*.md"
|
||||
translation: "/webpage/src/%two_letters_code%/editor/%original_file_name%"
|
||||
- source: "/webpage/src/faq/*.md"
|
||||
translation: "/webpage/src/%two_letters_code%/faq/%original_file_name%"
|
||||
- source: "/webpage/src/getting-started/*.md"
|
||||
translation: "/webpage/src/%two_letters_code%/getting-started/%original_file_name%"
|
||||
- source: "/webpage/src/installation/*.md"
|
||||
translation: "/webpage/src/%two_letters_code%/installation/%original_file_name%"
|
||||
- source: "/webpage/src/scripting/*.md"
|
||||
translation: "/webpage/src/%two_letters_code%/scripting/%original_file_name%"
|
||||
|
|
71
default.nix
71
default.nix
|
@ -1,29 +1,13 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
cmake,
|
||||
qttools,
|
||||
qtbase,
|
||||
qtdeclarative,
|
||||
qtsvg,
|
||||
qtwayland,
|
||||
qtwebsockets,
|
||||
makeWrapper,
|
||||
wrapQtAppsHook,
|
||||
botan2,
|
||||
pkg-config,
|
||||
xvfb-run,
|
||||
installShellFiles,
|
||||
}:
|
||||
{ lib, stdenv, fetchurl, cmake, qttools, qtbase, qtdeclarative, qtsvg, qtwayland
|
||||
, qtwebsockets, makeWrapper, wrapQtAppsHook, botan2, pkg-config, xvfb-run
|
||||
, installShellFiles, }:
|
||||
|
||||
let
|
||||
pname = "qownnotes";
|
||||
appname = "QOwnNotes";
|
||||
# version = builtins.head (builtins.match "#define VERSION \"([0-9.]+)\"" (builtins.readFile ./src/version.h));
|
||||
version = "local-build";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
in stdenv.mkDerivation {
|
||||
inherit pname appname version;
|
||||
|
||||
src = builtins.path {
|
||||
|
@ -32,39 +16,24 @@ stdenv.mkDerivation {
|
|||
};
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
cmake
|
||||
qttools
|
||||
wrapQtAppsHook
|
||||
pkg-config
|
||||
installShellFiles
|
||||
]
|
||||
[ cmake qttools wrapQtAppsHook pkg-config installShellFiles ]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [ xvfb-run ]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ makeWrapper ];
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
qtwebsockets
|
||||
botan2
|
||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [ qtwayland ];
|
||||
buildInputs = [ qtbase qtdeclarative qtsvg qtwebsockets botan2 ]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [ qtwayland ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DQON_QT6_BUILD=ON"
|
||||
"-DBUILD_WITH_SYSTEM_BOTAN=ON"
|
||||
];
|
||||
cmakeFlags = [ "-DQON_QT6_BUILD=ON" "-DBUILD_WITH_SYSTEM_BOTAN=ON" ];
|
||||
|
||||
# Install shell completion on Linux (with xvfb-run)
|
||||
postInstall =
|
||||
lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
installShellCompletion --cmd ${appname} \
|
||||
--bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
--fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
installShellCompletion --cmd ${pname} \
|
||||
--bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
--fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
''
|
||||
postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
installShellCompletion --cmd ${appname} \
|
||||
--bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
--fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
installShellCompletion --cmd ${pname} \
|
||||
--bash <(xvfb-run $out/bin/${appname} --completion bash) \
|
||||
--fish <(xvfb-run $out/bin/${appname} --completion fish)
|
||||
''
|
||||
# Install shell completion on macOS
|
||||
+ lib.optionalString stdenv.isDarwin ''
|
||||
installShellCompletion --cmd ${pname} \
|
||||
|
@ -83,15 +52,13 @@ stdenv.mkDerivation {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Plain-text file notepad and todo-list manager with Markdown support and Nextcloud/ownCloud integration";
|
||||
description =
|
||||
"Plain-text file notepad and todo-list manager with Markdown support and Nextcloud/ownCloud integration";
|
||||
homepage = "https://www.qownnotes.org/";
|
||||
changelog = "https://www.qownnotes.org/changelog.html";
|
||||
downloadPage = "https://github.com/pbek/QOwnNotes/releases/tag/v${version}";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [
|
||||
pbek
|
||||
totoroot
|
||||
];
|
||||
maintainers = with maintainers; [ pbek totoroot ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
38
flake.nix
38
flake.nix
|
@ -3,40 +3,30 @@
|
|||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs-qt5153.url = "github:nixos/nixpkgs/72bbea9db7d727ed044e60b5f5febc60a3c5c955";
|
||||
nixpkgs-qt5153.url =
|
||||
"github:nixos/nixpkgs/72bbea9db7d727ed044e60b5f5febc60a3c5c955";
|
||||
# systems.url = "github:nix-systems/default";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
nixpkgs-qt5153,
|
||||
}:
|
||||
outputs = { self, nixpkgs, nixpkgs-qt5153, }:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
pkgs-qt5153 = nixpkgs-qt5153.legacyPackages.${system};
|
||||
in
|
||||
{
|
||||
in {
|
||||
packages.${system} = {
|
||||
qownnotes-qt6 = pkgs.qt6Packages.callPackage (import ./default.nix) { };
|
||||
qownnotes-qt5 = pkgs.libsForQt5.callPackage (import ./build-systems/nix/default-qt5.nix) { };
|
||||
qownnotes-qt5153 =
|
||||
pkgs-qt5153.libsForQt5.callPackage (import ./build-systems/nix/default-qt5.nix)
|
||||
{ };
|
||||
qownnotes-qt5 = pkgs.libsForQt5.callPackage
|
||||
(import ./build-systems/nix/default-qt5.nix) { };
|
||||
qownnotes-qt5153 = pkgs-qt5153.libsForQt5.callPackage
|
||||
(import ./build-systems/nix/default-qt5.nix) { };
|
||||
default = pkgs.qt6Packages.callPackage (import ./default.nix) { };
|
||||
};
|
||||
|
||||
devShell.x86_64-linux =
|
||||
with import nixpkgs {
|
||||
system = "x86_64-linux";
|
||||
};
|
||||
devShell.x86_64-linux = with import nixpkgs { system = "x86_64-linux"; };
|
||||
mkShell {
|
||||
nativeBuildInputs =
|
||||
with nixpkgs;
|
||||
with qt6;
|
||||
[
|
||||
nativeBuildInputs = with nixpkgs;
|
||||
with qt6; [
|
||||
gnumake
|
||||
crowdin-cli
|
||||
cmakeWithGui
|
||||
|
@ -50,10 +40,8 @@
|
|||
gh
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
with nixpkgs;
|
||||
with qt6;
|
||||
[
|
||||
buildInputs = with nixpkgs;
|
||||
with qt6; [
|
||||
qtbase
|
||||
qtwebsockets
|
||||
qtdeclarative
|
||||
|
|
|
@ -8,42 +8,42 @@ QTDIR="/Applications/Qt/5.4/clang_64"
|
|||
APP=QOwnNotes
|
||||
TEMPDIR=$APP-tmp
|
||||
SIGNATURE="Patrizio Bekerle"
|
||||
NAME=`uname`
|
||||
NAME=$(uname)
|
||||
|
||||
if [ "$NAME" != "Darwin" ]; then
|
||||
echo "This is not a Mac"
|
||||
exit 1
|
||||
echo "This is not a Mac"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# use macdeployqt to deploy the application
|
||||
$QTDIR/bin/macdeployqt ./$APP.app
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to run macdeployqt"
|
||||
exit 1
|
||||
echo "Failed to run macdeployqt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Create $TEMPDIR"
|
||||
#Create a temporary directory if one doesn't exist
|
||||
mkdir -p $TEMPDIR
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create temporary folder"
|
||||
exit 1
|
||||
echo "Failed to create temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Clean $TEMPDIR"
|
||||
#Delete the contents of any previous builds
|
||||
rm -Rf ./$TEMPDIR/*
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Move application bundle"
|
||||
#Move the application to the temporary directory
|
||||
mv ./$APP.app ./$TEMPDIR
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to move application bundle"
|
||||
exit 1
|
||||
echo "Failed to move application bundle"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#echo "Sign the code"
|
||||
|
@ -59,8 +59,8 @@ echo "Create symbolic link"
|
|||
#Create a symbolic link to the applications folder
|
||||
ln -s /Applications ./$TEMPDIR/Applications
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create link to /Applications"
|
||||
exit 1
|
||||
echo "Failed to create link to /Applications"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Create new disk image"
|
||||
|
@ -68,15 +68,15 @@ echo "Create new disk image"
|
|||
rm -f ./$APP.dmg
|
||||
hdiutil create -srcfolder ./$TEMPDIR -ov -format UDBZ -fs HFS+ ./$APP.dmg
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create disk image"
|
||||
exit 1
|
||||
echo "Failed to create disk image"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# delete the temporary directory
|
||||
rm -Rf ./$TEMPDIR/*
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -13,63 +13,63 @@ APP_NAME="QOwnNotes"
|
|||
|
||||
# Check if input file exists
|
||||
if [ ! -f "$INPUT_SVG" ]; then
|
||||
echo "Error: Input file '$INPUT_SVG' not found!"
|
||||
exit 1
|
||||
echo "Error: Input file '$INPUT_SVG' not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#Check if dark input file exists
|
||||
if [ ! -f "$INPUT_DARK_SVG" ]; then
|
||||
echo "Error: Input file '$INPUT_DARK_SVG' not found!"
|
||||
exit 1
|
||||
echo "Error: Input file '$INPUT_DARK_SVG' not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to convert images
|
||||
convert_icon_png() {
|
||||
local size=$1
|
||||
local output_file=$2
|
||||
local input_file=$3
|
||||
local size=$1
|
||||
local output_file=$2
|
||||
local input_file=$3
|
||||
|
||||
# Use fallback to $INPUT_SVG if no local input file is provided
|
||||
if [ -z "$input_file" ]; then
|
||||
input_file=$INPUT_SVG
|
||||
fi
|
||||
# Use fallback to $INPUT_SVG if no local input file is provided
|
||||
if [ -z "$input_file" ]; then
|
||||
input_file=$INPUT_SVG
|
||||
fi
|
||||
|
||||
echo "PNG converting to ${size}x${size} -> ${output_file}"
|
||||
# magick "$input_file" -resize "${size}x${size}" "$output_file"
|
||||
rsvg-convert -w "$size" -h "$size" "$input_file" -o "$output_file"
|
||||
echo "PNG converting to ${size}x${size} -> ${output_file}"
|
||||
# magick "$input_file" -resize "${size}x${size}" "$output_file"
|
||||
rsvg-convert -w "$size" -h "$size" "$input_file" -o "$output_file"
|
||||
}
|
||||
|
||||
convert_icon_ico() {
|
||||
local output_file=$1
|
||||
local input_file=$2
|
||||
local output_file=$1
|
||||
local input_file=$2
|
||||
|
||||
# Use fallback to $INPUT_SVG if no local input file is provided
|
||||
if [ -z "$input_file" ]; then
|
||||
input_file=$INPUT_SVG
|
||||
fi
|
||||
# Use fallback to $INPUT_SVG if no local input file is provided
|
||||
if [ -z "$input_file" ]; then
|
||||
input_file=$INPUT_SVG
|
||||
fi
|
||||
|
||||
echo "ICO converting to -> ${output_file}"
|
||||
magick -density 300 -define icon:auto-resize=256,128,96,64,48,32,16 -background none "$input_file" "$output_file"
|
||||
echo "ICO converting to -> ${output_file}"
|
||||
magick -density 300 -define icon:auto-resize=256,128,96,64,48,32,16 -background none "$input_file" "$output_file"
|
||||
}
|
||||
|
||||
convert_icon_icns() {
|
||||
local output_file=$1
|
||||
local input_file=$2
|
||||
local output_file=$1
|
||||
local input_file=$2
|
||||
|
||||
# Use fallback to $INPUT_SVG if no local input file is provided
|
||||
if [ -z "$input_file" ]; then
|
||||
input_file=$INPUT_SVG
|
||||
fi
|
||||
# Use fallback to $INPUT_SVG if no local input file is provided
|
||||
if [ -z "$input_file" ]; then
|
||||
input_file=$INPUT_SVG
|
||||
fi
|
||||
|
||||
echo "ICNS converting to -> ${output_file}"
|
||||
echo "ICNS converting to -> ${output_file}"
|
||||
|
||||
mkdir iconset
|
||||
for size in 16 32 64 128 256 512 1024; do
|
||||
rsvg-convert -w $size -h $size $INPUT_SVG -o iconset/icon_${size}x${size}.png
|
||||
done
|
||||
mkdir iconset
|
||||
for size in 16 32 64 128 256 512 1024; do
|
||||
rsvg-convert -w $size -h $size $INPUT_SVG -o iconset/icon_${size}x${size}.png
|
||||
done
|
||||
|
||||
png2icns "$output_file" iconset/*.png
|
||||
rm -rf iconset
|
||||
png2icns "$output_file" iconset/*.png
|
||||
rm -rf iconset
|
||||
}
|
||||
|
||||
# Generate all sizes
|
||||
|
@ -85,7 +85,7 @@ convert_icon_ico "../src/QOwnNotes.ico"
|
|||
|
||||
# Generate app icons
|
||||
for size in "${SIZES_APP[@]}"; do
|
||||
convert_icon_png ${size} "${SRC_IMAGES_DIR}/icons/${size}x${size}/apps/${APP_NAME}.png"
|
||||
convert_icon_png ${size} "${SRC_IMAGES_DIR}/icons/${size}x${size}/apps/${APP_NAME}.png"
|
||||
done
|
||||
|
||||
# Copy to src/images
|
||||
|
|
|
@ -21,11 +21,10 @@ BRANCH=main
|
|||
DATE=$(LC_ALL=C date +'%a, %d %b %Y %T %z')
|
||||
PROJECT_PATH="/tmp/QOwnNotes-$$"
|
||||
|
||||
|
||||
echo "Started the OBS source packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
mkdir $PROJECT_PATH
|
||||
|
@ -47,15 +46,15 @@ lrelease src/QOwnNotes.pro
|
|||
rm -Rf .git
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
else
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" > src/version.h
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" >src/version.h
|
||||
fi
|
||||
|
||||
# set the release string
|
||||
echo "#define RELEASE \"OBS\"" > src/release.h
|
||||
echo '#define RELEASE "OBS"' >src/release.h
|
||||
|
||||
# replace the version in the spec file
|
||||
sed -i "s/VERSION-STRING/$QOWNNOTES_VERSION/g" obs/qownnotes.spec
|
||||
|
@ -84,21 +83,21 @@ mv src $qownnotesSrcDir
|
|||
changelogPath=obs/qownnotes.bin
|
||||
|
||||
# create the changelog file
|
||||
echo "-------------------------------------------------------------------" > $changelogPath
|
||||
echo "$DATE - patrizio@bekerle.com" >> $changelogPath
|
||||
echo "" >> $changelogPath
|
||||
echo "- $changelogText" >> $changelogPath
|
||||
echo "-------------------------------------------------------------------" >$changelogPath
|
||||
echo "$DATE - patrizio@bekerle.com" >>$changelogPath
|
||||
echo "" >>$changelogPath
|
||||
echo "- $changelogText" >>$changelogPath
|
||||
|
||||
cat $changelogPath
|
||||
|
||||
# create the Debian changelog file
|
||||
debChangelogPath=obs/debian.changelog
|
||||
versionPart="$QOWNNOTES_VERSION-1debian"
|
||||
echo "qownnotes ($versionPart) debian; urgency=low" > $debChangelogPath
|
||||
echo "" >> $debChangelogPath
|
||||
echo " * $changelogText" >> $debChangelogPath
|
||||
echo "" >> $debChangelogPath
|
||||
echo " -- Patrizio Bekerle <patrizio@bekerle.com> $DATE" >> $debChangelogPath
|
||||
echo "qownnotes ($versionPart) debian; urgency=low" >$debChangelogPath
|
||||
echo "" >>$debChangelogPath
|
||||
echo " * $changelogText" >>$debChangelogPath
|
||||
echo "" >>$debChangelogPath
|
||||
echo " -- Patrizio Bekerle <patrizio@bekerle.com> $DATE" >>$debChangelogPath
|
||||
|
||||
cat $debChangelogPath
|
||||
|
||||
|
@ -162,5 +161,5 @@ osc commit -m "$changelogText"
|
|||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
#!/bin/env bash
|
||||
#
|
||||
# A tool to run clang-format on the entire project
|
||||
#
|
||||
|
@ -12,32 +12,32 @@ FMT=""
|
|||
# that's present, otherwise we work backwards from highest version to lowest
|
||||
# version.
|
||||
for clangfmt in clang-format{,-{4,3}.{9,8,7,6,5,4,3,2,1,0}}; do
|
||||
if which "$clangfmt" &>/dev/null; then
|
||||
FMT="$clangfmt"
|
||||
break
|
||||
fi
|
||||
if which "$clangfmt" &>/dev/null; then
|
||||
FMT="$clangfmt"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Check if we found a working clang-format
|
||||
if [ -z "$FMT" ]; then
|
||||
echo "failed to find clang-format"
|
||||
exit 1
|
||||
echo "failed to find clang-format"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to run clang-format on all *.cpp and *.h files in a directory (optionally recursively)
|
||||
format_directory() {
|
||||
directory="$1"
|
||||
recursive="$2"
|
||||
directory="$1"
|
||||
recursive="$2"
|
||||
|
||||
if [ "$recursive" = "true" ]; then
|
||||
files=$(find "$directory" -type f \( -name '*.cpp' -or -name '*.h' \))
|
||||
else
|
||||
files=$(ls "$directory"/*.cpp "$directory"/*.h 2>/dev/null)
|
||||
fi
|
||||
for file in $files; do
|
||||
echo "Formatting $file"
|
||||
$FMT -i "$file"
|
||||
done
|
||||
if [ "$recursive" = "true" ]; then
|
||||
files=$(find "$directory" -type f \( -name '*.cpp' -or -name '*.h' \))
|
||||
else
|
||||
files=$(ls "$directory"/*.cpp "$directory"/*.h 2>/dev/null)
|
||||
fi
|
||||
for file in $files; do
|
||||
echo "Formatting $file"
|
||||
$FMT -i "$file"
|
||||
done
|
||||
}
|
||||
|
||||
# Use format_directory on the src and tests directories
|
||||
|
|
|
@ -101,7 +101,6 @@ echo "Remove all translated webpage folders, but German, Hungarian, Persian and
|
|||
# Remove all active languages here!
|
||||
find webpage/src -type d -regextype posix-egrep -regex ".+src\/(am|be|bg|bn|bs|ca|ceb|cs|da|el|et|eu|fi|fil|ga|gl|ha|he|hi|hil|hr|id|is|ja|km|ku|lt|lv|mi|mk|ms|no|pa|pcm|pt|ro|ru|si|sk|sl|sn|sq|sr|sv|ta|th|tl|tlh|tr|uk|ur|uz|vi|xh|yi|zh|zu)$" -exec rm -Rf "{}" \;
|
||||
|
||||
|
||||
#
|
||||
# Fix Crowdin translation bugs
|
||||
#
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/sh
|
||||
number=`cat build_number`
|
||||
number=$(cat build_number)
|
||||
let number++
|
||||
echo "$number" | tee build_number #<-- output and save the number back to file
|
||||
echo "#define BUILD ""$number" | tee build_number.h
|
||||
|
|
|
@ -11,4 +11,4 @@ BIN_DIR="$(pwd)/bin"
|
|||
mkdir -p "${BIN_DIR}"
|
||||
ln -sf "$(which qmake)" "${BIN_DIR}/qmake6" && "${BIN_DIR}/qmake6" --version
|
||||
# Run a pure shell so the shell.nix will not be loaded again by direnv
|
||||
nix-shell --pure -p which libsForQt5.qt5.qtbase --run "ln -sf \$(which qmake | tail -n1) \$PWD/bin/qmake5" && "${BIN_DIR}/qmake5" --version
|
||||
nix-shell --pure -p which libsForQt5.qt5.qtbase --run 'ln -sf $(which qmake | tail -n1) $PWD/bin/qmake5' && "${BIN_DIR}/qmake5" --version
|
||||
|
|
|
@ -20,7 +20,6 @@ fi
|
|||
echo "Previous year: $1"
|
||||
echo "New year: $2"
|
||||
|
||||
|
||||
echo
|
||||
echo Updating QOwnNotes...
|
||||
echo
|
||||
|
|
|
@ -17,15 +17,15 @@ apps:
|
|||
# "=" is not allowed in the command anymore in core20
|
||||
command: "./wrapper.sh"
|
||||
environment:
|
||||
DISABLE_WAYLAND: 1
|
||||
QT_QPA_PLATFORMTHEME: gtk3
|
||||
GIT_EXEC_PATH: $SNAP/usr/lib/git-core
|
||||
GIT_TEMPLATE_DIR: $SNAP/usr/share/git-core/templates
|
||||
GIT_AUTHOR_NAME: "QOwnNotes"
|
||||
GIT_AUTHOR_EMAIL: "snap@qownnotes.git"
|
||||
GIT_COMMITTER_NAME: "QOwnNotes"
|
||||
GIT_COMMITTER_EMAIL: "snap@qownnotes.git"
|
||||
EMAIL: "snap@qownnotes.git"
|
||||
DISABLE_WAYLAND: 1
|
||||
QT_QPA_PLATFORMTHEME: gtk3
|
||||
GIT_EXEC_PATH: $SNAP/usr/lib/git-core
|
||||
GIT_TEMPLATE_DIR: $SNAP/usr/share/git-core/templates
|
||||
GIT_AUTHOR_NAME: "QOwnNotes"
|
||||
GIT_AUTHOR_EMAIL: "snap@qownnotes.git"
|
||||
GIT_COMMITTER_NAME: "QOwnNotes"
|
||||
GIT_COMMITTER_EMAIL: "snap@qownnotes.git"
|
||||
EMAIL: "snap@qownnotes.git"
|
||||
# see https://docs.snapcraft.io/reference/interfaces
|
||||
plugs:
|
||||
- x11
|
||||
|
@ -33,7 +33,7 @@ apps:
|
|||
- network
|
||||
- network-bind
|
||||
- home
|
||||
# - kde-frameworks-5-plug
|
||||
# - kde-frameworks-5-plug
|
||||
- desktop
|
||||
- desktop-legacy
|
||||
- removable-media
|
||||
|
@ -64,14 +64,14 @@ plugs: # plugs for theming, font settings, cursor and to use gtk3 file chooser
|
|||
parts:
|
||||
qownnotes:
|
||||
source: src
|
||||
# source: https://github.com/pbek/qownnotes.git
|
||||
# source: https://github.com/pbek/qownnotes.git
|
||||
# see https://snapcraft.io/docs/qmake-plugin
|
||||
# plugin: qmake
|
||||
# plugin: qmake
|
||||
plugin: make
|
||||
# qmake-parameters:
|
||||
# - CONFIG+=release
|
||||
# - CONFIG+=snapcraft
|
||||
# qmake-project-file: ./src/QOwnNotes.pro
|
||||
# qmake-parameters:
|
||||
# - CONFIG+=release
|
||||
# - CONFIG+=snapcraft
|
||||
# qmake-project-file: ./src/QOwnNotes.pro
|
||||
override-build: |
|
||||
#cd /build/qownnotes/parts/qownnotes/src
|
||||
export QT_SELECT=qt5
|
||||
|
@ -117,42 +117,42 @@ parts:
|
|||
after: [desktop-qt5]
|
||||
|
||||
desktop-qt5:
|
||||
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
|
||||
source-subdir: qt
|
||||
plugin: make
|
||||
make-parameters: ["FLAVOR=qt5"]
|
||||
build-packages:
|
||||
- build-essential
|
||||
- qtbase5-dev
|
||||
- dpkg-dev
|
||||
stage-packages:
|
||||
- libxkbcommon0
|
||||
# - ttf-ubuntu-font-family
|
||||
- dmz-cursor-theme
|
||||
- light-themes
|
||||
- adwaita-icon-theme
|
||||
- gnome-themes-standard
|
||||
- shared-mime-info
|
||||
- libqt5gui5
|
||||
- libgdk-pixbuf2.0-0
|
||||
# - libgtk2.0-0 # snapcraft was complaining about missing libgtk-x11-2.0.so.0
|
||||
- libqt5svg5 # for loading icon themes which are svg
|
||||
# - appmenu-qt5
|
||||
- locales-all
|
||||
- xdg-user-dirs
|
||||
- fcitx-frontend-qt5
|
||||
- libglib2.0-0 # we need this or under Gnome the file chooser will crash the app!
|
||||
source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
|
||||
source-subdir: qt
|
||||
plugin: make
|
||||
make-parameters: ["FLAVOR=qt5"]
|
||||
build-packages:
|
||||
- build-essential
|
||||
- qtbase5-dev
|
||||
- dpkg-dev
|
||||
stage-packages:
|
||||
- libxkbcommon0
|
||||
# - ttf-ubuntu-font-family
|
||||
- dmz-cursor-theme
|
||||
- light-themes
|
||||
- adwaita-icon-theme
|
||||
- gnome-themes-standard
|
||||
- shared-mime-info
|
||||
- libqt5gui5
|
||||
- libgdk-pixbuf2.0-0
|
||||
# - libgtk2.0-0 # snapcraft was complaining about missing libgtk-x11-2.0.so.0
|
||||
- libqt5svg5 # for loading icon themes which are svg
|
||||
# - appmenu-qt5
|
||||
- locales-all
|
||||
- xdg-user-dirs
|
||||
- fcitx-frontend-qt5
|
||||
- libglib2.0-0 # we need this or under Gnome the file chooser will crash the app!
|
||||
|
||||
plasma-integration:
|
||||
plugin: nil
|
||||
stage-packages:
|
||||
# - plasma-integration # causes the KDE file selector to be used that didn't work
|
||||
- kde-style-breeze
|
||||
- breeze-icon-theme
|
||||
# - kio # runtime slaves for kio, but does not seem to work
|
||||
# - plasma-integration # causes the KDE file selector to be used that didn't work
|
||||
- kde-style-breeze
|
||||
- breeze-icon-theme
|
||||
# - kio # runtime slaves for kio, but does not seem to work
|
||||
prime:
|
||||
- "-usr/share/wallpapers/*"
|
||||
- "-usr/share/fonts/*"
|
||||
- "-usr/share/wallpapers/*"
|
||||
- "-usr/share/fonts/*"
|
||||
|
||||
qt5-gtk-platform:
|
||||
plugin: nil
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
Markdown Cheatsheet
|
||||
===================
|
||||
# Markdown Cheatsheet
|
||||
|
||||
This cheatsheet is intended as a quick reference and showcase of the markdown syntax in [QOwnNotes](https://www.qownnotes.org).
|
||||
|
||||
|
@ -7,50 +6,54 @@ This cheatsheet is intended as a quick reference and showcase of the markdown sy
|
|||
|
||||
```markdown
|
||||
# H1
|
||||
|
||||
## H2
|
||||
|
||||
### H3
|
||||
|
||||
#### H4
|
||||
|
||||
##### H5
|
||||
|
||||
###### H6
|
||||
|
||||
Alternatively, for H1 and H2, an underline-ish style:
|
||||
|
||||
Alt-H1
|
||||
======
|
||||
# Alt-H1
|
||||
|
||||
Alt-H2
|
||||
------
|
||||
## Alt-H2
|
||||
```
|
||||
|
||||
# H1
|
||||
|
||||
## H2
|
||||
|
||||
### H3
|
||||
|
||||
#### H4
|
||||
|
||||
##### H5
|
||||
|
||||
###### H6
|
||||
|
||||
Alternatively, for H1 and H2, an underline-ish style:
|
||||
|
||||
Alt-H1
|
||||
======
|
||||
|
||||
Alt-H2
|
||||
------
|
||||
# Alt-H1
|
||||
|
||||
## Alt-H2
|
||||
|
||||
## Emphasis
|
||||
|
||||
```markdown
|
||||
Emphasis, aka italics, with *asterisks*.
|
||||
Emphasis, aka italics, with _asterisks_.
|
||||
|
||||
Strong emphasis, aka bold, with **asterisks**.
|
||||
```
|
||||
|
||||
Emphasis, aka italics, with *asterisks*.
|
||||
Emphasis, aka italics, with _asterisks_.
|
||||
|
||||
Strong emphasis, aka bold, with **asterisks**.
|
||||
|
||||
|
||||
## Lists
|
||||
|
||||
(In this example, leading and trailing spaces are shown with with dots: ⋅)
|
||||
|
@ -58,9 +61,9 @@ Strong emphasis, aka bold, with **asterisks**.
|
|||
```markdown
|
||||
1. First ordered list item
|
||||
2. Another item
|
||||
⋅⋅* Unordered sub-list.
|
||||
1. Actual numbers don't matter, just that it's a number
|
||||
⋅⋅1. Ordered sub-list
|
||||
⋅⋅\* Unordered sub-list.
|
||||
3. Actual numbers don't matter, just that it's a number
|
||||
⋅⋅1. Ordered sub-list
|
||||
4. And another item.
|
||||
|
||||
⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
|
||||
|
@ -68,27 +71,32 @@ Strong emphasis, aka bold, with **asterisks**.
|
|||
⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅
|
||||
⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅
|
||||
|
||||
* Unordered list can use asterisks
|
||||
- Or minuses
|
||||
+ Or pluses
|
||||
- Unordered list can use asterisks
|
||||
|
||||
* Or minuses
|
||||
|
||||
- Or pluses
|
||||
```
|
||||
|
||||
1. First ordered list item
|
||||
2. Another item
|
||||
* Unordered sub-list.
|
||||
|
||||
- Unordered sub-list.
|
||||
|
||||
1. Actual numbers don't matter, just that it's a number
|
||||
1. Ordered sub-list
|
||||
4. And another item.
|
||||
1. Ordered sub-list
|
||||
1. And another item.
|
||||
|
||||
You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
|
||||
|
||||
To have a line break without a paragraph, you will need to use two trailing spaces.
|
||||
Note that this line is separate, but within the same paragraph.
|
||||
|
||||
* Unordered list can use asterisks
|
||||
- Or minuses
|
||||
+ Or pluses
|
||||
- Unordered list can use asterisks
|
||||
|
||||
* Or minuses
|
||||
|
||||
- Or pluses
|
||||
|
||||
## Links
|
||||
|
||||
|
@ -118,7 +126,6 @@ http://www.example.com or <http://www.example.com>
|
|||
|
||||
[1]: https://www.qownnotes.org
|
||||
|
||||
|
||||
## Inline code and code blocks
|
||||
|
||||
```markdown
|
||||
|
@ -132,12 +139,12 @@ Blocks of code are either fenced by lines with three backticks, or are indented
|
|||
### 4-Spaces fence
|
||||
|
||||
```markdown
|
||||
s = "Code with space indent"
|
||||
print s
|
||||
s = "Code with space indent"
|
||||
print s
|
||||
```
|
||||
|
||||
s = "Code with space indent"
|
||||
print s
|
||||
s = "Code with space indent"
|
||||
print s
|
||||
|
||||
### Backtick fence
|
||||
|
||||
|
@ -165,37 +172,36 @@ Tables aren't part of the core Markdown spec, but the QOwnNotes preview supports
|
|||
```markdown
|
||||
Colons can be used to align columns.
|
||||
|
||||
| Tables | Are | Cool |
|
||||
| ------------- |:-------------:| -----:|
|
||||
| Tables | Are | Cool |
|
||||
| ------------- | :-----------: | ----: |
|
||||
| col 3 is | right-aligned | $1600 |
|
||||
| col 2 is | centered | $12 |
|
||||
| zebra stripes | are neat | $1 |
|
||||
| col 2 is | centered | $12 |
|
||||
| zebra stripes | are neat | $1 |
|
||||
|
||||
There must be at least 3 dashes separating each header cell.
|
||||
The outer pipes (|) are optional, and you don't need to make the
|
||||
raw Markdown line up prettily. You can also use inline Markdown.
|
||||
|
||||
Markdown | Less | Pretty
|
||||
--- | --- | ---
|
||||
*Still* | `renders` | **nicely**
|
||||
1 | 2 | 3
|
||||
| Markdown | Less | Pretty |
|
||||
| -------- | --------- | ---------- |
|
||||
| _Still_ | `renders` | **nicely** |
|
||||
| 1 | 2 | 3 |
|
||||
```
|
||||
|
||||
Colons can be used to align columns.
|
||||
|
||||
| Tables | Are | Cool |
|
||||
| ------------- |:-------------:| -----:|
|
||||
| Tables | Are | Cool |
|
||||
| ------------- | :-----------: | ----: |
|
||||
| col 3 is | right-aligned | $1600 |
|
||||
| col 2 is | centered | $12 |
|
||||
| zebra stripes | are neat | $1 |
|
||||
| col 2 is | centered | $12 |
|
||||
| zebra stripes | are neat | $1 |
|
||||
|
||||
There must be at least 3 dashes separating each header cell. The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown.
|
||||
|
||||
Markdown | Less | Pretty
|
||||
--- | --- | ---
|
||||
*Still* | `renders` | **nicely**
|
||||
1 | 2 | 3
|
||||
|
||||
| Markdown | Less | Pretty |
|
||||
| -------- | --------- | ---------- |
|
||||
| _Still_ | `renders` | **nicely** |
|
||||
| 1 | 2 | 3 |
|
||||
|
||||
## Blockquotes
|
||||
|
||||
|
@ -205,7 +211,7 @@ Markdown | Less | Pretty
|
|||
|
||||
Quote break.
|
||||
|
||||
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
|
||||
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can _put_ **Markdown** into a blockquote.
|
||||
```
|
||||
|
||||
> Blockquotes are very handy in email to emulate reply text.
|
||||
|
@ -213,8 +219,7 @@ Quote break.
|
|||
|
||||
Quote break.
|
||||
|
||||
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
|
||||
|
||||
> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can _put_ **Markdown** into a blockquote.
|
||||
|
||||
## Horizontal Rule
|
||||
|
||||
|
@ -225,11 +230,11 @@ Three or more...
|
|||
|
||||
Hyphens
|
||||
|
||||
***
|
||||
---
|
||||
|
||||
Asterisks
|
||||
|
||||
___
|
||||
---
|
||||
|
||||
Underscores
|
||||
```
|
||||
|
@ -240,11 +245,11 @@ Three or more...
|
|||
|
||||
Hyphens
|
||||
|
||||
***
|
||||
---
|
||||
|
||||
Asterisks
|
||||
|
||||
___
|
||||
---
|
||||
|
||||
Underscores
|
||||
|
||||
|
@ -253,23 +258,23 @@ Underscores
|
|||
```markdown
|
||||
Here's a line for us to start with.
|
||||
|
||||
This line is separated from the one above by two newlines, so it will be a *separate paragraph*.
|
||||
This line is separated from the one above by two newlines, so it will be a _separate paragraph_.
|
||||
|
||||
This line is also begins a separate paragraph, but...
|
||||
This line is only separated by two trailing spaces and a single newline, so it's a separate line in the *same paragraph*.
|
||||
This line is only separated by two trailing spaces and a single newline, so it's a separate line in the _same paragraph_.
|
||||
```
|
||||
|
||||
Here's a line for us to start with.
|
||||
|
||||
This line is separated from the one above by two newlines, so it will be a *separate paragraph*.
|
||||
This line is separated from the one above by two newlines, so it will be a _separate paragraph_.
|
||||
|
||||
This line is also begins a separate paragraph, but...
|
||||
This line is only separated by two trailing spaces and a single newline, so it's a separate line in the *same paragraph*.
|
||||
This line is only separated by two trailing spaces and a single newline, so it's a separate line in the _same paragraph_.
|
||||
|
||||
## Comments
|
||||
|
||||
```markdown
|
||||
[comment]: # (This comment will not appear in the preview)
|
||||
[comment]: # "This comment will not appear in the preview"
|
||||
```
|
||||
|
||||
## Checkbox lists
|
||||
|
|
|
@ -1,82 +1,75 @@
|
|||
Markdown Showcase
|
||||
=================
|
||||
# Markdown Showcase
|
||||
|
||||
Another header
|
||||
-------------
|
||||
## Another header
|
||||
|
||||
Let's see _if the emphasis
|
||||
Let's see \_if the emphasis
|
||||
|
||||
carries over_ to __another__ paragraph.
|
||||
carries over\_ to **another** paragraph.
|
||||
|
||||
And ` maybe this ` should <i>Hello</i> not be
|
||||
And `maybe this` should <i>Hello</i> not be
|
||||
|
||||
> ### Header
|
||||
>
|
||||
> Header
|
||||
> --------
|
||||
>
|
||||
> ## Header
|
||||
|
||||
- - -
|
||||
---
|
||||
|
||||
* List 0
|
||||
* List
|
||||
* Hello!
|
||||
- List 0
|
||||
- List
|
||||
- Hello!
|
||||
|
||||
Hello
|
||||
Hello
|
||||
|
||||
Item 2
|
||||
Hello
|
||||
Item 2
|
||||
|
||||
Hibuli habuli!*Code here*
|
||||
Hello
|
||||
|
||||
* Item 3
|
||||
Hibuli habuli!*Code here*
|
||||
|
||||
* Hello again
|
||||
- Item 3
|
||||
|
||||
Hassd *code*
|
||||
- Hello again
|
||||
|
||||
Code here
|
||||
Hassd *code*
|
||||
|
||||
1. Stuff
|
||||
Code here
|
||||
|
||||
1. Stuff
|
||||
|
||||
Hello
|
||||
|
||||
Markdown FTW!
|
||||
|
||||
Markdown FTW!
|
||||
|
||||
1986\. What a great season. A link here: <http://www.example.com/> that should be automatically detected.
|
||||
|
||||
Stuff *here!*. This is pretty cool.
|
||||
Stuff _here!_. This is pretty cool.
|
||||
|
||||
* Hello
|
||||
* Booboo
|
||||
- Hello
|
||||
- Booboo
|
||||
|
||||
What [up to the ][name] cats n dogs :) He*ll*o!! *Some emphasized* stuff here. A * star * has [born]. This * i dont know what*will happen.
|
||||
What [up to the ][name] cats n dogs :) He*ll*o!! _Some emphasized_ stuff here. A _ star _ has [born]. This * i dont know what*will happen.
|
||||
|
||||
1. Stuff
|
||||
1. Hello
|
||||
9. Again
|
||||
3211233. Stuff
|
||||
1. Again
|
||||
1. Stuff
|
||||
|
||||
This is [an example](http://example.com/ "Title") inline link.
|
||||
|
||||
``Hello **`strong text** here``
|
||||
|
||||
> These * should * not \*be\* selected. This* neither! *should be. This *neither should\* be*
|
||||
> These _ should _ not \*be\* selected. This* neither! *should be. This _neither should\* be_
|
||||
|
||||
# 2nd Headline
|
||||
|
||||
Yeah.
|
||||
|
||||
[name]: http://google.com
|
||||
[foo1]: http://example.com/ "Optional Title Here"
|
||||
[foo3]: http://example.com/
|
||||
"'Optional Title Here"
|
||||
|
||||
[foo1]: http://example.com/ "Optional Title Here"
|
||||
[foo3]: http://example.com/ "'Optional Title Here"
|
||||
|
||||
Some code
|
||||
|
||||
## Third headline
|
||||
|
||||
Third headline
|
||||
-------------------
|
||||
Some stuff here...
|
||||
|
|
|
@ -1,21 +1,20 @@
|
|||
Welcome to QOwnNotes
|
||||
====================
|
||||
# Welcome to QOwnNotes
|
||||
|
||||
Welcome to your installation of **QOwnNotes**!
|
||||
|
||||
## TODO
|
||||
|
||||
- [ ] Be sure to setup your *Nextcloud/ownCloud server* in the **settings dialog**.
|
||||
- Keep in mind that you still need to install the *Nextcloud/ownCloud* sync client to synchronize your notes!
|
||||
- [ ] Be sure to setup your _Nextcloud/ownCloud server_ in the **settings dialog**.
|
||||
- Keep in mind that you still need to install the _Nextcloud/ownCloud_ sync client to synchronize your notes!
|
||||
- [ ] Install [QOwnNotesAPI](https://apps.nextcloud.com/apps/qownnotesapi) to access **note versions** and **trashed notes**.
|
||||
|
||||
## Later
|
||||
|
||||
- [ ] Check out the [Important-Shortcuts](https://www.qownnotes.org/getting-started/shortcuts.html) for more productivity.
|
||||
- You can click on links with `Ctrl + Click` (or `Cmd + Click` on macOS) in the editor to open them.
|
||||
- You can click on links with `Ctrl + Click` (or `Cmd + Click` on macOS) in the editor to open them.
|
||||
- [ ] Visit <https://www.qownnotes.org> for more information about **QOwnNotes**.
|
||||
- [ ] Use the <Markdown Cheatsheet.md> to explore the **Markdown syntax**.
|
||||
- [ ] Open the [Script repository](https://github.com/qownnotes/scripts) with `Alt + Shift + I` to add some additional functionality to QOwnNotes
|
||||
- [ ] Add the [QOwnNotes Web Companion browser extension](https://github.com/qownnotes/web-companion) to a add notes from the selected text, bookmark management and other features
|
||||
- Visit the [Chrome Web Store](https://chrome.google.com/webstore/detail/qownnotes-web-companion/pkgkfnampapjbopomdpnkckbjdnpkbkp) or [Firefox Add-ons page](https://addons.mozilla.org/firefox/addon/qownnotes-web-companion) to install the extension.
|
||||
- Visit the [Chrome Web Store](https://chrome.google.com/webstore/detail/qownnotes-web-companion/pkgkfnampapjbopomdpnkckbjdnpkbkp) or [Firefox Add-ons page](https://addons.mozilla.org/firefox/addon/qownnotes-web-companion) to install the extension.
|
||||
- [ ] Check [Spellchecking](https://www.qownnotes.org/editor/spellchecking.html) to setup spellchecking
|
||||
|
|
|
@ -13,30 +13,30 @@ iconThemeUrl="https://download.kde.org/stable/frameworks/${kdeFrameworkVersion}/
|
|||
|
||||
# Download icon from the first parameter from GitHub
|
||||
downloadIcon() {
|
||||
iconName=$1
|
||||
# curl -L "${iconUrlPrefix}${iconName}.svg" -o "breeze-qownnotes/16x16/${iconName}.svg"
|
||||
# curl -L "${darkIconUrlPrefix}${iconName}.svg" -o "breeze-dark-qownnotes/16x16/${iconName}.svg"
|
||||
iconName=$1
|
||||
# curl -L "${iconUrlPrefix}${iconName}.svg" -o "breeze-qownnotes/16x16/${iconName}.svg"
|
||||
# curl -L "${darkIconUrlPrefix}${iconName}.svg" -o "breeze-dark-qownnotes/16x16/${iconName}.svg"
|
||||
|
||||
# Download iconThemeUrl to a temporary folder (because dark icons aren't hosted on GitHub any more, they are generated)
|
||||
tmpDir=$(mktemp -d)
|
||||
echo "Downloading breeze-icons to ${tmpDir}..."
|
||||
curl -L "${iconThemeUrl}" -o "${tmpDir}/breeze-icons.tar.xz"
|
||||
# Download iconThemeUrl to a temporary folder (because dark icons aren't hosted on GitHub any more, they are generated)
|
||||
tmpDir=$(mktemp -d)
|
||||
echo "Downloading breeze-icons to ${tmpDir}..."
|
||||
curl -L "${iconThemeUrl}" -o "${tmpDir}/breeze-icons.tar.xz"
|
||||
|
||||
# Extract icon files
|
||||
echo "Extracting breeze-icons to breeze-qownnotes/16x16 and breeze-dark-qownnotes/16x16..."
|
||||
tar -xf "${tmpDir}/breeze-icons.tar.xz" -C "breeze-qownnotes/16x16" --strip-components=4 "breeze-icons-${kdeFrameworkVersion}.0/icons/actions/22/${iconName}.svg"
|
||||
tar -xf "${tmpDir}/breeze-icons.tar.xz" -C "breeze-dark-qownnotes/16x16" --strip-components=4 "breeze-icons-${kdeFrameworkVersion}.0/icons-dark/actions/22/${iconName}.svg"
|
||||
# Extract icon files
|
||||
echo "Extracting breeze-icons to breeze-qownnotes/16x16 and breeze-dark-qownnotes/16x16..."
|
||||
tar -xf "${tmpDir}/breeze-icons.tar.xz" -C "breeze-qownnotes/16x16" --strip-components=4 "breeze-icons-${kdeFrameworkVersion}.0/icons/actions/22/${iconName}.svg"
|
||||
tar -xf "${tmpDir}/breeze-icons.tar.xz" -C "breeze-dark-qownnotes/16x16" --strip-components=4 "breeze-icons-${kdeFrameworkVersion}.0/icons-dark/actions/22/${iconName}.svg"
|
||||
|
||||
# Remove the temporary folder
|
||||
echo "Removing ${tmpDir}..."
|
||||
rm -rf "${tmpDir}"
|
||||
# Remove the temporary folder
|
||||
echo "Removing ${tmpDir}..."
|
||||
rm -rf "${tmpDir}"
|
||||
}
|
||||
|
||||
# Check if the first parameter is empty
|
||||
if [ -z "$1" ]; then
|
||||
echo "Please specify the icon name as the first parameter!"
|
||||
echo "Example: $0 edit-delete"
|
||||
exit 1
|
||||
echo "Please specify the icon name as the first parameter!"
|
||||
echo "Example: $0 edit-delete"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Change to the current directory
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
FakeVim
|
||||
=======
|
||||
# FakeVim
|
||||
|
||||
FakeVim is library to emulate Vim in QTextEdit, QPlainTextEdit and possibly other Qt widgets.
|
||||
|
||||
Build
|
||||
-----
|
||||
## Build
|
||||
|
||||
To build the library and simple example editor (in `example` directory), run
|
||||
following commands:
|
||||
|
@ -12,7 +10,7 @@ following commands:
|
|||
cmake .
|
||||
make
|
||||
|
||||
Build and run **example with **CMake**:
|
||||
Build and run **example with **CMake\*\*:
|
||||
|
||||
cmake -DBUILD_EXAMPLE=1 .
|
||||
make
|
||||
|
@ -24,85 +22,88 @@ Build and run **tests with CMake**:
|
|||
make
|
||||
ctest
|
||||
|
||||
Supported Features
|
||||
------------------
|
||||
## Supported Features
|
||||
|
||||
Most of supported commands can be followed by motion command or executed in visual mode, work with registers or can be prefixed with number of repetitions.
|
||||
|
||||
Here is list of emulated commands with description where it can diverge from Vim in functionality.
|
||||
|
||||
### Modes
|
||||
* normal
|
||||
* insert and replace
|
||||
* visual
|
||||
* command line (`:`)
|
||||
|
||||
- normal
|
||||
- insert and replace
|
||||
- visual
|
||||
- command line (`:`)
|
||||
|
||||
### Normal and Visual Modes
|
||||
* basic movement -- `h`/`j`/`k`/`l`, `<C-U>`, `<C-D>`, `<C-F>`, `<C-B>`, `gg`, `G`, `0`, `^`, `$` etc.
|
||||
* word movement -- `w`, `e`, `b` etc.
|
||||
* "inner/a" movement -- `ciw`, `3daw`, `ya{` etc.
|
||||
* `f`, `t` movement
|
||||
* `[`, `]` movement
|
||||
* `{`, `}` -- paragraph movement
|
||||
* delete/change/yank/paste with register
|
||||
* undo/redo
|
||||
* `<C-A>`, `<C-X>` -- increase or decrease number in decimal/octal/hexadecimal format (e.g. `128<C-A>` on or before "0x0ff" changes it to "0x17f")
|
||||
* `.` -- repeat last change
|
||||
* `/search`, `?search`, `*`, `#`, `n`, `N` -- most of regular expression syntax used in Vim except `\<` and `\>` just is the same as `\b` in QRegExp
|
||||
* `@`, `q` (macro recording, execution) -- special keys are saved as `<S-Left>`
|
||||
* marks
|
||||
* `gv` -- last visual selection; can differ if text is edited around it
|
||||
* indentation -- `=`, `<<`, `>>` etc. with movement, count and in visual mode
|
||||
* "to upper/lower" -- `~`, `gU`, `gu` etc.
|
||||
* `i`, `a`, `o`, `I`, `A`, `O` -- enter insert mode
|
||||
* scroll window -- `zt`, `zb`, `zz` etc.
|
||||
* wrap line movement -- `gj`, `gk`, `g0`, `g^`, `g$`
|
||||
|
||||
- basic movement -- `h`/`j`/`k`/`l`, `<C-U>`, `<C-D>`, `<C-F>`, `<C-B>`, `gg`, `G`, `0`, `^`, `$` etc.
|
||||
- word movement -- `w`, `e`, `b` etc.
|
||||
- "inner/a" movement -- `ciw`, `3daw`, `ya{` etc.
|
||||
- `f`, `t` movement
|
||||
- `[`, `]` movement
|
||||
- `{`, `}` -- paragraph movement
|
||||
- delete/change/yank/paste with register
|
||||
- undo/redo
|
||||
- `<C-A>`, `<C-X>` -- increase or decrease number in decimal/octal/hexadecimal format (e.g. `128<C-A>` on or before "0x0ff" changes it to "0x17f")
|
||||
- `.` -- repeat last change
|
||||
- `/search`, `?search`, `*`, `#`, `n`, `N` -- most of regular expression syntax used in Vim except `\<` and `\>` just is the same as `\b` in QRegExp
|
||||
- `@`, `q` (macro recording, execution) -- special keys are saved as `<S-Left>`
|
||||
- marks
|
||||
- `gv` -- last visual selection; can differ if text is edited around it
|
||||
- indentation -- `=`, `<<`, `>>` etc. with movement, count and in visual mode
|
||||
- "to upper/lower" -- `~`, `gU`, `gu` etc.
|
||||
- `i`, `a`, `o`, `I`, `A`, `O` -- enter insert mode
|
||||
- scroll window -- `zt`, `zb`, `zz` etc.
|
||||
- wrap line movement -- `gj`, `gk`, `g0`, `g^`, `g$`
|
||||
|
||||
### Command Line Mode
|
||||
* `:map`, `:unmap`, `:inoremap` etc.
|
||||
* `:source` -- very basic line-by-line sourcing of vimrc files
|
||||
* `:substitute` -- substitute expression in range
|
||||
* `:'<,'>!cmd` -- filter through an external command (e.g. sort lines in file with `:%!sort`)
|
||||
* `:.!cmd` -- insert standard output of an external command
|
||||
* `:read`
|
||||
* `:yank`, `:delete`, `:change`
|
||||
* `:move`, `:join`
|
||||
* `:20` -- go to address
|
||||
* `:history`
|
||||
* `:registers`, `:display`
|
||||
* `:nohlsearch`
|
||||
* `:undo`, `:redo`
|
||||
* `:normal`
|
||||
* `:<`, `:>`
|
||||
|
||||
- `:map`, `:unmap`, `:inoremap` etc.
|
||||
- `:source` -- very basic line-by-line sourcing of vimrc files
|
||||
- `:substitute` -- substitute expression in range
|
||||
- `:'<,'>!cmd` -- filter through an external command (e.g. sort lines in file with `:%!sort`)
|
||||
- `:.!cmd` -- insert standard output of an external command
|
||||
- `:read`
|
||||
- `:yank`, `:delete`, `:change`
|
||||
- `:move`, `:join`
|
||||
- `:20` -- go to address
|
||||
- `:history`
|
||||
- `:registers`, `:display`
|
||||
- `:nohlsearch`
|
||||
- `:undo`, `:redo`
|
||||
- `:normal`
|
||||
- `:<`, `:>`
|
||||
|
||||
### Insert Mode
|
||||
* `<C-O>` -- execute single command and return to insert mode
|
||||
* `<C-V>` -- insert raw character
|
||||
* `<insert>` -- toggle replace mode
|
||||
|
||||
- `<C-O>` -- execute single command and return to insert mode
|
||||
- `<C-V>` -- insert raw character
|
||||
- `<insert>` -- toggle replace mode
|
||||
|
||||
### Options (:set ...)
|
||||
* `autoindent`
|
||||
* `clipboard`
|
||||
* `backspace`
|
||||
* `expandtab`
|
||||
* `hlsearch`
|
||||
* `ignorecase`
|
||||
* `incsearch`
|
||||
* `indent`
|
||||
* `iskeyword`
|
||||
* `scrolloff`
|
||||
* `shiftwidth`
|
||||
* `showcmd`
|
||||
* `smartcase`
|
||||
* `smartindent`
|
||||
* `smarttab`
|
||||
* `startofline`
|
||||
* `tabstop`
|
||||
* `tildeop`
|
||||
* `wrapscan`
|
||||
|
||||
Example Vimrc
|
||||
-------------
|
||||
- `autoindent`
|
||||
- `clipboard`
|
||||
- `backspace`
|
||||
- `expandtab`
|
||||
- `hlsearch`
|
||||
- `ignorecase`
|
||||
- `incsearch`
|
||||
- `indent`
|
||||
- `iskeyword`
|
||||
- `scrolloff`
|
||||
- `shiftwidth`
|
||||
- `showcmd`
|
||||
- `smartcase`
|
||||
- `smartindent`
|
||||
- `smarttab`
|
||||
- `startofline`
|
||||
- `tabstop`
|
||||
- `tildeop`
|
||||
- `wrapscan`
|
||||
|
||||
## Example Vimrc
|
||||
|
||||
" highlight matched
|
||||
set hlsearch
|
||||
|
@ -145,19 +146,16 @@ Example Vimrc
|
|||
vnoremap <C-S-J> :m'>+<CR>gv=gv
|
||||
vnoremap <C-S-K> :m-2<CR>gv=gv
|
||||
|
||||
Implementation
|
||||
--------------
|
||||
## Implementation
|
||||
|
||||
There are appropriate signals emitted for command which has to be processed by the underlying editor widget (folds, windows, tabs, command line, messages etc.).
|
||||
See example in `example/` directory or implementation of FakeVim plugin in Qt Creator IDE.
|
||||
|
||||
Python Bindings
|
||||
---------------
|
||||
## Python Bindings
|
||||
|
||||
To install Python bindings for FakeVim see "python/README.md" file.
|
||||
|
||||
Update from Upstream
|
||||
--------------------
|
||||
## Update from Upstream
|
||||
|
||||
The source code should be regularly updated from the Qt Creator.
|
||||
|
||||
|
|
|
@ -7,116 +7,115 @@ INDENT=${INDENT:-' '}
|
|||
options="set smartindent|set autoindent|set nocindent"
|
||||
|
||||
print_help() {
|
||||
echo "USAGE: $0 FILE CMD..."
|
||||
echo " Run input in both Vim and FakeVim and compare result."
|
||||
echo " Results are stored in FILE.vim and FILE.fakevim."
|
||||
echo " Tests for FakeVim in Qt Creator are stored in \"$cmdfile\" file."
|
||||
echo "USAGE: $0 FILE CMD..."
|
||||
echo " Run input in both Vim and FakeVim and compare result."
|
||||
echo " Results are stored in FILE.vim and FILE.fakevim."
|
||||
echo " Tests for FakeVim in Qt Creator are stored in \"$cmdfile\" file."
|
||||
}
|
||||
|
||||
print() {
|
||||
for arg in "$@"; do
|
||||
if [ "$arg" == "N" ]; then
|
||||
printf '\n'
|
||||
else
|
||||
printf "%s" "$arg"
|
||||
fi
|
||||
done >> "$cmdfile"
|
||||
for arg in "$@"; do
|
||||
if [ "$arg" == "N" ]; then
|
||||
printf '\n'
|
||||
else
|
||||
printf "%s" "$arg"
|
||||
fi
|
||||
done >>"$cmdfile"
|
||||
}
|
||||
|
||||
print_content() {
|
||||
local file=$1
|
||||
sed \
|
||||
-e 's/"/\\"/g' \
|
||||
-e 's/^/'"$INDENT"'"/' \
|
||||
-e 's/$/" N/' "$file" \
|
||||
>> "$cmdfile"
|
||||
local file=$1
|
||||
sed \
|
||||
-e 's/"/\\"/g' \
|
||||
-e 's/^/'"$INDENT"'"/' \
|
||||
-e 's/$/" N/' "$file" \
|
||||
>>"$cmdfile"
|
||||
}
|
||||
|
||||
vim_exec() {
|
||||
for cmd in "$@"; do
|
||||
printf "%s" "|map \\X $cmd|normal \\X"
|
||||
done
|
||||
for cmd in "$@"; do
|
||||
printf "%s" "|map \\X $cmd|normal \\X"
|
||||
done
|
||||
}
|
||||
|
||||
run_vim() {
|
||||
local file=$1
|
||||
shift
|
||||
"$VIM" \
|
||||
-c "$options" \
|
||||
-c "$(vim_exec "$@")" \
|
||||
-c "normal i|" \
|
||||
-c "wq" "$file"
|
||||
local file=$1
|
||||
shift
|
||||
"$VIM" \
|
||||
-c "$options" \
|
||||
-c "$(vim_exec "$@")" \
|
||||
-c "normal i|" \
|
||||
-c "wq" "$file"
|
||||
}
|
||||
|
||||
run_fakevim() {
|
||||
local file=$1
|
||||
shift
|
||||
find_fakevim
|
||||
"$FAKEVIM" "$file" \
|
||||
":$options|set nopasskeys|set nopasscontrolkey<CR>" \
|
||||
"$@" "<ESC><ESC>i|<ESC>" \
|
||||
":wq<CR>"
|
||||
local file=$1
|
||||
shift
|
||||
find_fakevim
|
||||
"$FAKEVIM" "$file" \
|
||||
":$options|set nopasskeys|set nopasscontrolkey<CR>" \
|
||||
"$@" "<ESC><ESC>i|<ESC>" \
|
||||
":wq<CR>"
|
||||
}
|
||||
|
||||
find_fakevim() {
|
||||
if [ ! -x "$FAKEVIM" ]; then
|
||||
dir=$(dirname "$(readlink -f "$0")")
|
||||
FAKEVIM=$(find "$dir" -type f -executable -name test | head -1)
|
||||
fi
|
||||
if [ ! -x "$FAKEVIM" ]; then
|
||||
dir=$(dirname "$(readlink -f "$0")")
|
||||
FAKEVIM=$(find "$dir" -type f -executable -name test | head -1)
|
||||
fi
|
||||
}
|
||||
|
||||
print_test() {
|
||||
local header=$1
|
||||
local file=$2
|
||||
local footer=$3
|
||||
local header=$1
|
||||
local file=$2
|
||||
local footer=$3
|
||||
|
||||
print "$header" N
|
||||
print_content "$file"
|
||||
print "$footer" N
|
||||
print "$header" N
|
||||
print_content "$file"
|
||||
print "$footer" N
|
||||
}
|
||||
|
||||
same() {
|
||||
cmp "$@" >/dev/null 2>&1
|
||||
cmp "$@" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
main() {
|
||||
set -e
|
||||
set -e
|
||||
|
||||
if [ "$#" -lt 2 ]; then
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
if [ "$#" -lt 2 ]; then
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local file=$1
|
||||
shift # rest are commands
|
||||
local file=$1
|
||||
shift # rest are commands
|
||||
|
||||
rm -f "$cmdfile"
|
||||
#cp ~/.vimrc fakevimrc
|
||||
rm -f "$cmdfile"
|
||||
#cp ~/.vimrc fakevimrc
|
||||
|
||||
print_test 'data.setText(' "$file" ');'
|
||||
print_test 'data.setText(' "$file" ');'
|
||||
|
||||
# run command through Vim
|
||||
local vimoutfile=${file}.vim
|
||||
cp "$file" "$vimoutfile"
|
||||
run_vim "$vimoutfile" "$@"
|
||||
# run command through Vim
|
||||
local vimoutfile=${file}.vim
|
||||
cp "$file" "$vimoutfile"
|
||||
run_vim "$vimoutfile" "$@"
|
||||
|
||||
print_test "KEYS(\"$*\"," "$vimoutfile" ');'
|
||||
print_test "KEYS(\"$*\"," "$vimoutfile" ');'
|
||||
|
||||
local fakevimoutfile=${file}.fakevim
|
||||
cp "$file" "$fakevimoutfile"
|
||||
run_fakevim "$fakevimoutfile" "$@"
|
||||
local fakevimoutfile=${file}.fakevim
|
||||
cp "$file" "$fakevimoutfile"
|
||||
run_fakevim "$fakevimoutfile" "$@"
|
||||
|
||||
if same "$fakevimoutfile" "$vimoutfile"; then
|
||||
echo OK, same result from Vim and FakeVim.
|
||||
else
|
||||
echo FAILED, different result from Vim and FakeVim.
|
||||
$diff "$fakevimoutfile" "$vimoutfile"
|
||||
fi
|
||||
if same "$fakevimoutfile" "$vimoutfile"; then
|
||||
echo OK, same result from Vim and FakeVim.
|
||||
else
|
||||
echo FAILED, different result from Vim and FakeVim.
|
||||
$diff "$fakevimoutfile" "$vimoutfile"
|
||||
fi
|
||||
|
||||
reset
|
||||
cat "$cmdfile"
|
||||
sed 's/^/ /' "$cmdfile" | xclip -i
|
||||
reset
|
||||
cat "$cmdfile"
|
||||
sed 's/^/ /' "$cmdfile" | xclip -i
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
#!/bin/bash
|
||||
files_to_update=(
|
||||
fakevimactions.cpp
|
||||
fakevimactions.h
|
||||
fakevimhandler.cpp
|
||||
fakevimhandler.h
|
||||
fakevimtr.h
|
||||
fakevimactions.cpp
|
||||
fakevimactions.h
|
||||
fakevimhandler.cpp
|
||||
fakevimhandler.h
|
||||
fakevimtr.h
|
||||
|
||||
utils/hostosinfo.h
|
||||
utils/optional.h
|
||||
utils/qtcassert.cpp
|
||||
utils/qtcassert.h
|
||||
utils/utils_global.h
|
||||
utils/hostosinfo.h
|
||||
utils/optional.h
|
||||
utils/qtcassert.cpp
|
||||
utils/qtcassert.h
|
||||
utils/utils_global.h
|
||||
|
||||
3rdparty/optional/optional.hpp
|
||||
3rdparty/optional/optional.hpp
|
||||
)
|
||||
|
||||
qtc_home=$1
|
||||
|
@ -21,14 +21,14 @@ script_dir=$(dirname "$(readlink -f "$0")")
|
|||
base_dir=$script_dir/..
|
||||
|
||||
die() {
|
||||
echo "$1" 1>&2
|
||||
exit 1
|
||||
echo "$1" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
set -e
|
||||
|
||||
[ -n "$qtc_home" ] ||
|
||||
die "Usage: $0 PATH_TO_QT_CREATOR"
|
||||
die "Usage: $0 PATH_TO_QT_CREATOR"
|
||||
|
||||
echo "--- Fetching latest development code for Qt Creator"
|
||||
cd "$qtc_home"
|
||||
|
@ -39,14 +39,14 @@ commit=$(git rev-parse --short HEAD)
|
|||
echo "--- Updating source files"
|
||||
cd "$base_dir/fakevim"
|
||||
for file in "${files_to_update[@]}"; do
|
||||
echo "-- $file"
|
||||
if [[ "$file" == fakevim* ]]; then
|
||||
dir=plugins/fakevim
|
||||
else
|
||||
dir=libs
|
||||
fi
|
||||
rsync --mkpath -- "$qtc_home/src/$dir/$file" "$file"
|
||||
git add -- "$file"
|
||||
echo "-- $file"
|
||||
if [[ $file == fakevim* ]]; then
|
||||
dir=plugins/fakevim
|
||||
else
|
||||
dir=libs
|
||||
fi
|
||||
rsync --mkpath -- "$qtc_home/src/$dir/$file" "$file"
|
||||
git add -- "$file"
|
||||
done
|
||||
|
||||
echo "--- Patching source files and creating commit"
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
qlitehtml
|
||||
=========
|
||||
# qlitehtml
|
||||
|
||||
A lightweight HTML viewer for Qt.
|
||||
|
||||
This project provides
|
||||
|
||||
* A QPainter based rendering backend for the lightweight HTML/CSS rendering
|
||||
- A QPainter based rendering backend for the lightweight HTML/CSS rendering
|
||||
engine [litehtml].
|
||||
* A QWidget that uses the QPainter based backend and provides API for simply
|
||||
- A QWidget that uses the QPainter based backend and provides API for simply
|
||||
setting the HTML text and a base URL plus hook that are used for requesting
|
||||
referenced resources.
|
||||
|
||||
|
|
|
@ -2,9 +2,9 @@ name: CMake
|
|||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [master]
|
||||
|
||||
env:
|
||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
||||
|
@ -19,20 +19,19 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Configure CMake
|
||||
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
||||
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
||||
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||
- name: Configure CMake
|
||||
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
||||
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
||||
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||
|
||||
- name: Build
|
||||
# Build your program with the given configuration
|
||||
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
|
||||
|
||||
- name: Test
|
||||
working-directory: ${{github.workspace}}/build
|
||||
# Execute tests defined by the CMake configuration.
|
||||
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
|
||||
run: ctest -C ${{env.BUILD_TYPE}} --rerun-failed --output-on-failure
|
||||
- name: Build
|
||||
# Build your program with the given configuration
|
||||
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
|
||||
|
||||
- name: Test
|
||||
working-directory: ${{github.workspace}}/build
|
||||
# Execute tests defined by the CMake configuration.
|
||||
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
|
||||
run: ctest -C ${{env.BUILD_TYPE}} --rerun-failed --output-on-failure
|
||||
|
|
|
@ -18,16 +18,17 @@
|
|||
|
||||
## Support for HTML and CSS standards
|
||||
|
||||
Unfortunately **litehtml** is not fully compatible with HTML/CSS standards. There is lots of work to do to make **litehtml** work as well as modern browsers. But **litehtml** supports most HTML tags and CSS properties. You can find the list of supported CSS properties in [this table](https://docs.google.com/spreadsheet/ccc?key=0AvHXl5n24PuhdHdELUdhaUl4OGlncXhDcDJuM1JpMnc&usp=sharing). For most simple usecases the HTML/CSS features supported by **litehtml** are enough. Right now **litehtml** supports even some pages with very complex HTML/CSS designs. As an example the pages created with [bootstrap framework](http://getbootstrap.com/) are usually well formatted by **litehtml**.
|
||||
Unfortunately **litehtml** is not fully compatible with HTML/CSS standards. There is lots of work to do to make **litehtml** work as well as modern browsers. But **litehtml** supports most HTML tags and CSS properties. You can find the list of supported CSS properties in [this table](https://docs.google.com/spreadsheet/ccc?key=0AvHXl5n24PuhdHdELUdhaUl4OGlncXhDcDJuM1JpMnc&usp=sharing). For most simple usecases the HTML/CSS features supported by **litehtml** are enough. Right now **litehtml** supports even some pages with very complex HTML/CSS designs. As an example the pages created with [bootstrap framework](http://getbootstrap.com/) are usually well formatted by **litehtml**.
|
||||
|
||||
## Testing litehtml
|
||||
|
||||
You can [download the simple browser](http://www.litehtml.com/download.html) (**litebrowser**) to test the **litehtml** rendering engine.
|
||||
|
||||
The litebrowser source codes are available on GitHub:
|
||||
* [For Windows](https://github.com/litehtml/litebrowser)
|
||||
* [For Linux](https://github.com/litehtml/litebrowser-linux)
|
||||
* [For Haiku](https://github.com/adamfowleruk/litebrowser-haiku)
|
||||
|
||||
- [For Windows](https://github.com/litehtml/litebrowser)
|
||||
- [For Linux](https://github.com/litehtml/litebrowser-linux)
|
||||
- [For Haiku](https://github.com/adamfowleruk/litebrowser-haiku)
|
||||
|
||||
## License
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
QtWaitingSpinner
|
||||
================
|
||||
# QtWaitingSpinner
|
||||
|
||||
QtWaitingSpinner is a highly configurable, custom Qt widget for showing "waiting" or "loading" spinner icons in Qt applications, e.g. the spinners below are all QtWaitingSpinner widgets differing only in their configuration:
|
||||
|
||||
|
@ -9,15 +8,15 @@ QtWaitingSpinner is a highly configurable, custom Qt widget for showing "waiting
|
|||
|
||||
The following properties can all be controlled directly through their corresponding setters:
|
||||
|
||||
* Colour of the widget
|
||||
* "Roundness" of the lines
|
||||
* Speed (rotations per second)
|
||||
* Number of lines to be drawn
|
||||
* Line length
|
||||
* Line width
|
||||
* Radius of the spinner's "dead space" or inner circle
|
||||
* The percentage fade of the "trail"
|
||||
* The minimum opacity of the "trail"
|
||||
- Colour of the widget
|
||||
- "Roundness" of the lines
|
||||
- Speed (rotations per second)
|
||||
- Number of lines to be drawn
|
||||
- Line length
|
||||
- Line width
|
||||
- Radius of the spinner's "dead space" or inner circle
|
||||
- The percentage fade of the "trail"
|
||||
- The minimum opacity of the "trail"
|
||||
|
||||
### Usage
|
||||
|
||||
|
@ -62,8 +61,8 @@ https://github.com/cybercatalyst/qt-pods
|
|||
|
||||
### Thanks
|
||||
|
||||
QtWaitingSpinner was inspired by the [spin.js](http://fgnass.github.io/spin.js/) project.
|
||||
|
||||
QtWaitingSpinner was inspired by the [spin.js](http://fgnass.github.io/spin.js/) project.
|
||||
|
||||
### Forks
|
||||
|
||||
There is also [QtWaitingSpinner for Python!](https://github.com/z3ntu/QtWaitingSpinner) Thanks to [z3ntu](https://github.com/z3ntu) for porting it.
|
||||
|
|
|
@ -1,188 +1,168 @@
|
|||
Changelog
|
||||
=========
|
||||
# Changelog
|
||||
|
||||
__3.0.13a__
|
||||
----------
|
||||
## **3.0.13a**
|
||||
|
||||
* Process socket events asynchronously
|
||||
* Fix undefined variable error on Windows
|
||||
- Process socket events asynchronously
|
||||
- Fix undefined variable error on Windows
|
||||
|
||||
_Francis Giraldeau_
|
||||
_Francis Giraldeau_
|
||||
|
||||
__3.0.12a__
|
||||
----------
|
||||
## **3.0.12a**
|
||||
|
||||
* Removed signal handling.
|
||||
- Removed signal handling.
|
||||
|
||||
__3.0.11a__
|
||||
----------
|
||||
## **3.0.11a**
|
||||
|
||||
* Fixed bug where the message sent by the second process was not received
|
||||
- Fixed bug where the message sent by the second process was not received
|
||||
correctly when the message is sent immediately following a connection.
|
||||
|
||||
_Francis Giraldeau_
|
||||
_Francis Giraldeau_
|
||||
|
||||
* Refactored code and implemented shared memory block consistency checks
|
||||
- Refactored code and implemented shared memory block consistency checks
|
||||
via `qChecksum()` (CRC-16).
|
||||
* Explicit `qWarning` and `qCritical` when the library is unable to initialise
|
||||
- Explicit `qWarning` and `qCritical` when the library is unable to initialise
|
||||
correctly.
|
||||
|
||||
__3.0.10__
|
||||
----------
|
||||
## **3.0.10**
|
||||
|
||||
* Removed C style casts and eliminated all clang warnings. Fixed `instanceId`
|
||||
- Removed C style casts and eliminated all clang warnings. Fixed `instanceId`
|
||||
reading from only one byte in the message deserialization. Cleaned up
|
||||
serialization code using `QDataStream`. Changed connection type to use
|
||||
`quint8 enum` rather than `char`.
|
||||
* Renamed `SingleAppConnectionType` to `ConnectionType`. Added initialization
|
||||
- Renamed `SingleAppConnectionType` to `ConnectionType`. Added initialization
|
||||
values to all `ConnectionType` enum cases.
|
||||
|
||||
_Jedidiah Buck McCready_
|
||||
_Jedidiah Buck McCready_
|
||||
|
||||
__3.0.9__
|
||||
---------
|
||||
## **3.0.9**
|
||||
|
||||
* Added SingleApplicationPrivate::primaryPid() as a solution to allow
|
||||
bringing the primary window of an application to the foreground on
|
||||
Windows.
|
||||
- Added SingleApplicationPrivate::primaryPid() as a solution to allow
|
||||
bringing the primary window of an application to the foreground on
|
||||
Windows.
|
||||
|
||||
_Eelco van Dam from Peacs BV_
|
||||
_Eelco van Dam from Peacs BV_
|
||||
|
||||
__3.0.8__
|
||||
---------
|
||||
## **3.0.8**
|
||||
|
||||
* Bug fix - changed QApplication::instance() to QCoreApplication::instance()
|
||||
- Bug fix - changed QApplication::instance() to QCoreApplication::instance()
|
||||
|
||||
_Evgeniy Bazhenov_
|
||||
_Evgeniy Bazhenov_
|
||||
|
||||
__3.0.7a__
|
||||
----------
|
||||
## **3.0.7a**
|
||||
|
||||
* Fixed compilation error with Mingw32 in MXE thanks to Vitaly Tonkacheyev.
|
||||
* Removed QMutex used for thread safe behaviour. The implementation now uses
|
||||
QCoreApplication::instance() to get an instance to SingleApplication for
|
||||
memory deallocation.
|
||||
- Fixed compilation error with Mingw32 in MXE thanks to Vitaly Tonkacheyev.
|
||||
- Removed QMutex used for thread safe behaviour. The implementation now uses
|
||||
QCoreApplication::instance() to get an instance to SingleApplication for
|
||||
memory deallocation.
|
||||
|
||||
__3.0.6a__
|
||||
----------
|
||||
## **3.0.6a**
|
||||
|
||||
* Reverted GetUserName API usage on Windows. Fixed bug with missing library.
|
||||
* Fixed bug in the Calculator example, preventing it's window to be raised
|
||||
on Windows.
|
||||
- Reverted GetUserName API usage on Windows. Fixed bug with missing library.
|
||||
- Fixed bug in the Calculator example, preventing it's window to be raised
|
||||
on Windows.
|
||||
|
||||
Special thanks to Charles Gunawan.
|
||||
Special thanks to Charles Gunawan.
|
||||
|
||||
__3.0.5a__
|
||||
----------
|
||||
## **3.0.5a**
|
||||
|
||||
* Fixed a memory leak in the SingleApplicationPrivate destructor.
|
||||
- Fixed a memory leak in the SingleApplicationPrivate destructor.
|
||||
|
||||
_Sergei Moiseev_
|
||||
_Sergei Moiseev_
|
||||
|
||||
__3.0.4a__
|
||||
----------
|
||||
## **3.0.4a**
|
||||
|
||||
* Fixed shadow and uninitialised variable warnings.
|
||||
- Fixed shadow and uninitialised variable warnings.
|
||||
|
||||
_Paul Walmsley_
|
||||
_Paul Walmsley_
|
||||
|
||||
__3.0.3a__
|
||||
----------
|
||||
## **3.0.3a**
|
||||
|
||||
* Removed Microsoft Windows specific code for getting username due to
|
||||
multiple problems and compiler differences on Windows platforms. On
|
||||
Windows the shared memory block in User mode now includes the user's
|
||||
home path (which contains the user's username).
|
||||
- Removed Microsoft Windows specific code for getting username due to
|
||||
multiple problems and compiler differences on Windows platforms. On
|
||||
Windows the shared memory block in User mode now includes the user's
|
||||
home path (which contains the user's username).
|
||||
|
||||
* Explicitly getting absolute path of the user's home directory as on Unix
|
||||
a relative path (`~`) may be returned.
|
||||
- Explicitly getting absolute path of the user's home directory as on Unix
|
||||
a relative path (`~`) may be returned.
|
||||
|
||||
__3.0.2a__
|
||||
----------
|
||||
## **3.0.2a**
|
||||
|
||||
* Fixed bug on Windows when username containing wide characters causes the
|
||||
library to crash.
|
||||
- Fixed bug on Windows when username containing wide characters causes the
|
||||
library to crash.
|
||||
|
||||
_Le Liu_
|
||||
_Le Liu_
|
||||
|
||||
__3.0.1a__
|
||||
----------
|
||||
## **3.0.1a**
|
||||
|
||||
* Allows the application path and version to be excluded from the server name
|
||||
hash. The following flags were added for this purpose:
|
||||
* `SingleApplication::Mode::ExcludeAppVersion`
|
||||
* `SingleApplication::Mode::ExcludeAppPath`
|
||||
* Allow a non elevated process to connect to a local server created by an
|
||||
elevated process run by the same user on Windows
|
||||
* Fixes a problem with upper case letters in paths on Windows
|
||||
- Allows the application path and version to be excluded from the server name
|
||||
hash. The following flags were added for this purpose:
|
||||
- `SingleApplication::Mode::ExcludeAppVersion`
|
||||
- `SingleApplication::Mode::ExcludeAppPath`
|
||||
- Allow a non elevated process to connect to a local server created by an
|
||||
elevated process run by the same user on Windows
|
||||
- Fixes a problem with upper case letters in paths on Windows
|
||||
|
||||
_Le Liu_
|
||||
_Le Liu_
|
||||
|
||||
__v3.0a__
|
||||
---------
|
||||
## **v3.0a**
|
||||
|
||||
* Depricated secondary instances count.
|
||||
* Added a sendMessage() method to send a message to the primary instance.
|
||||
* Added a receivedMessage() signal, emitted when a message is received from a
|
||||
secondary instance.
|
||||
* The SingleApplication constructor's third parameter is now a bool
|
||||
specifying if the current instance should be allowed to run as a secondary
|
||||
instance if there is already a primary instance.
|
||||
* The SingleApplication constructor accept a fourth parameter specifying if
|
||||
the SingleApplication block should be User-wide or System-wide.
|
||||
* SingleApplication no longer relies on `applicationName` and
|
||||
`organizationName` to be set. It instead concatenates all of the following
|
||||
data and computes a `SHA256` hash which is used as the key of the
|
||||
`QSharedMemory` block and the `QLocalServer`. Since at least
|
||||
`applicationFilePath` is always present there is no need to explicitly set
|
||||
any of the following prior to initialising `SingleApplication`.
|
||||
* `QCoreApplication::applicationName`
|
||||
* `QCoreApplication::applicationVersion`
|
||||
* `QCoreApplication::applicationFilePath`
|
||||
* `QCoreApplication::organizationName`
|
||||
* `QCoreApplication::organizationDomain`
|
||||
* User name or home directory path if in User mode
|
||||
* The primary instance is no longer notified when a secondary instance had
|
||||
been started by default. A `Mode` flag for this feature exists.
|
||||
* Added `instanceNumber()` which represents a unique identifier for each
|
||||
secondary instance started. When called from the primary instance will
|
||||
return `0`.
|
||||
- Depricated secondary instances count.
|
||||
- Added a sendMessage() method to send a message to the primary instance.
|
||||
- Added a receivedMessage() signal, emitted when a message is received from a
|
||||
secondary instance.
|
||||
- The SingleApplication constructor's third parameter is now a bool
|
||||
specifying if the current instance should be allowed to run as a secondary
|
||||
instance if there is already a primary instance.
|
||||
- The SingleApplication constructor accept a fourth parameter specifying if
|
||||
the SingleApplication block should be User-wide or System-wide.
|
||||
- SingleApplication no longer relies on `applicationName` and
|
||||
`organizationName` to be set. It instead concatenates all of the following
|
||||
data and computes a `SHA256` hash which is used as the key of the
|
||||
`QSharedMemory` block and the `QLocalServer`. Since at least
|
||||
`applicationFilePath` is always present there is no need to explicitly set
|
||||
any of the following prior to initialising `SingleApplication`.
|
||||
- `QCoreApplication::applicationName`
|
||||
- `QCoreApplication::applicationVersion`
|
||||
- `QCoreApplication::applicationFilePath`
|
||||
- `QCoreApplication::organizationName`
|
||||
- `QCoreApplication::organizationDomain`
|
||||
- User name or home directory path if in User mode
|
||||
- The primary instance is no longer notified when a secondary instance had
|
||||
been started by default. A `Mode` flag for this feature exists.
|
||||
- Added `instanceNumber()` which represents a unique identifier for each
|
||||
secondary instance started. When called from the primary instance will
|
||||
return `0`.
|
||||
|
||||
__v2.4__
|
||||
--------
|
||||
## **v2.4**
|
||||
|
||||
* Stability improvements
|
||||
* Support for secondary instances.
|
||||
* The library now recovers safely after the primary process has crashed
|
||||
and the shared memory had not been deleted.
|
||||
- Stability improvements
|
||||
- Support for secondary instances.
|
||||
- The library now recovers safely after the primary process has crashed
|
||||
and the shared memory had not been deleted.
|
||||
|
||||
__v2.3__
|
||||
--------
|
||||
## **v2.3**
|
||||
|
||||
* Improved pimpl design and inheritance safety.
|
||||
- Improved pimpl design and inheritance safety.
|
||||
|
||||
_Vladislav Pyatnichenko_
|
||||
_Vladislav Pyatnichenko_
|
||||
|
||||
__v2.2__
|
||||
--------
|
||||
## **v2.2**
|
||||
|
||||
* The `QAPPLICATION_CLASS` macro can now be defined in the file including the
|
||||
Single Application header or with a `DEFINES+=` statement in the project file.
|
||||
- The `QAPPLICATION_CLASS` macro can now be defined in the file including the
|
||||
Single Application header or with a `DEFINES+=` statement in the project file.
|
||||
|
||||
__v2.1__
|
||||
--------
|
||||
## **v2.1**
|
||||
|
||||
* A race condition can no longer occur when starting two processes nearly
|
||||
simultaneously.
|
||||
- A race condition can no longer occur when starting two processes nearly
|
||||
simultaneously.
|
||||
|
||||
Fix issue [#3](https://github.com/itay-grudev/SingleApplication/issues/3)
|
||||
Fix issue [#3](https://github.com/itay-grudev/SingleApplication/issues/3)
|
||||
|
||||
__v2.0__
|
||||
--------
|
||||
## **v2.0**
|
||||
|
||||
* SingleApplication is now being passed a reference to `argc` instead of a
|
||||
copy.
|
||||
- SingleApplication is now being passed a reference to `argc` instead of a
|
||||
copy.
|
||||
|
||||
Fix issue [#1](https://github.com/itay-grudev/SingleApplication/issues/1)
|
||||
Fix issue [#1](https://github.com/itay-grudev/SingleApplication/issues/1)
|
||||
|
||||
* Improved documentation.
|
||||
- Improved documentation.
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
SingleApplication
|
||||
=================
|
||||
# SingleApplication
|
||||
|
||||
This is a replacement of the QtSingleApplication for `Qt5`.
|
||||
|
||||
|
@ -7,8 +6,7 @@ Keeps the Primary Instance of your Application and kills each subsequent
|
|||
instances. It can (if enabled) spawn secondary (non-related to the primary)
|
||||
instances and can send data to the primary instance from secondary instances.
|
||||
|
||||
Usage
|
||||
-----
|
||||
## Usage
|
||||
|
||||
The `SingleApplication` class inherits from whatever `Q[Core|Gui]Application`
|
||||
class you specify via the `QAPPLICATION_CLASS` macro (`QCoreApplication` is the
|
||||
|
@ -59,8 +57,7 @@ include(singleapplication/singleapplication.pri)
|
|||
DEFINES += QAPPLICATION_CLASS=QApplication
|
||||
```
|
||||
|
||||
The `Instance Started` signal
|
||||
------------------------
|
||||
## The `Instance Started` signal
|
||||
|
||||
The SingleApplication class implements a `instanceStarted()` signal. You can
|
||||
bind to that signal to raise your application's window when a new instance had
|
||||
|
@ -80,13 +77,11 @@ Using `SingleApplication::instance()` is a neat way to get the
|
|||
`SingleApplication` instance for binding to it's signals anywhere in your
|
||||
program.
|
||||
|
||||
__Note:__ On Windows the ability to bring the application windows to the
|
||||
**Note:** On Windows the ability to bring the application windows to the
|
||||
foreground is restricted. See [Windows specific implementations](Windows.md)
|
||||
for a workaround and an example implementation.
|
||||
|
||||
|
||||
Secondary Instances
|
||||
-------------------
|
||||
## Secondary Instances
|
||||
|
||||
If you want to be able to launch additional Secondary Instances (not related to
|
||||
your Primary Instance) you have to enable that with the third parameter of the
|
||||
|
@ -109,9 +104,9 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
```
|
||||
|
||||
*__Note:__ A secondary instance won't cause the emission of the
|
||||
_**Note:** A secondary instance won't cause the emission of the
|
||||
`instanceStarted()` signal by default. See `SingleApplication::Mode` for more
|
||||
details.*
|
||||
details._
|
||||
|
||||
You can check whether your instance is a primary or secondary with the following
|
||||
methods:
|
||||
|
@ -122,11 +117,10 @@ app.isPrimary();
|
|||
app.isSecondary();
|
||||
```
|
||||
|
||||
*__Note:__ If your Primary Instance is terminated a newly launched instance
|
||||
will replace the Primary one even if the Secondary flag has been set.*
|
||||
_**Note:** If your Primary Instance is terminated a newly launched instance
|
||||
will replace the Primary one even if the Secondary flag has been set._
|
||||
|
||||
API
|
||||
---
|
||||
## API
|
||||
|
||||
### Members
|
||||
|
||||
|
@ -142,15 +136,15 @@ used to notify the primary instance whenever a secondary instance had been
|
|||
started (disabled by default). `timeout` specifies the maximum time in
|
||||
milliseconds to wait for blocking operations.
|
||||
|
||||
*__Note:__ `argc` and `argv` may be changed as Qt removes arguments that it
|
||||
recognizes.*
|
||||
_**Note:** `argc` and `argv` may be changed as Qt removes arguments that it
|
||||
recognizes._
|
||||
|
||||
*__Note:__ `Mode::SecondaryNotification` only works if set on both the primary
|
||||
and the secondary instance.*
|
||||
_**Note:** `Mode::SecondaryNotification` only works if set on both the primary
|
||||
and the secondary instance._
|
||||
|
||||
*__Note:__ Operating system can restrict the shared memory blocks to the same
|
||||
_**Note:** Operating system can restrict the shared memory blocks to the same
|
||||
user, in which case the User/System modes will have no effect and the block will
|
||||
be user wide.*
|
||||
be user wide._
|
||||
|
||||
---
|
||||
|
||||
|
@ -174,6 +168,7 @@ Returns if the instance is the primary instance.
|
|||
```cpp
|
||||
bool SingleApplication::isSecondary()
|
||||
```
|
||||
|
||||
Returns if the instance is a secondary instance.
|
||||
|
||||
---
|
||||
|
@ -217,28 +212,27 @@ Triggered whenever there is a message received from a secondary instance.
|
|||
enum SingleApplication::Mode
|
||||
```
|
||||
|
||||
* `Mode::User` - The SingleApplication block should apply user wide. This adds
|
||||
user specific data to the key used for the shared memory and server name.
|
||||
This is the default functionality.
|
||||
* `Mode::System` – The SingleApplication block applies system-wide.
|
||||
* `Mode::SecondaryNotification` – Whether to trigger `instanceStarted()` even
|
||||
whenever secondary instances are started.
|
||||
* `Mode::ExcludeAppPath` – Excludes the application path from the server name
|
||||
(and memory block) hash.
|
||||
* `Mode::ExcludeAppVersion` – Excludes the application version from the server
|
||||
name (and memory block) hash.
|
||||
- `Mode::User` - The SingleApplication block should apply user wide. This adds
|
||||
user specific data to the key used for the shared memory and server name.
|
||||
This is the default functionality.
|
||||
- `Mode::System` – The SingleApplication block applies system-wide.
|
||||
- `Mode::SecondaryNotification` – Whether to trigger `instanceStarted()` even
|
||||
whenever secondary instances are started.
|
||||
- `Mode::ExcludeAppPath` – Excludes the application path from the server name
|
||||
(and memory block) hash.
|
||||
- `Mode::ExcludeAppVersion` – Excludes the application version from the server
|
||||
name (and memory block) hash.
|
||||
|
||||
*__Note:__ `Mode::SecondaryNotification` only works if set on both the primary
|
||||
and the secondary instance.*
|
||||
_**Note:** `Mode::SecondaryNotification` only works if set on both the primary
|
||||
and the secondary instance._
|
||||
|
||||
*__Note:__ Operating system can restrict the shared memory blocks to the same
|
||||
_**Note:** Operating system can restrict the shared memory blocks to the same
|
||||
user, in which case the User/System modes will have no effect and the block will
|
||||
be user wide.*
|
||||
be user wide._
|
||||
|
||||
---
|
||||
|
||||
Versioning
|
||||
----------
|
||||
## Versioning
|
||||
|
||||
Each major version introduces either very significant changes or is not
|
||||
backwards compatible with the previous version. Minor versions only add
|
||||
|
@ -246,20 +240,19 @@ additional features, bug fixes or performance improvements and are backwards
|
|||
compatible with the previous release. See [`CHANGELOG.md`](CHANGELOG.md) for
|
||||
more details.
|
||||
|
||||
Implementation
|
||||
--------------
|
||||
## Implementation
|
||||
|
||||
The library is implemented with a QSharedMemory block which is thread safe and
|
||||
guarantees a race condition will not occur. It also uses a QLocalSocket to
|
||||
notify the main process that a new instance had been spawned and thus invoke the
|
||||
`instanceStarted()` signal and for messaging the primary instance.
|
||||
|
||||
Additionally the library can recover from being forcefully killed on *nix
|
||||
Additionally the library can recover from being forcefully killed on \*nix
|
||||
systems and will reset the memory block given that there are no other
|
||||
instances running.
|
||||
|
||||
License
|
||||
-------
|
||||
## License
|
||||
|
||||
This library and it's supporting documentation are released under
|
||||
`The MIT License (MIT)` with the exception of the Qt calculator examples which
|
||||
is distributed under the BSD license.
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
Windows Specific Implementations
|
||||
================================
|
||||
# Windows Specific Implementations
|
||||
|
||||
Setting the foreground window
|
||||
-----------------------------
|
||||
## Setting the foreground window
|
||||
|
||||
In the `instanceStarted()` example in the `README` we demonstrated how an
|
||||
application can bring it's primary instance window whenever a second copy
|
||||
|
|
|
@ -10,12 +10,12 @@ APP=QOwnNotes
|
|||
# this directory name will also be shown in the title when the DMG is mounted
|
||||
TEMPDIR=$APP
|
||||
SIGNATURE="Patrizio Bekerle"
|
||||
NAME=`uname`
|
||||
NAME=$(uname)
|
||||
PLIST=$APP.app/Contents/Info.plist
|
||||
|
||||
if [ "$NAME" != "Darwin" ]; then
|
||||
echo "This is not a Mac"
|
||||
exit 1
|
||||
echo "This is not a Mac"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Changing bundle identifier"
|
||||
|
@ -53,10 +53,10 @@ security unlock-keychain -p travis osx-build.keychain
|
|||
echo "Calling macdeployqt"
|
||||
$QTDIR/bin/macdeployqt ./$APP.app
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to run macdeployqt"
|
||||
# remove keys
|
||||
security delete-keychain osx-build.keychain
|
||||
exit 1
|
||||
echo "Failed to run macdeployqt"
|
||||
# remove keys
|
||||
security delete-keychain osx-build.keychain
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# trying to fix the macdeployqt problem with making the binary use the Qt
|
||||
|
@ -76,24 +76,24 @@ echo "Create $TEMPDIR"
|
|||
#Create a temporary directory if one doesn't exist
|
||||
mkdir -p $TEMPDIR
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create temporary folder"
|
||||
exit 1
|
||||
echo "Failed to create temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Clean $TEMPDIR"
|
||||
#Delete the contents of any previous builds
|
||||
rm -Rf ./$TEMPDIR/*
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Move application bundle"
|
||||
#Move the application to the temporary directory
|
||||
mv ./$APP.app ./$TEMPDIR
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to move application bundle"
|
||||
exit 1
|
||||
echo "Failed to move application bundle"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#echo "Sign the code"
|
||||
|
@ -109,8 +109,8 @@ echo "Create symbolic link"
|
|||
#Create a symbolic link to the applications folder
|
||||
ln -s /Applications ./$TEMPDIR/Applications
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create link to /Applications"
|
||||
exit 1
|
||||
echo "Failed to create link to /Applications"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Create new disk image"
|
||||
|
@ -118,8 +118,8 @@ echo "Create new disk image"
|
|||
rm -f ./$APP.dmg
|
||||
hdiutil create -srcfolder ./$TEMPDIR -ov -format UDBZ -fs HFS+ ./$APP.dmg
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to create disk image"
|
||||
exit 1
|
||||
echo "Failed to create disk image"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#echo "Code signing disk image"
|
||||
|
@ -139,8 +139,8 @@ security delete-keychain osx-build.keychain
|
|||
# delete the temporary directory
|
||||
rm -Rf ./$TEMPDIR/*
|
||||
if [ "$?" -ne "0" ]; then
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
echo "Failed to clean temporary folder"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -5,5 +5,5 @@
|
|||
#
|
||||
|
||||
sudo pip install cpp-coveralls
|
||||
coveralls -b `pwd`/unit_tests/ -r `readlink -m ./../` -e tests/ -E .+/moc_.* -E .+/qrc_.* -E .+/qxt.* -E .+/ui_.* > coveralls.log
|
||||
coveralls -b $(pwd)/unit_tests/ -r $(readlink -m ./../) -e tests/ -E .+/moc_.* -E .+/qrc_.* -E .+/qxt.* -E .+/ui_.* >coveralls.log
|
||||
exit 0
|
||||
|
|
|
@ -16,8 +16,7 @@ BRANCH=main
|
|||
#BRANCH=release
|
||||
|
||||
# https://wiki.ubuntu.com/Releases
|
||||
UBUNTU_RELEASES=( "jammy" "noble" "oracular" )
|
||||
|
||||
UBUNTU_RELEASES=("jammy" "noble" "oracular")
|
||||
|
||||
DATE=$(LC_ALL=C date +'%a, %d %b %Y %T %z')
|
||||
PROJECT_PATH="/tmp/QOwnNotes-$$"
|
||||
|
@ -30,21 +29,22 @@ export DEBEMAIL="patrizio@bekerle.com"
|
|||
#echo "/usr/share/cdbs/1/class/qmake.mk"
|
||||
#cat /usr/share/cdbs/1/class/qmake.mk
|
||||
|
||||
while test $# -gt 0
|
||||
do
|
||||
case "$1" in
|
||||
--no-upload) UPLOAD="false"
|
||||
;;
|
||||
--no-orig-tar-upload) DEBUILD_ARGS="-sd"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
--no-upload)
|
||||
UPLOAD="false"
|
||||
;;
|
||||
--no-orig-tar-upload)
|
||||
DEBUILD_ARGS="-sd"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
echo "Started the debian source packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
# checkout the source code
|
||||
|
@ -58,15 +58,15 @@ git submodule update --init
|
|||
lrelease src/QOwnNotes.pro
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
else
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" > src/version.h
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" >src/version.h
|
||||
fi
|
||||
|
||||
# set release string to disable the update check
|
||||
echo "#define RELEASE \"Launchpad PPA Qt6\"" > src/release.h
|
||||
echo '#define RELEASE "Launchpad PPA Qt6"' >src/release.h
|
||||
|
||||
changelogText="Released version $QOWNNOTES_VERSION"
|
||||
|
||||
|
@ -89,41 +89,39 @@ changelogPath=debian/changelog
|
|||
gpg --list-secret-keys
|
||||
|
||||
# build for every Ubuntu release
|
||||
for ubuntuRelease in "${UBUNTU_RELEASES[@]}"
|
||||
do
|
||||
:
|
||||
echo "Building for $ubuntuRelease..."
|
||||
cd $qownnotesSrcDir || exit 1
|
||||
for ubuntuRelease in "${UBUNTU_RELEASES[@]}"; do
|
||||
:
|
||||
echo "Building for $ubuntuRelease..."
|
||||
cd $qownnotesSrcDir || exit 1
|
||||
|
||||
# get the modified qt6 files in place
|
||||
# cp ../ubuntu-launchpad/qt6/* debian
|
||||
cp /QOwnNotes/ubuntu-launchpad/qt6/* debian
|
||||
# get the modified qt6 files in place
|
||||
# cp ../ubuntu-launchpad/qt6/* debian
|
||||
cp /QOwnNotes/ubuntu-launchpad/qt6/* debian
|
||||
|
||||
versionPart="$QOWNNOTES_VERSION-1ubuntu3ppa1~${ubuntuRelease}1"
|
||||
versionPart="$QOWNNOTES_VERSION-1ubuntu3ppa1~${ubuntuRelease}1"
|
||||
|
||||
# update the changelog file
|
||||
#dch -v $versionPart $changelogText
|
||||
#dch -r $changelogText
|
||||
# update the changelog file
|
||||
#dch -v $versionPart $changelogText
|
||||
#dch -r $changelogText
|
||||
|
||||
# create the changelog file
|
||||
echo "qownnotes-qt6 ($versionPart) $ubuntuRelease; urgency=low" > $changelogPath
|
||||
echo "" >> $changelogPath
|
||||
echo " * $changelogText" >> $changelogPath
|
||||
echo "" >> $changelogPath
|
||||
echo " -- $DEBFULLNAME <$DEBEMAIL> $DATE" >> $changelogPath
|
||||
# create the changelog file
|
||||
echo "qownnotes-qt6 ($versionPart) $ubuntuRelease; urgency=low" >$changelogPath
|
||||
echo "" >>$changelogPath
|
||||
echo " * $changelogText" >>$changelogPath
|
||||
echo "" >>$changelogPath
|
||||
echo " -- $DEBFULLNAME <$DEBEMAIL> $DATE" >>$changelogPath
|
||||
|
||||
# launch debuild
|
||||
debuild -S -sa -k$SIGNING_EMAIL $DEBUILD_ARGS
|
||||
cd ..
|
||||
# launch debuild
|
||||
debuild -S -sa -k$SIGNING_EMAIL $DEBUILD_ARGS
|
||||
cd ..
|
||||
|
||||
# send to launchpad
|
||||
if [ "$UPLOAD" = "true" ]; then
|
||||
dput ppa:pbek/qownnotes-qt6 qownnotes-qt6_${versionPart}_source.changes
|
||||
fi;
|
||||
# send to launchpad
|
||||
if [ "$UPLOAD" = "true" ]; then
|
||||
dput ppa:pbek/qownnotes-qt6 qownnotes-qt6_${versionPart}_source.changes
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -21,8 +21,7 @@
|
|||
|
||||
BRANCH=main
|
||||
#BRANCH=master
|
||||
UBUNTU_RELEASES=( "trusty" )
|
||||
|
||||
UBUNTU_RELEASES=("trusty")
|
||||
|
||||
DATE=$(LC_ALL=C date +'%a, %d %b %Y %T %z')
|
||||
PROJECT_PATH="/tmp/QOwnNotes-$$"
|
||||
|
@ -33,22 +32,22 @@ GPG_PUBLIC_KEY=F5161BD3
|
|||
export DEBFULLNAME="Patrizio Bekerle"
|
||||
export DEBEMAIL="patrizio@bekerle.com"
|
||||
|
||||
|
||||
while test $# -gt 0
|
||||
do
|
||||
case "$1" in
|
||||
--no-upload) UPLOAD="false"
|
||||
;;
|
||||
--no-orig-tar-upload) DEBUILD_ARGS="-sd"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
--no-upload)
|
||||
UPLOAD="false"
|
||||
;;
|
||||
--no-orig-tar-upload)
|
||||
DEBUILD_ARGS="-sd"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
echo "Started the debian source packaging process for trusty, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
# checkout the source code
|
||||
|
@ -59,15 +58,15 @@ cd $PROJECT_PATH
|
|||
git submodule update --init
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
else
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" > src/version.h
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" >src/version.h
|
||||
fi
|
||||
|
||||
# set release string to disable the update check
|
||||
echo "#define RELEASE \"Launchpad PPA\"" > src/release.h
|
||||
echo '#define RELEASE "Launchpad PPA"' >src/release.h
|
||||
|
||||
changelogText="Released version $QOWNNOTES_VERSION"
|
||||
|
||||
|
@ -84,41 +83,39 @@ tar -czf $qownnotesSrcDir.orig.tar.gz $qownnotesSrcDir
|
|||
changelogPath=debian/changelog
|
||||
|
||||
# build for every Ubuntu release
|
||||
for ubuntuRelease in "${UBUNTU_RELEASES[@]}"
|
||||
do
|
||||
:
|
||||
echo "Building for $ubuntuRelease..."
|
||||
cd $qownnotesSrcDir
|
||||
for ubuntuRelease in "${UBUNTU_RELEASES[@]}"; do
|
||||
:
|
||||
echo "Building for $ubuntuRelease..."
|
||||
cd $qownnotesSrcDir
|
||||
|
||||
# get the modified trusty files in place
|
||||
cp ../ubuntu-launchpad/trusty/* debian
|
||||
# cp ../ubuntu-launchpad/trusty/rules debian
|
||||
# get the modified trusty files in place
|
||||
cp ../ubuntu-launchpad/trusty/* debian
|
||||
# cp ../ubuntu-launchpad/trusty/rules debian
|
||||
|
||||
versionPart="$QOWNNOTES_VERSION-1ubuntu3ppa1~${ubuntuRelease}1"
|
||||
versionPart="$QOWNNOTES_VERSION-1ubuntu3ppa1~${ubuntuRelease}1"
|
||||
|
||||
# update the changelog file
|
||||
#dch -v $versionPart $changelogText
|
||||
#dch -r $changelogText
|
||||
# update the changelog file
|
||||
#dch -v $versionPart $changelogText
|
||||
#dch -r $changelogText
|
||||
|
||||
# create the changelog file
|
||||
echo "qownnotes ($versionPart) $ubuntuRelease; urgency=low" > $changelogPath
|
||||
echo "" >> $changelogPath
|
||||
echo " * $changelogText" >> $changelogPath
|
||||
echo "" >> $changelogPath
|
||||
echo " -- $DEBFULLNAME <$DEBEMAIL> $DATE" >> $changelogPath
|
||||
# create the changelog file
|
||||
echo "qownnotes ($versionPart) $ubuntuRelease; urgency=low" >$changelogPath
|
||||
echo "" >>$changelogPath
|
||||
echo " * $changelogText" >>$changelogPath
|
||||
echo "" >>$changelogPath
|
||||
echo " -- $DEBFULLNAME <$DEBEMAIL> $DATE" >>$changelogPath
|
||||
|
||||
# launch debuild
|
||||
debuild -S -sa -k$GPG_PUBLIC_KEY $DEBUILD_ARGS
|
||||
cd ..
|
||||
# launch debuild
|
||||
debuild -S -sa -k$GPG_PUBLIC_KEY $DEBUILD_ARGS
|
||||
cd ..
|
||||
|
||||
# send to launchpad
|
||||
if [ "$UPLOAD" = "true" ]; then
|
||||
dput ppa:pbek/qownnotes-trusty qownnotes_${versionPart}_source.changes
|
||||
fi
|
||||
# send to launchpad
|
||||
if [ "$UPLOAD" = "true" ]; then
|
||||
dput ppa:pbek/qownnotes-trusty qownnotes_${versionPart}_source.changes
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -16,8 +16,7 @@ BRANCH=main
|
|||
#BRANCH=release
|
||||
|
||||
# https://wiki.ubuntu.com/Releases
|
||||
UBUNTU_RELEASES=( "bionic" "focal" "jammy" "noble" "oracular" )
|
||||
|
||||
UBUNTU_RELEASES=("bionic" "focal" "jammy" "noble" "oracular")
|
||||
|
||||
DATE=$(LC_ALL=C date +'%a, %d %b %Y %T %z')
|
||||
PROJECT_PATH="/tmp/QOwnNotes-$$"
|
||||
|
@ -27,22 +26,22 @@ SIGNING_EMAIL=patrizio@bekerle.com
|
|||
export DEBFULLNAME="Patrizio Bekerle"
|
||||
export DEBEMAIL="patrizio@bekerle.com"
|
||||
|
||||
|
||||
while test $# -gt 0
|
||||
do
|
||||
case "$1" in
|
||||
--no-upload) UPLOAD="false"
|
||||
;;
|
||||
--no-orig-tar-upload) DEBUILD_ARGS="-sd"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
--no-upload)
|
||||
UPLOAD="false"
|
||||
;;
|
||||
--no-orig-tar-upload)
|
||||
DEBUILD_ARGS="-sd"
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
echo "Started the debian source packaging process, using latest '$BRANCH' git tree"
|
||||
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
||||
# checkout the source code
|
||||
|
@ -56,15 +55,15 @@ git submodule update --init
|
|||
lrelease src/QOwnNotes.pro
|
||||
|
||||
if [ -z $QOWNNOTES_VERSION ]; then
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=`cat src/version.h | sed "s/[^0-9,.]//g"`
|
||||
# get version from version.h
|
||||
QOWNNOTES_VERSION=$(cat src/version.h | sed "s/[^0-9,.]//g")
|
||||
else
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" > src/version.h
|
||||
# set new version if we want to override it
|
||||
echo "#define VERSION \"$QOWNNOTES_VERSION\"" >src/version.h
|
||||
fi
|
||||
|
||||
# set release string to disable the update check
|
||||
echo "#define RELEASE \"Launchpad PPA\"" > src/release.h
|
||||
echo '#define RELEASE "Launchpad PPA"' >src/release.h
|
||||
|
||||
changelogText="Released version $QOWNNOTES_VERSION"
|
||||
|
||||
|
@ -84,37 +83,35 @@ changelogPath=debian/changelog
|
|||
gpg --list-secret-keys
|
||||
|
||||
# build for every Ubuntu release
|
||||
for ubuntuRelease in "${UBUNTU_RELEASES[@]}"
|
||||
do
|
||||
:
|
||||
echo "Building for $ubuntuRelease..."
|
||||
cd $qownnotesSrcDir || exit 1
|
||||
for ubuntuRelease in "${UBUNTU_RELEASES[@]}"; do
|
||||
:
|
||||
echo "Building for $ubuntuRelease..."
|
||||
cd $qownnotesSrcDir || exit 1
|
||||
|
||||
versionPart="$QOWNNOTES_VERSION-1ubuntu3ppa1~${ubuntuRelease}1"
|
||||
versionPart="$QOWNNOTES_VERSION-1ubuntu3ppa1~${ubuntuRelease}1"
|
||||
|
||||
# update the changelog file
|
||||
#dch -v $versionPart $changelogText
|
||||
#dch -r $changelogText
|
||||
# update the changelog file
|
||||
#dch -v $versionPart $changelogText
|
||||
#dch -r $changelogText
|
||||
|
||||
# create the changelog file
|
||||
echo "qownnotes ($versionPart) $ubuntuRelease; urgency=low" > $changelogPath
|
||||
echo "" >> $changelogPath
|
||||
echo " * $changelogText" >> $changelogPath
|
||||
echo "" >> $changelogPath
|
||||
echo " -- $DEBFULLNAME <$DEBEMAIL> $DATE" >> $changelogPath
|
||||
# create the changelog file
|
||||
echo "qownnotes ($versionPart) $ubuntuRelease; urgency=low" >$changelogPath
|
||||
echo "" >>$changelogPath
|
||||
echo " * $changelogText" >>$changelogPath
|
||||
echo "" >>$changelogPath
|
||||
echo " -- $DEBFULLNAME <$DEBEMAIL> $DATE" >>$changelogPath
|
||||
|
||||
# launch debuild
|
||||
debuild -S -sa -k$SIGNING_EMAIL $DEBUILD_ARGS
|
||||
cd ..
|
||||
# launch debuild
|
||||
debuild -S -sa -k$SIGNING_EMAIL $DEBUILD_ARGS
|
||||
cd ..
|
||||
|
||||
# send to launchpad
|
||||
if [ "$UPLOAD" = "true" ]; then
|
||||
dput ppa:pbek/qownnotes qownnotes_${versionPart}_source.changes
|
||||
fi;
|
||||
# send to launchpad
|
||||
if [ "$UPLOAD" = "true" ]; then
|
||||
dput ppa:pbek/qownnotes qownnotes_${versionPart}_source.changes
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
# remove everything after we are done
|
||||
if [ -d $PROJECT_PATH ]; then
|
||||
rm -rf $PROJECT_PATH
|
||||
rm -rf $PROJECT_PATH
|
||||
fi
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
version: '3'
|
||||
version: "3"
|
||||
services:
|
||||
dev:
|
||||
image: node:20
|
||||
|
@ -7,8 +7,7 @@ services:
|
|||
user: 1000:1000
|
||||
ports:
|
||||
- "8080:8080"
|
||||
command: ['/bin/bash', '-c', 'cd /app && npm install && npm run dev']
|
||||
|
||||
command: ["/bin/bash", "-c", "cd /app && npm install && npm run dev"]
|
||||
# web:
|
||||
# image: img-qownnotes-webpage
|
||||
# build: .
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
}:
|
||||
{ pkgs ? import <nixpkgs> { }, }:
|
||||
|
||||
let
|
||||
nodejs = pkgs.nodejs;
|
||||
|
@ -11,7 +9,8 @@ let
|
|||
version = "1.0.0";
|
||||
src = ./.;
|
||||
|
||||
npmDepsHash = "sha256-2dE7SCHZ3VOYV8jW19hukYMqU0dQQ1Rxcv75T4TVacc="; # You'll need to replace this
|
||||
npmDepsHash =
|
||||
"sha256-2dE7SCHZ3VOYV8jW19hukYMqU0dQQ1Rxcv75T4TVacc="; # You'll need to replace this
|
||||
|
||||
buildInputs = [ pkgs.bash ];
|
||||
|
||||
|
@ -36,15 +35,11 @@ let
|
|||
'';
|
||||
};
|
||||
|
||||
in
|
||||
pkgs.dockerTools.buildLayeredImage {
|
||||
in pkgs.dockerTools.buildLayeredImage {
|
||||
name = "qowonnotes-webpage";
|
||||
tag = "latest";
|
||||
|
||||
contents = [
|
||||
nginx
|
||||
npmPackage
|
||||
];
|
||||
contents = [ nginx npmPackage ];
|
||||
|
||||
config = {
|
||||
Cmd = [
|
||||
|
@ -54,9 +49,7 @@ pkgs.dockerTools.buildLayeredImage {
|
|||
"-g"
|
||||
"daemon off;"
|
||||
];
|
||||
ExposedPorts = {
|
||||
"80/tcp" = { };
|
||||
};
|
||||
ExposedPorts = { "80/tcp" = { }; };
|
||||
};
|
||||
|
||||
# extraCommands = ''
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# Deprecated: Is now done with Crowdin directly!
|
||||
#
|
||||
|
||||
compileContent(){
|
||||
compileContent() {
|
||||
echo -e "[START $1]\n\n"
|
||||
cat "$1"
|
||||
echo -e "\n\n[END $1]\n"
|
||||
|
@ -13,4 +13,4 @@ compileContent(){
|
|||
# shellcheck disable=SC2164
|
||||
cd src
|
||||
export -f compileContent
|
||||
find -type f \( -iname "*.md" ! -iname "changelog.md" \) ! -path "./de/*" ! -path "./blog/*" ! -path "changelog.md" ! -path "./.vuepress/*" -exec bash -c 'compileContent "$0"' {} \; > english.txt
|
||||
find -type f \( -iname "*.md" ! -iname "changelog.md" \) ! -path "./de/*" ! -path "./blog/*" ! -path "changelog.md" ! -path "./.vuepress/*" -exec bash -c 'compileContent "$0"' {} \; >english.txt
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
#
|
||||
|
||||
# Define the original and replacement lines
|
||||
original_line1="(new Date(\$page.frontmatter.date)).toISOString()"
|
||||
original_line1='(new Date($page.frontmatter.date)).toISOString()'
|
||||
replacement_line1="(Number.isNaN(new Date(\$page.frontmatter.date).getTime()) ? '' : new Date(\$page.frontmatter.date).toISOString())"
|
||||
original_line2="(new Date(\$page.lastUpdated)).toISOString()"
|
||||
original_line2='(new Date($page.lastUpdated)).toISOString()'
|
||||
replacement_line2="(Number.isNaN(new Date(\$page.lastUpdated).getTime()) ? '' : new Date(\$page.lastUpdated).toISOString())"
|
||||
|
||||
# Specify the file in which you want to make the replacement
|
||||
|
@ -18,8 +18,6 @@ file_to_edit="node_modules/vuepress-plugin-seo/index.js"
|
|||
sed -i "s/$original_line1/$replacement_line1/g" "$file_to_edit"
|
||||
sed -i "s/$original_line2/$replacement_line2/g" "$file_to_edit"
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Fix Date RangeError in node_modules/vuepress-plugin-sitemap/index.js
|
||||
#
|
||||
|
|
|
@ -1,9 +1,2 @@
|
|||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
}:
|
||||
pkgs.mkShell {
|
||||
nativeBuildInputs = with pkgs; [
|
||||
nodejs_20
|
||||
zellij
|
||||
];
|
||||
}
|
||||
{ pkgs ? import <nixpkgs> { }, }:
|
||||
pkgs.mkShell { nativeBuildInputs = with pkgs; [ nodejs_20 zellij ]; }
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
<template>
|
||||
<v-subheader class="blog">Date: {{fm.date | dateParse('YYYY-MM-DDTHH') | dateFormat('YYYY-MM-DD')}}</v-subheader>
|
||||
<v-subheader class="blog"
|
||||
>Date:
|
||||
{{
|
||||
fm.date | dateParse("YYYY-MM-DDTHH") | dateFormat("YYYY-MM-DD")
|
||||
}}</v-subheader
|
||||
>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: ['fm'],
|
||||
}
|
||||
export default {
|
||||
props: ["fm"],
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -1,19 +1,21 @@
|
|||
<template>
|
||||
<div>
|
||||
<v-card
|
||||
v-for="page in files"
|
||||
class="mx-auto"
|
||||
outlined
|
||||
>
|
||||
<v-card v-for="page in files" class="mx-auto" outlined>
|
||||
<v-list-item three-line>
|
||||
<v-list-item-content>
|
||||
<div class="overline mb-4">
|
||||
{{page.frontmatter.date | dateParse('YYYY-MM-DDTHH') | dateFormat('YYYY-MM-DD')}}
|
||||
{{
|
||||
page.frontmatter.date
|
||||
| dateParse("YYYY-MM-DDTHH")
|
||||
| dateFormat("YYYY-MM-DD")
|
||||
}}
|
||||
</div>
|
||||
<v-list-item-title class="headline mb-1">
|
||||
<a v-bind:href="page.path">{{page.title}}</a>
|
||||
<a v-bind:href="page.path">{{ page.title }}</a>
|
||||
</v-list-item-title>
|
||||
<v-list-item-subtitle>{{page.frontmatter.description}}</v-list-item-subtitle>
|
||||
<v-list-item-subtitle>{{
|
||||
page.frontmatter.description
|
||||
}}</v-list-item-subtitle>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</v-card>
|
||||
|
@ -25,13 +27,12 @@ export default {
|
|||
computed: {
|
||||
files() {
|
||||
// console.log("this.$site.pages.reverse()", this.$site.pages.reverse());
|
||||
return this.$site.pages.reverse()
|
||||
.filter(p => {
|
||||
return p.path.indexOf('/blog/') >= 0 && p.title !== 'Overview';
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.$site.pages.reverse().filter((p) => {
|
||||
return p.path.indexOf("/blog/") >= 0 && p.title !== "Overview";
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.v-card {
|
||||
|
|
|
@ -1,44 +1,34 @@
|
|||
<template>
|
||||
<div>
|
||||
<v-snackbar
|
||||
id="poll"
|
||||
v-model="snackbar"
|
||||
fixed
|
||||
bottom
|
||||
right
|
||||
color="#389d70"
|
||||
:timeout="-1"
|
||||
id="poll"
|
||||
v-model="snackbar"
|
||||
fixed
|
||||
bottom
|
||||
right
|
||||
color="#389d70"
|
||||
:timeout="-1"
|
||||
>
|
||||
<v-text-field
|
||||
v-model="answer"
|
||||
:counter="200"
|
||||
label="How did you find out about QOwnNotes?"
|
||||
required
|
||||
@keydown.enter="submit"
|
||||
v-model="answer"
|
||||
:counter="200"
|
||||
label="How did you find out about QOwnNotes?"
|
||||
required
|
||||
@keydown.enter="submit"
|
||||
></v-text-field>
|
||||
|
||||
<v-btn
|
||||
light
|
||||
@click="submit"
|
||||
title="Submit your answer"
|
||||
>
|
||||
Submit
|
||||
</v-btn>
|
||||
<v-btn
|
||||
text
|
||||
title="Close poll"
|
||||
@click="snackbar = false"
|
||||
>
|
||||
<v-btn light @click="submit" title="Submit your answer"> Submit </v-btn>
|
||||
<v-btn text title="Close poll" @click="snackbar = false">
|
||||
<v-icon>mdi-close</v-icon>
|
||||
</v-btn>
|
||||
</v-snackbar>
|
||||
<v-snackbar
|
||||
v-model="success"
|
||||
fixed
|
||||
bottom
|
||||
right
|
||||
color="#389d70"
|
||||
:timeout="1500"
|
||||
v-model="success"
|
||||
fixed
|
||||
bottom
|
||||
right
|
||||
color="#389d70"
|
||||
:timeout="1500"
|
||||
>
|
||||
Thank you for letting us know!
|
||||
</v-snackbar>
|
||||
|
@ -46,57 +36,59 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: ['action', 'name'],
|
||||
data() {
|
||||
return {
|
||||
snackbar: false,
|
||||
success: false,
|
||||
answer: "",
|
||||
pollId: 1,
|
||||
sentPolls: []
|
||||
export default {
|
||||
props: ["action", "name"],
|
||||
data() {
|
||||
return {
|
||||
snackbar: false,
|
||||
success: false,
|
||||
answer: "",
|
||||
pollId: 1,
|
||||
sentPolls: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.sentPolls = JSON.parse(
|
||||
window.localStorage.getItem("qon-polls") || "[]",
|
||||
);
|
||||
|
||||
// turn on poll snackbar if poll wasn't sent already
|
||||
if (!this.sentPolls.includes(this.pollId)) {
|
||||
this.snackbar = true;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
submit() {
|
||||
if (this.answer === "") {
|
||||
return;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.sentPolls = JSON.parse(window.localStorage.getItem("qon-polls") || "[]");
|
||||
|
||||
// turn on poll snackbar if poll wasn't sent already
|
||||
if (!this.sentPolls.includes(this.pollId)) {
|
||||
this.snackbar = true;
|
||||
// store that poll was sent, so it will not be asked for next time
|
||||
// (local storage will be synced across devices by the browser)
|
||||
this.sentPolls.push(this.pollId);
|
||||
window.localStorage.setItem("qon-polls", JSON.stringify(this.sentPolls));
|
||||
|
||||
// check if the Matomo library is available
|
||||
if (typeof _paq !== "undefined") {
|
||||
_paq.push(["trackEvent", "Poll", "Found out about QON", this.answer]);
|
||||
}
|
||||
|
||||
this.snackbar = false;
|
||||
this.success = true;
|
||||
},
|
||||
methods: {
|
||||
submit () {
|
||||
if (this.answer === "") {
|
||||
return;
|
||||
}
|
||||
|
||||
// store that poll was sent, so it will not be asked for next time
|
||||
// (local storage will be synced across devices by the browser)
|
||||
this.sentPolls.push(this.pollId);
|
||||
window.localStorage.setItem("qon-polls", JSON.stringify(this.sentPolls));
|
||||
|
||||
// check if the Matomo library is available
|
||||
if (typeof _paq !== 'undefined') {
|
||||
_paq.push(['trackEvent', 'Poll', 'Found out about QON', this.answer]);
|
||||
}
|
||||
|
||||
this.snackbar = false;
|
||||
this.success = true;
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
#poll .v-snack__wrapper {
|
||||
width: 352px;
|
||||
min-width: 100px;
|
||||
}
|
||||
#poll .v-snack__wrapper {
|
||||
width: 352px;
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
#poll .v-input {
|
||||
padding-top: 5px;
|
||||
/* Force LTR so the first part of the question is readable */
|
||||
direction: ltr;
|
||||
}
|
||||
#poll .v-input {
|
||||
padding-top: 5px;
|
||||
/* Force LTR so the first part of the question is readable */
|
||||
direction: ltr;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,53 +1,63 @@
|
|||
<template>
|
||||
<v-card
|
||||
class="mx-auto"
|
||||
tile
|
||||
>
|
||||
<v-row>
|
||||
<v-col
|
||||
align-self="start"
|
||||
cols="12" md="3" lg="2"
|
||||
>
|
||||
<v-avatar
|
||||
class="profile"
|
||||
color="grey"
|
||||
rounded=""
|
||||
size="100"
|
||||
tile
|
||||
>
|
||||
<v-img v-bind:src="img"></v-img>
|
||||
</v-avatar>
|
||||
</v-col>
|
||||
<v-col cols="12" md="9" lg="10">
|
||||
<v-list-item
|
||||
>
|
||||
<v-list-item-content>
|
||||
<v-list-item-title class="title">
|
||||
{{ name }}
|
||||
</v-list-item-title>
|
||||
<v-list-item-subtitle>{{ functions }}</v-list-item-subtitle>
|
||||
<a v-if="github" v-bind:href="'https://github.com/' + github" target="_blank">GitHub</a>
|
||||
<a v-if="keybase" v-bind:href="'https://keybase.io/' + keybase" target="_blank">Keybase</a>
|
||||
<a v-if="crowdin" v-bind:href="'https://crowdin.com/profile/' + crowdin" target="_blank">Crowdin</a>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-card class="mx-auto" tile>
|
||||
<v-row>
|
||||
<v-col align-self="start" cols="12" md="3" lg="2">
|
||||
<v-avatar class="profile" color="grey" rounded="" size="100" tile>
|
||||
<v-img v-bind:src="img"></v-img>
|
||||
</v-avatar>
|
||||
</v-col>
|
||||
<v-col cols="12" md="9" lg="10">
|
||||
<v-list-item>
|
||||
<v-list-item-content>
|
||||
<v-list-item-title class="title">
|
||||
{{ name }}
|
||||
</v-list-item-title>
|
||||
<v-list-item-subtitle>{{ functions }}</v-list-item-subtitle>
|
||||
<a
|
||||
v-if="github"
|
||||
v-bind:href="'https://github.com/' + github"
|
||||
target="_blank"
|
||||
>GitHub</a
|
||||
>
|
||||
<a
|
||||
v-if="keybase"
|
||||
v-bind:href="'https://keybase.io/' + keybase"
|
||||
target="_blank"
|
||||
>Keybase</a
|
||||
>
|
||||
<a
|
||||
v-if="crowdin"
|
||||
v-bind:href="'https://crowdin.com/profile/' + crowdin"
|
||||
target="_blank"
|
||||
>Crowdin</a
|
||||
>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: ['backgroundImg', 'img', 'name', 'functions', 'github', 'keybase', 'crowdin'],
|
||||
}
|
||||
export default {
|
||||
props: [
|
||||
"backgroundImg",
|
||||
"img",
|
||||
"name",
|
||||
"functions",
|
||||
"github",
|
||||
"keybase",
|
||||
"crowdin",
|
||||
],
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.v-card {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.v-card {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.v-avatar {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.v-avatar {
|
||||
margin-left: 10px;
|
||||
}
|
||||
</style>
|
File diff suppressed because it is too large
Load diff
|
@ -4,17 +4,17 @@
|
|||
* https://v1.vuepress.vuejs.org/guide/basic-config.html#app-level-enhancements
|
||||
*/
|
||||
|
||||
import Vuetify from 'vuetify'
|
||||
import Vuetify from "vuetify";
|
||||
import "vuetify/dist/vuetify.min.css";
|
||||
import { findPageForPath } from '@app/util'
|
||||
import VueFilterDateFormat from '@vuejs-community/vue-filter-date-format';
|
||||
import VueFilterDateParse from '@vuejs-community/vue-filter-date-parse';
|
||||
import { findPageForPath } from "@app/util";
|
||||
import VueFilterDateFormat from "@vuejs-community/vue-filter-date-format";
|
||||
import VueFilterDateParse from "@vuejs-community/vue-filter-date-parse";
|
||||
|
||||
export default ({
|
||||
Vue, // the version of Vue being used in the VuePress app
|
||||
options, // the options for the root Vue instance
|
||||
router, // the router instance for the app
|
||||
siteData // site metadata
|
||||
siteData, // site metadata
|
||||
}) => {
|
||||
// ...apply enhancements for the site.
|
||||
Vue.use(Vuetify);
|
||||
|
@ -25,9 +25,9 @@ export default ({
|
|||
Vue.mixin({
|
||||
methods: {
|
||||
getPageKey(pages, path) {
|
||||
const result = findPageForPath(pages, path)
|
||||
return result.key
|
||||
}
|
||||
}
|
||||
const result = findPageForPath(pages, path);
|
||||
return result.key;
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
extend: '@vuepress/theme-default'
|
||||
}
|
||||
extend: "@vuepress/theme-default",
|
||||
};
|
||||
|
|
|
@ -3,11 +3,17 @@
|
|||
<template #page-bottom>
|
||||
<div class="page-nav">
|
||||
<div>
|
||||
Crafted by <a href="https://bekerle.com" target="_blank">Patrizio Bekerle</a> with ❤️
|
||||
Crafted by
|
||||
<a href="https://bekerle.com" target="_blank">Patrizio Bekerle</a>
|
||||
with ❤️
|
||||
</div>
|
||||
<div class="social">
|
||||
<a href="https://github.com/pbek/QOwnNotes" target="_blank"><v-icon>mdi-github</v-icon></a>
|
||||
<a href="https://social.qownnotes.org/@qownnotes" target="_blank"><v-icon>mdi-mastodon</v-icon></a>
|
||||
<a href="https://github.com/pbek/QOwnNotes" target="_blank"
|
||||
><v-icon>mdi-github</v-icon></a
|
||||
>
|
||||
<a href="https://social.qownnotes.org/@qownnotes" target="_blank"
|
||||
><v-icon>mdi-mastodon</v-icon></a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -17,30 +23,30 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import ParentLayout from '@parent-theme/layouts/Layout.vue'
|
||||
import ParentLayout from "@parent-theme/layouts/Layout.vue";
|
||||
|
||||
export default {
|
||||
name: 'Layout',
|
||||
name: "Layout",
|
||||
|
||||
components: {
|
||||
ParentLayout
|
||||
}
|
||||
}
|
||||
ParentLayout,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.page-nav {
|
||||
display: grid;
|
||||
grid-template-columns: 50% auto;
|
||||
}
|
||||
.page-nav {
|
||||
display: grid;
|
||||
grid-template-columns: 50% auto;
|
||||
}
|
||||
|
||||
.social {
|
||||
text-align: right;
|
||||
}
|
||||
.social {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
.theme-default-content:not(.custom) {
|
||||
max-width: 900px;
|
||||
}
|
||||
.theme-default-content:not(.custom) {
|
||||
max-width: 900px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,61 +1,61 @@
|
|||
const _ = require('lodash');
|
||||
const fs = require('fs');
|
||||
const glob = require('glob');
|
||||
const markdownIt = require('markdown-it');
|
||||
const meta = require('markdown-it-meta');
|
||||
const _ = require("lodash");
|
||||
const fs = require("fs");
|
||||
const glob = require("glob");
|
||||
const markdownIt = require("markdown-it");
|
||||
const meta = require("markdown-it-meta");
|
||||
|
||||
// Load all MD files in a specified directory and order by metadata 'order' value
|
||||
const getChildren = (parent_path, dir, reverseOrder = false) => {
|
||||
files = glob
|
||||
.sync(parent_path + (dir ? `/${dir}` : '') + '/**/*.md')
|
||||
.map(path => {
|
||||
// Instantiate MarkdownIt
|
||||
md = new markdownIt();
|
||||
// Add markdown-it-meta
|
||||
md.use(meta);
|
||||
// Get the order value
|
||||
file = fs.readFileSync(path, 'utf8');
|
||||
md.render(file);
|
||||
order = md.meta.order;
|
||||
// Remove "parent_path" and ".md"
|
||||
path = path.slice(parent_path.length + 1, -3);
|
||||
// Remove "README", making it the de facto index page
|
||||
if (path.endsWith('README')) {
|
||||
path = path.slice(0, -6);
|
||||
}
|
||||
files = glob
|
||||
.sync(parent_path + (dir ? `/${dir}` : "") + "/**/*.md")
|
||||
.map((path) => {
|
||||
// Instantiate MarkdownIt
|
||||
md = new markdownIt();
|
||||
// Add markdown-it-meta
|
||||
md.use(meta);
|
||||
// Get the order value
|
||||
file = fs.readFileSync(path, "utf8");
|
||||
md.render(file);
|
||||
order = md.meta.order;
|
||||
// Remove "parent_path" and ".md"
|
||||
path = path.slice(parent_path.length + 1, -3);
|
||||
// Remove "README", making it the de facto index page
|
||||
if (path.endsWith("README")) {
|
||||
path = path.slice(0, -6);
|
||||
}
|
||||
|
||||
return {
|
||||
path,
|
||||
order
|
||||
};
|
||||
});
|
||||
return {
|
||||
path,
|
||||
order,
|
||||
};
|
||||
});
|
||||
|
||||
// Return the ordered list of files, sort by 'order' then 'path'
|
||||
let result = _.sortBy(files, ['order', 'path']);
|
||||
// Return the ordered list of files, sort by 'order' then 'path'
|
||||
let result = _.sortBy(files, ["order", "path"]);
|
||||
|
||||
if (reverseOrder) {
|
||||
result = result.reverse();
|
||||
}
|
||||
if (reverseOrder) {
|
||||
result = result.reverse();
|
||||
}
|
||||
|
||||
return result.map(file => file.path);
|
||||
return result.map((file) => file.path);
|
||||
};
|
||||
|
||||
const getNavItemsForLanguage = (navItems, language) => {
|
||||
let resultNavItems = [];
|
||||
let resultNavItems = [];
|
||||
|
||||
navItems.forEach((navItem) => {
|
||||
resultNavItems.push(language + '/' + navItem);
|
||||
});
|
||||
navItems.forEach((navItem) => {
|
||||
resultNavItems.push(language + "/" + navItem);
|
||||
});
|
||||
|
||||
return resultNavItems;
|
||||
}
|
||||
return resultNavItems;
|
||||
};
|
||||
|
||||
const getNavItemForLanguage = (navItem, language) => {
|
||||
return '/' + language + navItem;
|
||||
}
|
||||
return "/" + language + navItem;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getChildren,
|
||||
getNavItemsForLanguage,
|
||||
getNavItemForLanguage,
|
||||
getChildren,
|
||||
getNavItemsForLanguage,
|
||||
getNavItemForLanguage,
|
||||
};
|
||||
|
|
|
@ -10,19 +10,19 @@
|
|||
|
||||
من أمثلة السلوك الذي يساهم في جعل بيئة مجتمعنا إيجابية:
|
||||
|
||||
* التعاطف مع الآخرين والإحسان إليهم
|
||||
* احترام آراء الآخرين ووجهات نظرهم وتجاربهم
|
||||
* إعطاء النقد البنّاء، وقبوله بصدر رحب
|
||||
* قَبول المسؤولية والاعتذار للذين تأثروا بأخطائنا، والتعلم من التجرِبة
|
||||
* التركيز على ما هو أفضل، ليس فحسب لنا كأفراد، ولكن للمجتمع جميعه
|
||||
- التعاطف مع الآخرين والإحسان إليهم
|
||||
- احترام آراء الآخرين ووجهات نظرهم وتجاربهم
|
||||
- إعطاء النقد البنّاء، وقبوله بصدر رحب
|
||||
- قَبول المسؤولية والاعتذار للذين تأثروا بأخطائنا، والتعلم من التجرِبة
|
||||
- التركيز على ما هو أفضل، ليس فحسب لنا كأفراد، ولكن للمجتمع جميعه
|
||||
|
||||
من أمثلة السلوك المرفوض:
|
||||
|
||||
* استخدام لغة أو صور ذات معنى جنسي، أو تحرش أو مضايقة جنسية من أي نوع
|
||||
* التصيد (المشاغبة)، والتعليقات المهينة أو الازدرائية، والهجوم الشخصي أو السياسي
|
||||
* المضايقة أو التحرش، سواءً عبر وسيلة تواصل عامة أو خاصة
|
||||
* نشر معلومات الآخرين الخاصة بغير إذنهم الصريح، مثل عنوان المسكن أو عنوان البريد الإلكتروني
|
||||
* أي سلوك آخر يُعدّ غير لائق في السياق المهني
|
||||
- استخدام لغة أو صور ذات معنى جنسي، أو تحرش أو مضايقة جنسية من أي نوع
|
||||
- التصيد (المشاغبة)، والتعليقات المهينة أو الازدرائية، والهجوم الشخصي أو السياسي
|
||||
- المضايقة أو التحرش، سواءً عبر وسيلة تواصل عامة أو خاصة
|
||||
- نشر معلومات الآخرين الخاصة بغير إذنهم الصريح، مثل عنوان المسكن أو عنوان البريد الإلكتروني
|
||||
- أي سلوك آخر يُعدّ غير لائق في السياق المهني
|
||||
|
||||
## مسؤوليات الإنفاذ
|
||||
|
||||
|
@ -36,7 +36,7 @@
|
|||
|
||||
## الإنفاذ
|
||||
|
||||
يمكن إبلاغ قادة المجتمع المسؤولين عن إنفاذ ميثاق السلوك، عن حالات التطاول أو المضايقات أو أي سلوك مرفوض (انظر قائمة *تواصل* على [www.qownnotes.org/ar](https://www.qownnotes.org/ar/)). سنراجع جميع الشكاوى ونحقق فيها فورا وبإنصاف.
|
||||
يمكن إبلاغ قادة المجتمع المسؤولين عن إنفاذ ميثاق السلوك، عن حالات التطاول أو المضايقات أو أي سلوك مرفوض (انظر قائمة _تواصل_ على [www.qownnotes.org/ar](https://www.qownnotes.org/ar/)). سنراجع جميع الشكاوى ونحقق فيها فورا وبإنصاف.
|
||||
|
||||
يلتزم جميع قادة المجتمع باحترام خصوصية وتأمين مَن يبلغ عن أي حادث.
|
||||
|
||||
|
@ -81,4 +81,3 @@
|
|||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
|
||||
|
|
|
@ -3,16 +3,17 @@
|
|||
أصلح أخطاءك الإملائية!
|
||||
|
||||
::: tip
|
||||
معلومة لدى QOwnNotes **مدير قواميس** مدمج (في قائمة *تحرير*) والذي يمكنك استخدامه لتنزيل قواميس أو حذفها (إذا كنت تفتقد لغتك، انظر بالأسفل لمعرفة كيف تطلب إضافة قاموس). إذا أردت تنزيل القواميس يدويًا، يمكنك اتباع الخطوات التالية.
|
||||
معلومة لدى QOwnNotes **مدير قواميس** مدمج (في قائمة _تحرير_) والذي يمكنك استخدامه لتنزيل قواميس أو حذفها (إذا كنت تفتقد لغتك، انظر بالأسفل لمعرفة كيف تطلب إضافة قاموس). إذا أردت تنزيل القواميس يدويًا، يمكنك اتباع الخطوات التالية.
|
||||
:::
|
||||
|
||||
- في **لينكس** يمكنك تثبيت قواميس Hunspell للغتك باستخدام مدير الحزم الخاص بتوزيعتك
|
||||
- إذا احتجتَ إلى إضافة ملفات لغات إضافية، يمكنك فعل ذلك في <code dir="ltr">~/.local/share/hunspell</code> أو <code dir="ltr">/usr/share/hunspell</code>.
|
||||
- إذا كنت تستخدم حزمة Snap من QOwnNotes، يمكنك أيضا استخدام <code dir="ltr">~/hunspell</code> لملفات اللغات، لإن Snap لا يستطيع الوصول إلى <code dir="ltr">~/.local</code>
|
||||
|
||||
- إذا احتجتَ إلى إضافة ملفات لغات إضافية، يمكنك فعل ذلك في <code dir="ltr">~/.local/share/hunspell</code> أو <code dir="ltr">/usr/share/hunspell</code>.
|
||||
- إذا كنت تستخدم حزمة Snap من QOwnNotes، يمكنك أيضا استخدام <code dir="ltr">~/hunspell</code> لملفات اللغات، لإن Snap لا يستطيع الوصول إلى <code dir="ltr">~/.local</code>
|
||||
|
||||
- في **ويندوز** عليك نسخ قواميس Hunspell للغتك إلى مجلد `dicts` في مجلد تطبيق QOwnNotes أو في `C:\Users\[username]\dicts`
|
||||
- يمكنك تنزيل القواميس من [قواميس ليبر أوفيس](https://github.com/LibreOffice/dictionaries)
|
||||
- في **ماك أو إس** عليك نسخ قواميس Hunspell للغتك إلى <code dir="ltr">/Library/Spelling</code> أو <code dir="ltr">~/Library/Spelling</code>. إذا لم يكن هذا المجلد موجودا، عليك إنشاؤه.
|
||||
- يمكنك تنزيل القواميس من [قواميس ليبر أوفيس](https://github.com/LibreOffice/dictionaries)
|
||||
- في **ماك أو إس** عليك نسخ قواميس Hunspell للغتك إلى <code dir="ltr">/Library/Spelling</code> أو <code dir="ltr">~/Library/Spelling</code>. إذا لم يكن هذا المجلد موجودا، عليك إنشاؤه.
|
||||
|
||||
يمكن تنزيل القواميس من [قواميس QOwnNotes](https://github.com/qownnotes/dictionaries). استخدم الجدول الذي في نهاية هذا المستند لتجد لغتك والرمز المناظر لها.
|
||||
|
||||
|
@ -22,60 +23,60 @@
|
|||
معلومة إذا لم تستطع العثور على لغتك في هذا الجدول، فللأسف ليس لها قاموس في ملفات ليبر أوفيس — إذا أردت إنشاء قاموس، اذهب إلى صفحة [تطوير القواميس على موقع منظمة المستند (بالإنجليزية)](https://wiki.documentfoundation.org/Development/Dictionaries)
|
||||
:::
|
||||
|
||||
| م | رمز اللغة | اللغة |
|
||||
| -- | --------- | --------------------------------- |
|
||||
| 1 | af_ZA | الأفريكانية (جنوب أفريقيا) |
|
||||
| 2 | an_ES | الأراغونية (إسبانيا) |
|
||||
| 3 | ar | العربية |
|
||||
| 4 | be_BY | البيلاروسية |
|
||||
| 5 | bg_BG | البلغارية |
|
||||
| 6 | bn_BD | البنغالية |
|
||||
| 7 | bo | التبتية |
|
||||
| 8 | br_FR | البريتانية (فرنسا) |
|
||||
| 9 | bs_BA | البوسنية |
|
||||
| 10 | ca | الكاتالونية |
|
||||
| 11 | cs_CZ | التشيكية |
|
||||
| 12 | da_DK | الدانماركية |
|
||||
| 13 | de | الألمانية |
|
||||
| 14 | el_GR | اليونانية |
|
||||
| 15 | en | الإنجليزية |
|
||||
| 16 | es | الإسبانية |
|
||||
| 17 | et_EE | الإستونية |
|
||||
| 18 | gd_GB | الغيلية |
|
||||
| 19 | gl | الغاليسية |
|
||||
| 20 | gu_IN | الكجراتية |
|
||||
| 21 | gug | الغوارانية |
|
||||
| 22 | he_IL | العبرية |
|
||||
| 23 | hi_IN | الهندية |
|
||||
| 24 | hr_HR | الكرواتية |
|
||||
| 25 | id | الإندونيسية |
|
||||
| 26 | it_IT | الإيطالية |
|
||||
| 27 | kmr_Latn | الكردية (تركيا) |
|
||||
| 28 | lo_LA | اللاوية |
|
||||
| 29 | lt_LT | الليتوانية |
|
||||
| 30 | lv_LV | اللاتفية |
|
||||
| 31 | ne_NP | النيبالية |
|
||||
| 32 | nl_NL | الهولندية |
|
||||
| 33 | no | النرويجية |
|
||||
| 34 | oc_FR | الأكستانية |
|
||||
| 35 | pl_PL | البولندية |
|
||||
| 36 | pt_BR | البرتغالية البرازيلية |
|
||||
| 37 | pt_PT | البرتغالية |
|
||||
| 38 | ro | الرومانية |
|
||||
| 39 | ru_RU | الروسية |
|
||||
| 40 | si_LK | السنهالية |
|
||||
| 41 | sk_SK | السلوفاكية |
|
||||
| 42 | sl_Sl | السلوفينية |
|
||||
| 43 | sq_AL | الألبانية |
|
||||
| 44 | sr | الصربية |
|
||||
| 45 | sv_SE | السويدية |
|
||||
| 46 | sw_TZ | السواحلية |
|
||||
| 47 | te_IN | التيلوغوية |
|
||||
| 48 | th_TH | التايلاندية |
|
||||
| 49 | tr_TR | التركية |
|
||||
| 51 | uk_UA | الأوكرانية |
|
||||
| 52 | vi | الفيتنامية |
|
||||
| 53 | zu_ZA | الزولوية (قاموس الإملاء غير متاح) |
|
||||
| م | رمز اللغة | اللغة |
|
||||
| --- | --------- | --------------------------------- |
|
||||
| 1 | af_ZA | الأفريكانية (جنوب أفريقيا) |
|
||||
| 2 | an_ES | الأراغونية (إسبانيا) |
|
||||
| 3 | ar | العربية |
|
||||
| 4 | be_BY | البيلاروسية |
|
||||
| 5 | bg_BG | البلغارية |
|
||||
| 6 | bn_BD | البنغالية |
|
||||
| 7 | bo | التبتية |
|
||||
| 8 | br_FR | البريتانية (فرنسا) |
|
||||
| 9 | bs_BA | البوسنية |
|
||||
| 10 | ca | الكاتالونية |
|
||||
| 11 | cs_CZ | التشيكية |
|
||||
| 12 | da_DK | الدانماركية |
|
||||
| 13 | de | الألمانية |
|
||||
| 14 | el_GR | اليونانية |
|
||||
| 15 | en | الإنجليزية |
|
||||
| 16 | es | الإسبانية |
|
||||
| 17 | et_EE | الإستونية |
|
||||
| 18 | gd_GB | الغيلية |
|
||||
| 19 | gl | الغاليسية |
|
||||
| 20 | gu_IN | الكجراتية |
|
||||
| 21 | gug | الغوارانية |
|
||||
| 22 | he_IL | العبرية |
|
||||
| 23 | hi_IN | الهندية |
|
||||
| 24 | hr_HR | الكرواتية |
|
||||
| 25 | id | الإندونيسية |
|
||||
| 26 | it_IT | الإيطالية |
|
||||
| 27 | kmr_Latn | الكردية (تركيا) |
|
||||
| 28 | lo_LA | اللاوية |
|
||||
| 29 | lt_LT | الليتوانية |
|
||||
| 30 | lv_LV | اللاتفية |
|
||||
| 31 | ne_NP | النيبالية |
|
||||
| 32 | nl_NL | الهولندية |
|
||||
| 33 | no | النرويجية |
|
||||
| 34 | oc_FR | الأكستانية |
|
||||
| 35 | pl_PL | البولندية |
|
||||
| 36 | pt_BR | البرتغالية البرازيلية |
|
||||
| 37 | pt_PT | البرتغالية |
|
||||
| 38 | ro | الرومانية |
|
||||
| 39 | ru_RU | الروسية |
|
||||
| 40 | si_LK | السنهالية |
|
||||
| 41 | sk_SK | السلوفاكية |
|
||||
| 42 | sl_Sl | السلوفينية |
|
||||
| 43 | sq_AL | الألبانية |
|
||||
| 44 | sr | الصربية |
|
||||
| 45 | sv_SE | السويدية |
|
||||
| 46 | sw_TZ | السواحلية |
|
||||
| 47 | te_IN | التيلوغوية |
|
||||
| 48 | th_TH | التايلاندية |
|
||||
| 49 | tr_TR | التركية |
|
||||
| 51 | uk_UA | الأوكرانية |
|
||||
| 52 | vi | الفيتنامية |
|
||||
| 53 | zu_ZA | الزولوية (قاموس الإملاء غير متاح) |
|
||||
|
||||
::: tip
|
||||
شكر نستخدم [Sonnet](https://github.com/KDE/sonnet) مع [Hunspell](https://hunspell.github.io/) للتدقيق الإملائي
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
- [Pro-Linux: Informationen zu QOwnNotes](http://www.pro-linux.de/cgi-bin/DBApp/check.cgi?ShowApp..20415.100)
|
||||
- [Educators for free and open source resources: Note taking software](http://freeandopensourcesineducation.blogspot.co.at/2016/01/note-taking-software.html)
|
||||
- **Linux Voice 25**
|
||||
- <http://shop.linuxvoice.com/products/single-issues?src=menu>
|
||||
- [QOwnNotes ظهر كمميز في منصة Linux Voice 25](https://www.qownnotes.org/blog/2016-03-25-QOwnNotes-got-featured-in-Linux-Voice-25.html)
|
||||
- <http://shop.linuxvoice.com/products/single-issues?src=menu>
|
||||
- [QOwnNotes ظهر كمميز في منصة Linux Voice 25](https://www.qownnotes.org/blog/2016-03-25-QOwnNotes-got-featured-in-Linux-Voice-25.html)
|
||||
- **Linux Action Show 410 / Desktop App Pick**
|
||||
- <http://www.jupiterbroadcasting.com/98121/floating-on-owncloud-9-las-410/>
|
||||
- <http://jupiterbroadcasting.com/laspicks/desktop-apps.php>
|
||||
- <http://www.jupiterbroadcasting.com/98121/floating-on-owncloud-9-las-410/>
|
||||
- <http://jupiterbroadcasting.com/laspicks/desktop-apps.php>
|
||||
- [Softwarová sklizeň (6. 4. 2016) - Root.cz](http://www.root.cz/clanky/softwarova-sklizen-6-4-2016/)
|
||||
- [Note Taking Apps Collection For Your Ubuntu/Linux Mint - NoobsLab | Ubuntu/Linux News, Reviews, Tutorials, Apps](http://www.noobslab.com/2016/04/note-taking-apps-collection-for-your.html)
|
||||
- <http://www.linuxlinks.com/article/20160417070643251/QOwnNotes.html>
|
||||
|
@ -39,7 +39,7 @@
|
|||
- [QOwnNotes على Softpedia](http://mac.softpedia.com/get/Utilities/QOwnNotes.shtml)
|
||||
- [QOwnNotes على Neowin](https://www.neowin.net/news/qownnotes-16118-build-2489)
|
||||
- [QOwnNotes في Solus OS](https://dev.solus-project.com/T1687)
|
||||
- <https://git.solus-project.com/packages/qownnotes>
|
||||
- <https://git.solus-project.com/packages/qownnotes>
|
||||
- [QOwnNotes على beOpen](http://beopen.bplaced.net/2016/11/qownnotes-16-11-14/)
|
||||
- [QOwnNotes على Yazı Kovanı](http://www.yazikovani.com/2016/11/06/gnulinux-icin-not-tutma-programlari)
|
||||
- [QOwnNotes على sDown](https://www.sdown.eu/windows/qownnotes.html)
|
||||
|
@ -56,11 +56,11 @@
|
|||
- [QOwnNotes على Chocolatey](https://chocolatey.org/packages/qownnotes)
|
||||
- [What comes after Evernote? A QOwnNotes review. | JawFodder](http://www.jawfodder.com/what-comes-after-evernote-a-qownnotes-review/)
|
||||
- [Taking Notes with Nextcloud, QOwnNotes, and Notebooks](https://lifemeetscode.com/blog/2017/05/03/taking-notes-nextcloud-qownnotes-notebooks/)
|
||||
- using [Notebooks](http://www.notebooksapp.com/) to sync Notes via WebDAV on iOS
|
||||
- using [Notebooks](http://www.notebooksapp.com/) to sync Notes via WebDAV on iOS
|
||||
- [hierarchical note taking applications : linux](https://www.reddit.com/r/linux/comments/5me4wv/hierarchical_note_taking_applications/)
|
||||
- [QownNotes - De la prise de notes chiffrées sur votre cloud personnel - Korben](https://korben.info/qownnotes.html)
|
||||
- [The 6 Best Windows Notepad Alternatives](http://www.makeuseof.com/tag/best-windows-notepad-alternatives/)
|
||||
- [Synchronisation des notes (QOwnNotes) — Wiki de la mère Zaclys](https://wiki.zaclys.com/index.php/Synchronisation_des_notes_(QOwnNotes))
|
||||
- [Synchronisation des notes (QOwnNotes) — Wiki de la mère Zaclys](<https://wiki.zaclys.com/index.php/Synchronisation_des_notes_(QOwnNotes)>)
|
||||
- [QOwnNotes 17.06.06 z notatkami w chmurach | przystajnik](https://404.g-net.pl/2017/06/qownnotes-17-06-06-notatkami-chmurach/)
|
||||
- [How to Install QOwnNotes Note-taking & Todo List Manager in Ubuntu | UbuntuHandbook](http://ubuntuhandbook.org/index.php/2017/06/install-qownnotes-ubuntu/)
|
||||
- [How to install QOwnNotes on Ubuntu | CONNECTwww.com](https://connectwww.com/how-to-install-qownnotes-on-ubuntu/5518/)
|
||||
|
@ -70,23 +70,23 @@
|
|||
- [QOwnNotes - A To-Do List Manager with Markdown and OwnCloud Support](https://www.fossmint.com/qownnotes-a-to-do-list-with-markdown-owncloud-support/)
|
||||
- [Joplin – A note-taking and to-do app with builds for desktop, mobile, terminal | Hacker News](https://news.ycombinator.com/item?id=15815040)
|
||||
- <http://www.thumbapps.org/2017/07/QOwnNotes-portable-text-markdown-editor-and-todo-list-manager.html>
|
||||
- They also have created their own `QOwnNotesPortable_17.06.6_Build_3071.paf` [HOW TO INSTALL QOWNNOTES IN UBUNTU 16.04 - A NOTE TAKING SOFTWARE FOR LINUX](http://www.elinuxbook.com/install-qownnotes-in-ubuntu-16-04-a-note-taking-software-for-linux/)
|
||||
- They also have created their own `QOwnNotesPortable_17.06.6_Build_3071.paf` [HOW TO INSTALL QOWNNOTES IN UBUNTU 16.04 - A NOTE TAKING SOFTWARE FOR LINUX](http://www.elinuxbook.com/install-qownnotes-in-ubuntu-16-04-a-note-taking-software-for-linux/)
|
||||
- [QOwnNotes A Great Note Taking App For Linux - LinuxAndUbuntu - Linux News | Apps Reviews | Linux Tutorials HowTo](http://www.linuxandubuntu.com/home/qownnotes-a-great-note-taking-app-for-linux)
|
||||
- [Solus Users Receive Linux Kernel 4.8.10 and Vivaldi 1.5, QOwnNotes Lands as Well](http://news.softpedia.com/news/solus-users-receive-linux-kernel-4-8-10-and-vivaldi-1-5-qownnotes-lands-as-well-510481.shtml)
|
||||
- **[Notizverwaltung : QOwnNotes 17.09.6 | c't Magazin](https://www.heise.de/ct/ausgabe/2017-21-Notizverwaltung-QOwnNotes-17-09-6-3840130.html)**
|
||||
- [Software: QOwnNotes, VirtualBox, Green Recorder, Notes | Tux Machines](http://www.tuxmachines.org/node/103720)
|
||||
- [Software and howtos: QOwnNotes, MPV Player 0.27, Qt 5.10 Alpha and More | Tux Machines](http://www.tuxmachines.org/node/104778)
|
||||
- [Software and howtos: QOwnNotes, MPV Player 0.27, Qt 5.10 Alpha and More | Tux Machines](http://www.tuxmachines.org/node/104778)
|
||||
- [QOwnNotes - Cross Platform Open Source Note-Taking App for Ubuntu](https://www.ubuntupit.com/qownnotes-cross-platform-open-source-note-taking-app-ubuntu/)
|
||||
- [QOwnNotes Review - Slant](https://www.slant.co/improve/options/22491/~qownnotes-review)
|
||||
- [QOwnNotes - libellules.ch](http://www.libellules.ch/dotclear/index.php?post/2017/11/08/QOwnNotes)
|
||||
- [7 Free Evernote Alternatives - Best Note Taking App With Simple Interface](https://www.geckoandfly.com/24387/note-taking-app/)
|
||||
- [Scout Archives - QOwnNotes](https://scout.wisc.edu/archives/r49075)
|
||||
- [The Scout Report -- Volume 23, Number 49 | Internet Scout](https://scout.wisc.edu/report/2017/1208)
|
||||
- [The Scout Report -- Volume 23, Number 49 | Internet Scout](https://scout.wisc.edu/report/2017/1208)
|
||||
- [QOwnNotes – App of the Week - ownCloud](https://owncloud.org/news/qownnotes-app-week)
|
||||
- [Snapcraft on Twitter: "Get your notes on order! 📝 @QOwnNotes is a fast and beautiful text editor which supports local saving and storage in your own cloud. Install… https://t.co/2yGYmPb7g2"](https://twitter.com/snapcraftio/status/951109910410027010)
|
||||
- [Ubuntu on Twitter: "Get your notes on order! 📝 @QOwnNotes is a fast and beautiful text editor which supports local saving and storage in your own cloud. Instal… https://t.co/4W4o9OfdFo"](https://twitter.com/ubuntu/status/951472292495876096)
|
||||
- [QOwnNotes - Notizverwaltung auf Nextcloud - Die Welt und ich](https://www.kussaw.de/2017/02/qownnotes-notizen-auf-nextcloud/)
|
||||
- <https://www.kussaw.de/2017/04/qownnotes-und-android/>
|
||||
- <https://www.kussaw.de/2017/04/qownnotes-und-android/>
|
||||
- [QOwnNotes / Приложение для ведения заметок, блокнот с поддержкой менеджера списка задач](http://zenway.ru/page/qownnotes)
|
||||
- [Windows софт - 6 лучших альтернатив «блокнот windows» | 5FPS.ru - Community](http://5fps.ru/threads/6-luchshix-alternativ-bloknot-windows.34126/)
|
||||
- [Como instalar o gerenciador de lista de tarefas QOwnNotes no Ubuntu](http://www.edivaldobrito.com.br/qownnotes-no-ubuntu/)
|
||||
|
@ -97,7 +97,7 @@
|
|||
- <https://appimage.github.io/QOwnNotes/>
|
||||
- [Como instalar o gerenciador de lista de tarefas QOwnNotes no Ubuntu](https://www.edivaldobrito.com.br/qownnotes-no-ubuntu/)
|
||||
- [Download QOwnNotes - MajorGeeks](https://www.majorgeeks.com/files/details/qownnotes.html)
|
||||
- [Text Editors - MajorGeeks](https://www.majorgeeks.com/files/categories/text_editors.html)
|
||||
- [Text Editors - MajorGeeks](https://www.majorgeeks.com/files/categories/text_editors.html)
|
||||
- [QOwnNotes: editor de texto con soporte para sincronización con servicios en la nube](https://blog.desdelinux.net/qownnotes-editor-de-texto-con-soporte-para-sincronizacion-con-servicios-en-la-nube/)
|
||||
- [Programtips: Qownnotes 18.06.1 - Datormagazin](https://www.datormagazin.se/2018/programtips-qownnotes-18-06-1/)
|
||||
- [Programtips: Qownnotes 18.08.1 - Datormagazin](https://www.datormagazin.se/2018/programtips-qownnotes-18-06-1/)
|
||||
|
@ -105,7 +105,7 @@
|
|||
- [QOwnNotes - Make Tech Easier Software](https://www.maketecheasier.com/software/qownnotes/)
|
||||
- [QOwnNotes 18.11.3 ~ Software182 | Free Download Software Updates !](https://www.software182.com/2018/11/qownnotes.html)
|
||||
- [第530回 QOwnNotesでメモを取る:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社](https://gihyo.jp/admin/serial/01/ubuntu-recipe/0530)
|
||||
- لقطات شاشة باليابانية
|
||||
- لقطات شاشة باليابانية
|
||||
- مقال [العدد ٢٦٠ من مجلة PC Press PC](http://pc.pcpress.rs/broj.php?broj=260)
|
||||
- [Er zijn veel open source Linux apps om notities te nemen en taken bij te houden. QOwnNotes doet beiden. QOwnNotes slaat notities op in tekstbestanden en ondersteunt de opmaakstandaard Markdown. : PindaNet](https://www.reddit.com/r/PindaNet/comments/acw0sr/er_zijn_veel_open_source_linux_apps_om_notities/)
|
||||
- [QownNotes 19.2.5 скачать – менеджер заметок с функцией синхронизацией.](https://zoomexe.net/ofis/organizers/3649-qownnotes.html)
|
||||
|
@ -117,9 +117,9 @@
|
|||
- [Search for the near-perfect note taking software - DEV Community 👩💻👨💻](https://dev.to/animesh/search-for-the-near-perfect-note-taking-software-2phi)
|
||||
- [笔记记事工具 QOwnNotes v19.8.6 绿色版-NoCmd](https://www.nocmd.com/8275.html)
|
||||
- [Brutal Alternativa a Bloc de Notas - Descargar QOwnNotes Gratis Ultima Versión - YouTube](https://www.youtube.com/watch?v=U52AQ8I3HHk)
|
||||
- [Brutal Alternativa a Bloc de Notas - Descargar QOwnNotes Gratis Ultima Versión](https://www.yoututosjeff.es/2018/11/descargar-QOwnNotes-gratis-ultima-version.html)
|
||||
- [Brutal Alternativa a Bloc de Notas - Descargar QOwnNotes Gratis Ultima Versión](https://www.yoututosjeff.es/2018/11/descargar-QOwnNotes-gratis-ultima-version.html)
|
||||
- [QOwnNotes](https://www.slant.co/topics/1852/viewpoints/17/~best-markdown-editors-for-windows~qownnotes)
|
||||
- <https://www.slant.co/topics/1852/~best-markdown-editors-for-windows>
|
||||
- <https://www.slant.co/topics/1852/~best-markdown-editors-for-windows>
|
||||
- [NValt on Windows · Voxcaster](https://www.vox.me.uk/post/2018/12/nvalt-on-windows/)
|
||||
- [QOwnNotes - QOwnNotes is a plain-text file notepad and todo-list manager with markdown support and ownCloud Nextcloud integration](https://www.findbestopensource.com/product/pbek-qownnotes)
|
||||
- [QOwnNotes:一款记录笔记和待办事项的应用,集成 ownCloud 云服务](https://www.toutiao.com/a6330193218257666305/)
|
||||
|
@ -135,25 +135,25 @@
|
|||
- [Download QOwnNotes® 2019 latest free version | Download82.com](http://www.download82.com/download/windows/qownnotes/)
|
||||
- [Download QOwnNotes 20.1.12 build 5295 - Tạo và quản lý, in ấn các ghi](https://taimienphi.vn/download-qownnotes-38957)
|
||||
- [QOwnNotes 5092](https://www.warp2search.net/story/qownnotes-5092/)
|
||||
- [QOwnNotes | Clear Linux* Project](https://clearlinux.org/software/flathub/qownnotes)
|
||||
- [QOwnNotes | Clear Linux\* Project](https://clearlinux.org/software/flathub/qownnotes)
|
||||
- <https://freewarebuzz.com/utilities-records.html#qownnotes>
|
||||
- [QOwnNotes, скачать бесплатно. Программы для Linux](https://pingvinus.ru/program/qownnotes)
|
||||
- [Органайзеры и заметки. Программы для Linux](https://pingvinus.ru/programs/office/personal-information-managers)
|
||||
- [Органайзеры и заметки. Программы для Linux](https://pingvinus.ru/programs/office/personal-information-managers)
|
||||
- [QOwnNotes is an open source note taking tool for Windows, Linux and macOS that supports Markdown - Pin System](https://pinsystem.co.uk/2019/11/22/qownnotes-is-an-open-source-note-taking-tool-for-windows-linux-and-macos-that-supports-markdown/)
|
||||
- [QOwnNotes - Notepad mit Nextcloud Anbindung | ITrig](http://www.itrig.de/index.php?/archives/2341-QOwnNotes-Notepad-mit-Nextcloud-Anbindung.html)
|
||||
- Chip Magazin (3.2.2020 im Handel)
|
||||
- [QOwnNotes for Debian – There and back again](https://www.preining.info/blog/2020/02/qownnotes-for-debian/)
|
||||
- هذا كان على <https://planet.debian.org/>
|
||||
- هذا كان على <https://planet.debian.org/>
|
||||
- [Search for the near-perfect note taking software | Animesh Bulusu](https://animesh.blog/near-perfect-note-taking-software/)
|
||||
- [qownnotes (Wiki ubuntu-fr)](http://doc.ubuntu-fr.org/qownnotes)
|
||||
- [Taking Notes with Nextcloud, QOwnNotes, and Notebooks | Life Meets Code](https://lifemeetscode.com/blog/taking-notes-with-nextcloud-qownnotes-and-notebooks)
|
||||
- full install tutorial with Nextcloud Notes and Android Client
|
||||
- full install tutorial with Nextcloud Notes and Android Client
|
||||
- [Get Organized with the Simple, Yet Powerful QOwnNotes - Make Tech Easier](https://www.maketecheasier.com/get-organized-with-qownnotes/)
|
||||
- معلومات كثيرة وطويلة!
|
||||
- معلومات كثيرة وطويلة!
|
||||
- [QOwnNotes 20.2.7 - dobreprogramy](https://www.dobreprogramy.pl/QOwnNotes,Program,Windows,91842.html)
|
||||
- [QOwnNotes 18.10.6 (Mac) - dobreprogramy](https://www.dobreprogramy.pl/QOwnNotes,Program,Mac,91843.html)
|
||||
- [QOwnNotes 18.10.6 (Mac) - dobreprogramy](https://www.dobreprogramy.pl/QOwnNotes,Program,Mac,91843.html)
|
||||
- [Best text editor for Windows - Notepad Alternative. - BounceGeek](https://www.bouncegeek.com/best-text-editor-windows/)
|
||||
- [QOwnNotes Web Companion Chrome插件,QOwnNotes Web Companion 谷歌浏览器插件下载_安装_教程-扩展迷](https://www.extfans.com/productivity/pkgkfnampapjbopomdpnkckbjdnpkbkp/)
|
||||
- [QOwnNotes Web Companion Chrome插件,QOwnNotes Web Companion 谷歌浏览器插件下载*安装*教程-扩展迷](https://www.extfans.com/productivity/pkgkfnampapjbopomdpnkckbjdnpkbkp/)
|
||||
- [QOwnNotes على أجهزة Mac](https://dl.pconline.com.cn/download/1011329.html)
|
||||
- [Gratilog.net - Forum - Propositions de logiciels - QOwnNotes #](http://www.gratilog.net/xoops/modules/newbb/viewtopic.php?post_id=194644#forumpo)
|
||||
- [MacUpdate](https://www.macupdate.com/app/mac/61493/qownnotes)
|
||||
|
@ -166,7 +166,7 @@
|
|||
- [Малоизвестные Windows-программы для ведения заметок!](https://sovetybloga.ru/maloizvestnye-windows-programmy-dlya-vedeniya-zametok/)
|
||||
- [QOwnNotes Portable 20.8.10 (markdown note taker) Released | PortableApps.com](https://portableapps.com/news/2020-08-27--qownnotes-portable-20.8.10-released)
|
||||
- [QOwnNotes](https://www.slant.co/topics/6303/viewpoints/21/~note-taking-apps-for-linux~qownnotes)
|
||||
- <https://www.slant.co/topics/6303/~note-taking-apps-for-linux#21>
|
||||
- <https://www.slant.co/topics/6303/~note-taking-apps-for-linux#21>
|
||||
- [QOwnNotes - Notepad and todo-list manager with Markdown support and Nextcloud integration : coolgithubprojects](https://www.reddit.com/r/coolgithubprojects/comments/izg63b/qownnotes_notepad_and_todolist_manager_with/)
|
||||
- [QQwnNotes - Работа с заметками](https://континентсвободы.рф/%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B/qqwnnotes-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-%D0%B7%D0%B0%D0%BC%D0%B5%D1%82%D0%BA%D0%B0%D0%BC%D0%B8.html)
|
||||
- [QOwnNotes 21.1.2 download free | macOS | AppKed](https://www.macbed.com/qownnotes/)
|
||||
|
@ -196,7 +196,7 @@
|
|||
## إشارات
|
||||
|
||||
- [Does Slack MatterMost? | LUP 117 | Jupiter Broadcasting](http://www.jupiterbroadcasting.com/90016/does-slack-mattermost-lup-117/)
|
||||
- [QOwnNotes على Linux Unplugged](https://www.qownnotes.org/blog/2015-11-04-QOwnNotes-on-Linux-Unplugged.html)
|
||||
- [QOwnNotes على Linux Unplugged](https://www.qownnotes.org/blog/2015-11-04-QOwnNotes-on-Linux-Unplugged.html)
|
||||
- [ownCloud development in March | ownCloud.org](https://owncloud.org/blog/owncloud-development-in-march/)
|
||||
- <http://tuxdiary.com/2015/03/18/papyrus/>
|
||||
- [Programmliste](http://pat-schmitz.de/mytr/frontend/all.php)
|
||||
|
@ -205,13 +205,13 @@
|
|||
- [Floating on ownCloud 9 | LAS 410 : LinuxActionShow](https://www.reddit.com/r/LinuxActionShow/comments/4c8cng/floating_on_owncloud_9_las_410/)
|
||||
- <http://kmeleonbrowser.org/forum/read.php?12,119575,138590,page=54>
|
||||
- [Some new Breeze app icons in Frameworks 5.22 - Alex L.](http://www.alexl.netsons.org/blogposts/some-new-breeze-app-icons-in-frameworks-5-22/)
|
||||
- [Planet KDE](https://planetkde.org/) في 16.05.16 19:46
|
||||
- [Planet KDE](https://planetkde.org/) في 16.05.16 19:46
|
||||
- <http://portallinux.es/una-notas-turtl-springseed-laverna/>
|
||||
- تعليق
|
||||
- تعليق
|
||||
- <http://zettelkasten.de/posts/zettelkasten-antifragile/>
|
||||
- تعليق
|
||||
- تعليق
|
||||
- [(2016-06) Recap of Markdown editors for Linux and/or browser : LinuxActionShow](https://www.reddit.com/r/LinuxActionShow/comments/4ow8yv/201606_recap_of_markdown_editors_for_linux_andor/)
|
||||
- تعليق
|
||||
- تعليق
|
||||
- [QOwnNotes featured on the Linux Voice Podcast](https://www.qownnotes.org/blog/2016-07-12-QOwnNotes-featured-on-the-Linux-Voice-Podcast.html)
|
||||
- <http://www.heise.de/ct/ausgabe/2016-16-Briefe-E-Mail-Hotline-3271356.html>
|
||||
- [https://www.reddit.com/r/linux/comments/4xto4y/4_open_source_alternatives_to_evernote/](https://www.reddit.com/r/linux/comments/4xto4y/4_open_source_alternatives_to_evernote/)
|
||||
|
@ -222,7 +222,7 @@
|
|||
- [Tools to support your markdown authoring · karthik/markdown_science Wiki · GitHub](https://github.com/karthik/markdown_science/wiki/Tools-to-support-your-markdown-authoring)
|
||||
- [List of Qt Applications - Manjaro Linux](https://wiki.manjaro.org/index.php?title=List_of_Qt_Applications)
|
||||
- [Plain Text and Google keep Is a Killer Combo for Notes and Organization — Nick Janetakis](https://nickjanetakis.com/blog/plain-text-and-google-keep-is-a-killer-combo-for-notes-and-organization)
|
||||
- تعليق
|
||||
- تعليق
|
||||
- <https://www.linux.org.ru/search.jsp?q=qownnotes&range=ALL&interval=ALL&user=&_usertopic=on>
|
||||
- [Recommended Zettelkasten Method programs for Windows? - Zettelkasten Forum](https://forum.zettelkasten.de/discussion/39/recommended-zettelkasten-method-prog)
|
||||
- <http://www.thumbapps.org/2016/07/Evernote-portable-32-64-bit.html>
|
||||
|
@ -240,37 +240,37 @@
|
|||
- [Zettlr markdown editor - Solus Forum](https://discuss.getsol.us/d/2120-zettlr-markdown-editor/2)
|
||||
- [Alternatives to Google Products (Complete List) | Restore Privacy](https://restoreprivacy.com/google-alternatives/)
|
||||
- [أفضل برامج المفكرة NOTEPAD لأجهزة الحاسوب | التقنية](https://www.th3tec.com/الأفضلtop/أفضل-برامج-المفكرة-notepad-لأجهزة-الحاسوب.html) [LINUX Unplugged 307: What's your NextCloud?](https://linuxunplugged.com/307)
|
||||
- 0:55:09
|
||||
- 0:55:09
|
||||
- [Outliner Software: Search](https://www.outlinersoftware.com/search/index/qownnotes)
|
||||
- [Write Markdown with 8 Exceptional Open Source Editors - OSS Blog](https://www.ossblog.org/markdown-editors/)
|
||||
- [Note Taking Application / Applications & Desktop Environments / Arch Linux Forums](https://bbs.archlinux.org/viewtopic.php?id=228115)
|
||||
- [Search results for query: qownnotes | MalwareTips Community](https://malwaretips.com/search/137933/?q=qownnotes&o=relevance)
|
||||
- [Favorite Lesser-Known Apps? - General Discussion - Manjaro Linux Forum](https://forum.manjaro.org/t/favorite-lesser-known-apps/57320/400)
|
||||
- [De-Google my life - Part 5 of ¯\_(ツ)_/¯: Backups](https://blog.rogs.me/2019/11/27/de-google-my-life-part-5-of-_-tu-_-backups/)
|
||||
- [De-Google my life - Part 5 of ¯\_(ツ)\_/¯: Backups](https://blog.rogs.me/2019/11/27/de-google-my-life-part-5-of-_-tu-_-backups/)
|
||||
- [Taking notes : selfhosted](https://www.reddit.com/r/selfhosted/comments/erb7kj/taking_notes/)
|
||||
- [Поиск по сайту - qownnotes](https://www.linux.org.ru/search.jsp?q=qownnotes&range=ALL&interval=ALL&user=&_usertopic=on)
|
||||
- [El cliente oficial de Evernote para Linux llegará este año](https://www.muylinux.com/2020/01/20/cliente-oficial-evernote-para-linux/) #تعليق
|
||||
- [GitHub - tycrek/degoogle: A huge list of alternatives to Google products. Privacy tips, tricks, and links.](https://github.com/tycrek/degoogle)
|
||||
- [Cutting Google out of your life (2019) (Updated: Jan 2020) | degoogle](https://degoogle.jmoore.dev/)
|
||||
- [Cutting Google out of your life (2019) (Updated: Jan 2020) | degoogle](https://degoogle.jmoore.dev/)
|
||||
- [Request to add QOwnnotes to Manjaro SW Repo - Package request - Manjaro Linux Forum](https://forum.manjaro.org/t/request-to-add-qownnotes-to-manjaro-sw-repo/97630)
|
||||
- [Notas en Nextcloud y Markdown. uGeek Podcast](https://ugeek.github.io//post/2017-02-15-notas-en-nextcloud-y-markdown.html) #نشرة_صوتية #أسباني
|
||||
- [Note Taking Programs](https://atarnotes.com/forum/index.php?topic=190238.0)
|
||||
- [Adding new apps at ecloud.global? - Features & Applications - /e/ community](https://community.e.foundation/t/adding-new-apps-at-ecloud-global/12404/9)
|
||||
- [KDE Neon - PCGuia](https://www.pcguia.pt/2019/07/kde-neon/)
|
||||
- [note taking - Linux text editor with support of illustrations, folding, and different fonts? - Software Recommendations Stack Exchange](https://softwarerecs.stackexchange.com/questions/72663/linux-text-editor-with-su)
|
||||
- تعليق
|
||||
- تعليق
|
||||
- [My Server - AlternativeTo.net](https://alternativeto.net/list/8220/my-server)
|
||||
- [The Top 50 Note Taking Open Source Projects](https://awesomeopensource.com/projects/note-taking)
|
||||
- [QOwnNotes mac-QOwnNotes for mac(专业私有云笔记) V20.4.2免费版 - 未来Mac下载](https://mac.orsoon.com/Mac/164313.html)
|
||||
- they have their own macOS installer for QOwnNotes!
|
||||
- they have their own macOS installer for QOwnNotes!
|
||||
- [Get productive on the Linux desktop with 7 essential apps | Snapcraft](https://snapcraft.io/blog/get-productive-on-the-linux-desktop-with-7-essential-apps)
|
||||
- Martin Wimpress
|
||||
- Martin Wimpress
|
||||
- [Offline Computing – 10 Apps for the Digital Nomad | Snapcraft](https://snapcraft.io/blog/offline-computing-10-apps-for-the-digital-nomad)
|
||||
- Alan Pope
|
||||
- Alan Pope
|
||||
- [LXDE vs LXQT, which is better? - General Discussion - Manjaro Linux Forum](https://forum.manjaro.org/t/lxde-vs-lxqt-which-is-better/76943/8)
|
||||
- [QOwnNotes and Markor | Brent Huisman](https://brent.huisman.pl/qownnotes-and-markor/)
|
||||
- **[Self-Hosted 18: Ring Doorbell Alternative](https://selfhosted.show/18)***
|
||||
- <https://selfhosted.show/18?t=1088> Several minutes about QON
|
||||
- **[Self-Hosted 18: Ring Doorbell Alternative](https://selfhosted.show/18)\***
|
||||
- <https://selfhosted.show/18?t=1088> Several minutes about QON
|
||||
- [/s/ - Best Open Source Software for Windows](https://2ch.hk/s/res/2764147.html)
|
||||
- [/s/ - Ищу программу...](https://2ch.hk/s/res/2127464.html#2766133)
|
||||
- [Pervane Plain text file based note taking and knowledge base building tool](https://hakanu.github.io/pervane/)
|
||||
|
@ -283,7 +283,7 @@
|
|||
- [Way to quick add notes? - Resolved help - Obsidian Forum](https://forum.obsidian.md/t/way-to-quick-add-notes/5301/6)
|
||||
- [Nextcloud Files and Notes for secure and easy file and note sharing and collaboration – Nextcloud](https://nextcloud.com/blog/nextcloud-files-and-notes-for-secure-and-easy-file-and-note-sharing-and-collaboration/)
|
||||
- [How do you keep notes? - DEV](https://dev.to/madza/how-do-you-keep-notes-2p48)
|
||||
- <https://dev.to/ecognito/comment/12ikk>
|
||||
- <https://dev.to/ecognito/comment/12ikk>
|
||||
- [The Top 10 Productivity Apps on Desktop - Asian Efficiency](https://www.asianefficiency.com/technology/the-top-10-productivity-apps-on-desktop/)
|
||||
- [Tired of note-taking apps | Hacker News](https://news.ycombinator.com/item?id=23888799&p=2)
|
||||
- [Mark Text : un éditeur de texte encore jeune, mais très prometteur](https://www.nextinpact.com/article/44807/mark-text-editeur-texte-encore-jeune-mais-tres-prometteur)
|
||||
|
@ -311,5 +311,4 @@
|
|||
|
||||
- Alpine Linux: <https://pkgs.alpinelinux.org/packages?name=qownnotes&branch=edge>
|
||||
- nixos: <https://search.nixos.org/packages?query=qownnotes>
|
||||
- <https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/office/qownnotes/default.nix>
|
||||
|
||||
- <https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/office/qownnotes/default.nix>
|
||||
|
|
|
@ -7,20 +7,21 @@ image: /img/bookmarks.png
|
|||
تتيح لك قص المحتوى من صفحات المتصفح وكذلك إدارة إشارات المتصفح المرجعية عبر المتصفحات وأنظمة التشغيل المختلفة.
|
||||
|
||||
::: tip
|
||||
|
||||
- يجب أن يكون QOwnNotes مفتوحا حتى تعمل إضافة المتصفح رفيقة الويب.
|
||||
- لا حاجة للاتصال بالإنترنت. إضافة المتصفح تعمل **بدون اتصال**.
|
||||
:::
|
||||
:::
|
||||
|
||||
## التثبيت
|
||||
|
||||
1. الحصول على الإضافة
|
||||
- [سوق Chrome الإلكتروني](https://chrome.google.com/webstore/detail/qownnotes-web-companion/pkgkfnampapjbopomdpnkckbjdnpkbkp)
|
||||
- [صفحة إضافات فيرفكس](https://addons.mozilla.org/firefox/addon/qownnotes-web-companion)
|
||||
- يمكنك أيضا أن تجد الإضافة على [GitHub](https://github.com/qownnotes/web-companion/).
|
||||
- [سوق Chrome الإلكتروني](https://chrome.google.com/webstore/detail/qownnotes-web-companion/pkgkfnampapjbopomdpnkckbjdnpkbkp)
|
||||
- [صفحة إضافات فيرفكس](https://addons.mozilla.org/firefox/addon/qownnotes-web-companion)
|
||||
- يمكنك أيضا أن تجد الإضافة على [GitHub](https://github.com/qownnotes/web-companion/).
|
||||
2. إضافة رمز الأمان لإعداد الإضافة.
|
||||
- المرة الأولى التي ستنقر فيها على أيقونة إضافة المتصفح QOwnNotes، سيظهر لك صندوق حواري فيه رمز أمان. انسخ الرمز.
|
||||
- اذهب إلى مكان إدارة الإضافات في متصفحك. انقر على تفاصيل إضافة QOwnNotes.
|
||||
- ألصق الرمز إلى خانة رمز الأمان.
|
||||
- المرة الأولى التي ستنقر فيها على أيقونة إضافة المتصفح QOwnNotes، سيظهر لك صندوق حواري فيه رمز أمان. انسخ الرمز.
|
||||
- اذهب إلى مكان إدارة الإضافات في متصفحك. انقر على تفاصيل إضافة QOwnNotes.
|
||||
- ألصق الرمز إلى خانة رمز الأمان.
|
||||
3. لاستعمال الوضع الخصوصي، عليك السماح للإضافة بالعمل في النوافذ الخصوصية، في إعدادات الإضافة.
|
||||
|
||||
## مقص الويب
|
||||
|
@ -34,7 +35,7 @@ Info إن لم يعمل مقص الويب، فتأكد أن تطبيق QOwnNotes
|
|||
|
||||
وتأكد كذلك أنك قبلت تجميع بيانات المستخدم عندما ضغطت على أيقونة الإضافة أول مرة في شريط المتصفح.
|
||||
|
||||
وإذا كنت تستخدم فيرفكس، فتحتاج كذلك أن تتأكد أنك فعّلت الصلاحية الاختيارية `الوصول إلى بياناتك لكل المواقع` في إعدادات *صلاحيات* الإضافة، وإلا فقد تقابل الخطأ: `TypeError: chrome.tabs.captureVisibleTab is not a function`.
|
||||
وإذا كنت تستخدم فيرفكس، فتحتاج كذلك أن تتأكد أنك فعّلت الصلاحية الاختيارية `الوصول إلى بياناتك لكل المواقع` في إعدادات _صلاحيات_ الإضافة، وإلا فقد تقابل الخطأ: `TypeError: chrome.tabs.captureVisibleTab is not a function`.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
|
@ -64,6 +65,7 @@ Info إن لم يعمل مقص الويب، فتأكد أن تطبيق QOwnNotes
|
|||
- [اسم صفحة الوب](https://www.example.com) #وسم١ #وسم٢
|
||||
- [اسم صفحة الوب](https://www.example.com) شيء من الوصف فقط
|
||||
- [اسم صفحة الوب](https://www.example.com) #وسم١ #وسم٢ شيء من الوصف والوسوم
|
||||
|
||||
* [اسم صفحة الوب](https://www.example.com) رمز عناصر القائمة البديل صالح أيضا
|
||||
```
|
||||
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
يمكنك استخدام هذه المعاملات في واجهة سطر الأوامر (CLI) للتحكم في سلوك التطبيق:
|
||||
|
||||
| المُعامِل | الوصف |
|
||||
| ------------------------------ | --------------------------------------------------------------------------------------------- |
|
||||
| `--help` | يُظهر شاشة المساعدة |
|
||||
| `--version` | يعرض رقم نسخة التطبيق |
|
||||
| `--portable` | يشغل التطبيق في الوضع المحمول |
|
||||
| `--clear-settings` | يمسح الإعدادات ويشغل التطبيق |
|
||||
| `--dump-settings` | يطبع تفريغ الإعدادات ومعلومات أخرى عن التطبيق والبيئة، بصيغة ماركداون GitHub ويخرج من التطبيق |
|
||||
| `--session <اسم>` | يشغل التطبيق في سياق مختلف للإعدادات والملفات الداخلية |
|
||||
| `--allow-multiple-instances` | يسمح بتشغيل عدة نسخ من تطبيق QOwnNotes حتى في حالة منع ذلك في الإعدادات |
|
||||
| `--action <اسم>` | ينفذ إجراء قائمة بعد تشغيل التطبيق (انظر بالأسفل) |
|
||||
| `--completion <الصدفة>` | يولّد أوامر الإكمال الملائمة للصَدفة. يقبل `fish` و `bash`. |
|
||||
| المُعامِل | الوصف |
|
||||
| ----------------------------- | --------------------------------------------------------------------------------------------- |
|
||||
| `--help` | يُظهر شاشة المساعدة |
|
||||
| `--version` | يعرض رقم نسخة التطبيق |
|
||||
| `--portable` | يشغل التطبيق في الوضع المحمول |
|
||||
| `--clear-settings` | يمسح الإعدادات ويشغل التطبيق |
|
||||
| `--dump-settings` | يطبع تفريغ الإعدادات ومعلومات أخرى عن التطبيق والبيئة، بصيغة ماركداون GitHub ويخرج من التطبيق |
|
||||
| `--session <اسم>` | يشغل التطبيق في سياق مختلف للإعدادات والملفات الداخلية |
|
||||
| `--allow-multiple-instances` | يسمح بتشغيل عدة نسخ من تطبيق QOwnNotes حتى في حالة منع ذلك في الإعدادات |
|
||||
| `--action <اسم>` | ينفذ إجراء قائمة بعد تشغيل التطبيق (انظر بالأسفل) |
|
||||
| `--completion <الصدفة>` | يولّد أوامر الإكمال الملائمة للصَدفة. يقبل `fish` و `bash`. |
|
||||
|
||||
::: tip
|
||||
إذا كنت تواجه مشاكل مع QOwnNotes المثبت لديك، ربما تود أن تشغّل التطبيق بإعدادات جديدة بغير أن تفقد إعداداتك الحالية، باستخدام المُعامل <code dir="ltr">--session</code>.
|
||||
|
@ -20,15 +20,16 @@
|
|||
```bash
|
||||
QOwnNotes --session test
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
قد تحتاج إلى تشغيل التطبيق من واجهة سطر الأوامر بطرق مختلفة على أنظمة التشغيل المختلفة:
|
||||
|
||||
| نظام التشغيل | الأمر |
|
||||
| ------------ | ----------------------------------------------------------------------------------- |
|
||||
| لينكس | `QOwnNotes` (أو `qownnotes` لو كان مثبتًا عبر snap) |
|
||||
| نظام التشغيل | الأمر |
|
||||
| ------------ | ----------------------------------------------------------------------------- |
|
||||
| لينكس | `QOwnNotes` (أو `qownnotes` لو كان مثبتًا عبر snap) |
|
||||
| ماك أو إس | `<span dir="ltr">/Applications/QOwnNotes.app/Contents/MacOS/QOwnNotes</span>` |
|
||||
| ويندوز | `QOwnNotes.exe` |
|
||||
| ويندوز | `QOwnNotes.exe` |
|
||||
|
||||
::: tip
|
||||
لنسخ تفريغ الإعدادات إلى الحافظة مباشرةً لنشره في [مسألة أو مشكلة على GitHub](https://github.com/pbek/QOwnNotes/issues)، يمكنك استخدام `xclip` أو `xsel` على لينكس، أو `pbcopy` على macOS، أو `clip` على Windows:
|
||||
|
@ -46,6 +47,7 @@ QOwnNotes --dump-settings | pbcopy
|
|||
# انسخ تفريغ الإعدادات إلى الحافظة على ويندوز باستخدام clip
|
||||
QOwnNotes --dump-settings | clip
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
## تنفيذ إجراءات قائمة بعد التشغيل
|
||||
|
@ -62,7 +64,7 @@ QOwnNotes --action actionShow_Todo_List
|
|||
يمكنك الحصول على أسماء كائنات إجراءات القائمة من [mainwindow.ui](https://github.com/pbek/QOwnNotes/blob/main/src/mainwindow.ui). فقط ابحث بالعنوان الإنجليزي للقائمة. لاحظ أن هذه النصوص قد تتغير بمرور الوقت.
|
||||
:::
|
||||
|
||||
لتنفيذ [إجراء برمجي](../scripting/methods-and-objects.md#registering-a-custom-action)، استخدم <code dir="ltr">customAction_</code> متبوعًا باسم الإجراء المخصص. اسم الإجراء المخصص هو المُعامل الأول في نداء `script.registerCustomAction` في البُريمج.
|
||||
لتنفيذ [إجراء برمجي](../scripting/methods-and-objects.md#registering-a-custom-action)، استخدم <code dir="ltr">customAction\_</code> متبوعًا باسم الإجراء المخصص. اسم الإجراء المخصص هو المُعامل الأول في نداء `script.registerCustomAction` في البُريمج.
|
||||
|
||||
مثلا لتنفيذ الإجراء المخصص `myAction`، شغّل QOwnNotes هكذا:
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ rm /tmp/qc.tar.gz && \
|
|||
sudo mv /tmp/qc /usr/local/bin/qc && \
|
||||
/usr/local/bin/qc --version
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
## الاعتماديات
|
||||
|
@ -38,7 +39,7 @@ sudo mv /tmp/qc /usr/local/bin/qc && \
|
|||
|
||||

|
||||
|
||||
قبل أن تستخدم مدير القصاصات عليك تفعيل *خادم Web socket* (2) في شاشة إعدادات *إضافة المتصفح وقصاصات الأوامر* (1) في QOwnNotes.
|
||||
قبل أن تستخدم مدير القصاصات عليك تفعيل _خادم Web socket_ (2) في شاشة إعدادات _إضافة المتصفح وقصاصات الأوامر_ (1) في QOwnNotes.
|
||||
|
||||
ثم يجب عليك إظهار رمز الأمان (3) ونسخه (4).
|
||||
|
||||
|
@ -67,7 +68,9 @@ token = "رمز الأمان الخاص بك هنا"
|
|||
|
||||
```markdown
|
||||
- `echo I am a command` I am a description #tag1 #tag2 #tag3
|
||||
|
||||
* `echo I am also a command` I am a description #tag3 #tag4 #tag5
|
||||
|
||||
- cmd: `echo I will be found in the current note` This command will be found in the current note regardless of note tags
|
||||
|
||||
<!-- Example for asking for user input -->
|
||||
|
|
|
@ -54,8 +54,7 @@ graph TB
|
|||
- تستطيع أيضا **الوصول إلى تاريخ ملاحظاتك وملاحظاتك المهملة** على خادم Nextcloud أو ownCloud الخاص بك عبر [QOwnNotesApi Nextcloud app](#qownnotesapi-nextcloud-app)
|
||||
- يمكن الوصول إلى قوائم مهامك على خادم Nextcloud أو ownCloud من داخل QOwnNotes
|
||||
- **QOwnNotes لا يزامن ملاحظاتك** ولا ملفات الوسائط أو المرفقات!
|
||||
- مزامنة الملفات هي مَسعًى معقد، ويوجد بالفعل حلول مزامنة ملفات عظيمة (انظر [عميل مزامنة Nextcloud الحاسوبي](#nextcloud-desktop-sync-client))
|
||||
|
||||
- مزامنة الملفات هي مَسعًى معقد، ويوجد بالفعل حلول مزامنة ملفات عظيمة (انظر [عميل مزامنة Nextcloud الحاسوبي](#nextcloud-desktop-sync-client))
|
||||
|
||||
## ملفات ملاحظات ماركداون
|
||||
|
||||
|
@ -64,7 +63,6 @@ graph TB
|
|||
- تستطيع استخدام أي محرر نصوص تريده بجانب QOwnNotes لعرض أو تعديل ملفات ملاحظاتك
|
||||
- **زامن ملاحظاتك** مع الأجهزة الأخرى (الحاسوب والمحمول) باستخدام عميل مزامنة [Nextcloud](https://nextcloud.com/) أو [ownCloud](https://owncloud.org/) مع خادمك
|
||||
|
||||
|
||||
## إضافة متصفح QOwnNotes
|
||||
|
||||
يمكنك استخدام QOwnNotes لإدارة **إشارات المتصفح المرجعية** أو كـ**مقص ويب**.
|
||||
|
@ -134,7 +132,7 @@ graph TB
|
|||
- [Nextcloud Notes لأندرويد](https://play.google.com/store/apps/details?id=it.niedermann.owncloud.notes) (من طرف ثالث)
|
||||
|
||||
::: tip
|
||||
يمكنك أيضا استخدام أي أداة مزامنة مثل *Synchronize Ultimate* أو *FolderSync* لمزامنة ملفات ملاحظاتك، وتطبيق مثل *neutriNotes* لتحريرها.
|
||||
يمكنك أيضا استخدام أي أداة مزامنة مثل _Synchronize Ultimate_ أو _FolderSync_ لمزامنة ملفات ملاحظاتك، وتطبيق مثل _neutriNotes_ لتحريرها.
|
||||
:::
|
||||
|
||||
### آي أو إس
|
||||
|
|
|
@ -7,11 +7,11 @@ Note
|
|||
|
||||
يمكنك تجربة **QOwnNotes** في متصفحك بغير تثبيته، باتباع هذه التعليمات:
|
||||
|
||||
١) انقر على هذا الرابط: [Play with Docker](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/qownnotes/docker-desktop/main/examples/docker-compose.play-with-docker.yml&stack_name=desktop). ٢) انقر على زر **Login / Start** (انظر النقطة **1** في لقطات الشاشة) وسجّل دخولك باستخدام حسابك على Docker (تحتاج إلى إنشاء حساب إذا لم يكن لديك واحدا بالفعل).
|
||||
١) انقر على هذا الرابط: [Play with Docker](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/qownnotes/docker-desktop/main/examples/docker-compose.play-with-docker.yml&stack_name=desktop). ٢) انقر على زر **Login / Start** (انظر النقطة **1** في لقطات الشاشة) وسجّل دخولك باستخدام حسابك على Docker (تحتاج إلى إنشاء حساب إذا لم يكن لديك واحدا بالفعل).
|
||||
|
||||

|
||||
|
||||
٣) انظر حتى ينتهي إنشاء الحاوية وتبدأ في العمل. عندئذ يمكنك النقر على **6080** في الأعلى (انظر النقطة **2** في لقطات الشاشة). إذا واجهك خطأ، برجاء الانتظار قليلا ثم حاول النقر على *6080* من جديد؛ قد تحتاج بيئة سطح المكتب لبعض الوقت حتى تحمّل.
|
||||
٣) انظر حتى ينتهي إنشاء الحاوية وتبدأ في العمل. عندئذ يمكنك النقر على **6080** في الأعلى (انظر النقطة **2** في لقطات الشاشة). إذا واجهك خطأ، برجاء الانتظار قليلا ثم حاول النقر على _6080_ من جديد؛ قد تحتاج بيئة سطح المكتب لبعض الوقت حتى تحمّل.
|
||||
|
||||

|
||||
|
||||
|
@ -19,6 +19,6 @@ Note
|
|||
|
||||

|
||||
|
||||
٥) ستظهر شاشة تثبيت **QOwnNotes**، انقر خلالها واضغط *Finish* حتى ترى شاشة QOwnNotes الرئيسية.
|
||||
٥) ستظهر شاشة تثبيت **QOwnNotes**، انقر خلالها واضغط _Finish_ حتى ترى شاشة QOwnNotes الرئيسية.
|
||||
|
||||

|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Evernote
|
||||
|
||||
يمكنك الوصول إلى صندوق حوار استيراد Evernote من قائمة `ملاحظة > استيراد` لاستيراد ملفات *Enex*.
|
||||
يمكنك الوصول إلى صندوق حوار استيراد Evernote من قائمة `ملاحظة > استيراد` لاستيراد ملفات _Enex_.
|
||||
|
||||
سيستورد أيضا الصور والملحقات والوسوم والبيانات الوصفية والتنسيق الأساسي للنصوص.
|
||||
|
||||
|
@ -26,7 +26,6 @@
|
|||
>
|
||||
> python keep_to_markdown.py Keep out/
|
||||
>
|
||||
>
|
||||
> أبدل الاسم Keep في الأمر باسم المجلد الذي فيه الملاحظات بصيغة JSON. ومجلد out سيُنشأ إذا لم يكن موجودا.
|
||||
|
||||
من <https://gitlab.com/-/snippets/2002921>
|
||||
|
|
|
@ -8,10 +8,15 @@
|
|||
|
||||
```markdown
|
||||
# عنوان مستوى أول
|
||||
|
||||
## عنوان مستوى ثان
|
||||
|
||||
### عنوان مستوى ثالث
|
||||
|
||||
#### عنوان مستوى رابع
|
||||
|
||||
##### عنوان مستوى خامس
|
||||
|
||||
###### عنوان مستوى سادس
|
||||
```
|
||||
|
||||
|
@ -22,11 +27,9 @@
|
|||
كبديل، للعناوين من المستويين الأول والثاني، يمكن تسطيرهم هكذا:
|
||||
|
||||
```markdown
|
||||
شكل بديل لعناوين المستوى الأول
|
||||
==================================
|
||||
# شكل بديل لعناوين المستوى الأول
|
||||
|
||||
شكل بديل لعناوين المستوى الثاني
|
||||
------------------------------------
|
||||
## شكل بديل لعناوين المستوى الثاني
|
||||
```
|
||||
|
||||
::: tip
|
||||
|
@ -36,7 +39,7 @@
|
|||
## التوكيد
|
||||
|
||||
```markdown
|
||||
التوكيد البسيط، أو الخط المائل، يكون *بنجمة واحدة على كل جانب*.
|
||||
التوكيد البسيط، أو الخط المائل، يكون _بنجمة واحدة على كل جانب_.
|
||||
|
||||
التوكيد القوي، أو الخط العريض، يكون **بنجمتين اثنتين على كل جانب**.
|
||||
```
|
||||
|
@ -47,7 +50,7 @@
|
|||
|
||||
## التسطير
|
||||
|
||||
يوجد كذلك إعداد اختياري لتفعيل عرض التسطير في *إعدادات المعاينة*.
|
||||
يوجد كذلك إعداد اختياري لتفعيل عرض التسطير في _إعدادات المعاينة_.
|
||||
|
||||
```markdown
|
||||
_مسطر_
|
||||
|
@ -74,14 +77,18 @@ _مسطر_
|
|||
```markdown
|
||||
1. العنصر الأول في قائمة مرقمة
|
||||
2. عنصر آخر
|
||||
* قائمة منقوطة فرعية.
|
||||
1. الرقم الفعلي غير مهم؛ المهم أنه رقم
|
||||
1. قائمة مرقمة فرعية (تعمل فقط في المحرر، ولا تعمل في المعاينة)
|
||||
4. وعنصر آخر.
|
||||
|
||||
* القوائم المنقوطة قد تستخدم النجوم
|
||||
- أو الشرطات
|
||||
+ أو علامات الجمع
|
||||
- قائمة منقوطة فرعية.
|
||||
|
||||
1. الرقم الفعلي غير مهم؛ المهم أنه رقم
|
||||
1. قائمة مرقمة فرعية (تعمل فقط في المحرر، ولا تعمل في المعاينة)
|
||||
1. وعنصر آخر.
|
||||
|
||||
- القوائم المنقوطة قد تستخدم النجوم
|
||||
|
||||
* أو الشرطات
|
||||
|
||||
- أو علامات الجمع
|
||||
```
|
||||
|
||||
::: tip
|
||||
|
@ -145,7 +152,6 @@ http://www.example.com أو <http://www.example.com>
|
|||
يمكنك أيضا لصق الصورة من الحافظة مباشرةً في الملاحظة بالاختصار <kbd>Ctrl + Shift + V</kbd>.
|
||||
:::
|
||||
|
||||
|
||||
## الأكواد المضمّنة وكتل الأكواد
|
||||
|
||||
```markdown
|
||||
|
@ -170,12 +176,13 @@ http://www.example.com أو <http://www.example.com>
|
|||
### سور الفاصلات العليا المائلة
|
||||
|
||||
يمكنك أيضا استخدام ثلاث فاصلات عليا مائلة لإنشاء كتلة كود.
|
||||
~~~markdown
|
||||
|
||||
````markdown
|
||||
```
|
||||
الكود يأتي هنا
|
||||
الكود يأتي هنا
|
||||
```
|
||||
~~~
|
||||
````
|
||||
|
||||
::: tip
|
||||
يمكنك استخدام [الاختصار](./shortcuts.md) <kbd>Ctrl + Shift + C</kbd> على
|
||||
|
@ -197,60 +204,61 @@ cd Notes
|
|||
|
||||
اللغات المدعومة حاليا (ومعرِّفات كتل الأكواد) هي:
|
||||
|
||||
* BASh scripting, `bash`
|
||||
* C, `c`
|
||||
* C++, `cpp`
|
||||
* C++, `cxx`
|
||||
* C++, `c++`
|
||||
* C#, `c#`
|
||||
* CMake, `cmake`
|
||||
* C#, `csharp`
|
||||
* CSS, `css`
|
||||
* Go, `go`
|
||||
* HTML, `html`
|
||||
* INI, `ini`
|
||||
* Java, `java`
|
||||
* JavaScript, `javascript`
|
||||
* JavaScript, `js`
|
||||
* JSON, `json`
|
||||
* Makefile, `make`
|
||||
* PHP, `php`
|
||||
* Python, `py`
|
||||
* Python, `python`
|
||||
* QML, `qml`
|
||||
* Rust, `rust`
|
||||
* Shell scripting, `sh`
|
||||
* SQL, `sql`
|
||||
* TypeScript, `ts`
|
||||
* TypeScript, `typescript`
|
||||
* V, `v`
|
||||
* Vex, `vex`
|
||||
* XML, `xml`
|
||||
* YAML, `yml`
|
||||
* YAML, `yaml`
|
||||
- BASh scripting, `bash`
|
||||
- C, `c`
|
||||
- C++, `cpp`
|
||||
- C++, `cxx`
|
||||
- C++, `c++`
|
||||
- C#, `c#`
|
||||
- CMake, `cmake`
|
||||
- C#, `csharp`
|
||||
- CSS, `css`
|
||||
- Go, `go`
|
||||
- HTML, `html`
|
||||
- INI, `ini`
|
||||
- Java, `java`
|
||||
- JavaScript, `javascript`
|
||||
- JavaScript, `js`
|
||||
- JSON, `json`
|
||||
- Makefile, `make`
|
||||
- PHP, `php`
|
||||
- Python, `py`
|
||||
- Python, `python`
|
||||
- QML, `qml`
|
||||
- Rust, `rust`
|
||||
- Shell scripting, `sh`
|
||||
- SQL, `sql`
|
||||
- TypeScript, `ts`
|
||||
- TypeScript, `typescript`
|
||||
- V, `v`
|
||||
- Vex, `vex`
|
||||
- XML, `xml`
|
||||
- YAML, `yml`
|
||||
- YAML, `yaml`
|
||||
|
||||
## الجداول
|
||||
|
||||
الجداول ليست جزءًا من جوهر مواصفات ماركداون، لكن معاينة QOwnNotes تدعمها.
|
||||
|
||||
```markdown
|
||||
````markdown
|
||||
يمكن استخدام النقطتين الرأسيتين لمحاذاة الأعمدة.
|
||||
|
||||
| الجداول | رائعة | حقا |
|
||||
| ------------- |:-------------:| -----:|
|
||||
| الجداول | رائعة | حقا |
|
||||
| ------------------ | :----------: | ----: |
|
||||
| العمود الثالث | محاذى لليمين | $1600 |
|
||||
| العمود الثاني | ممركز | $12 |
|
||||
| خطوط الحمار الوحشي | جميلة وأنيقة | $1 |
|
||||
| العمود الثاني | ممركز | $12 |
|
||||
| خطوط الحمار الوحشي | جميلة وأنيقة | $1 |
|
||||
|
||||
يجب فصل كل خلية ترويسة بثلاث شرطات على الأقل.
|
||||
|
||||
يمكنك أيضا استخدام ماركداون داخل خلايا الجداول.
|
||||
|
||||
| ماركداون | أقل | جمالا |
|
||||
| --- | --- | --- |
|
||||
| *ما زال* | `يُعرض` | **بإتقان** |
|
||||
| 1 | 2 | 3 |
|
||||
~~~
|
||||
| ماركداون | أقل | جمالا |
|
||||
| -------- | ------- | ---------- |
|
||||
| _ما زال_ | `يُعرض` | **بإتقان** |
|
||||
| 1 | 2 | 3 |
|
||||
|
||||
````
|
||||
|
||||
::: tip
|
||||
اضغط <kbd>Alt + Shift + T</kbd> لإظهار حوار يساعدك في إنشاء الجداول. يمكنك حتى استيراد ملفات CSV في ذلك الحوار.
|
||||
|
@ -267,10 +275,11 @@ cd Notes
|
|||
كسر الاقتباس.
|
||||
|
||||
> هذا سطر طويل جدا ولكنه سيُنسّق بشكل سليم كاقتباس عندما يلف إلى السطر التالي. ياه يا فتى، لنستمر في الكتابة حتى نضمن أن هذا بالطول الكافي لكي يلف فعلا عند الجميع. آه، يمكنك *وضع* **ماركداون** داخل كتلة اقتباس.
|
||||
```
|
||||
````
|
||||
````
|
||||
|
||||
::: tip
|
||||
يمكنك إخبار QOwnNotes أن يظلّل كتل الاقتباس بكاملها أو أن يظلّل حرف الاقتباس فقط، في *إعدادات المحرر*
|
||||
يمكنك إخبار QOwnNotes أن يظلّل كتل الاقتباس بكاملها أو أن يظلّل حرف الاقتباس فقط، في _إعدادات المحرر_
|
||||
|
||||
يمكنك استخدام [الاختصار](./shortcuts.md) <kbd>Ctrl + Shift + B</kbd> لجعل النص المحدد كتلة اقتباس.
|
||||
:::
|
||||
|
@ -288,11 +297,11 @@ cd Notes
|
|||
|
||||
شرطات سفلية
|
||||
|
||||
___
|
||||
---
|
||||
|
||||
نجوم
|
||||
|
||||
***
|
||||
---
|
||||
```
|
||||
|
||||
## فصل السطور
|
||||
|
@ -308,10 +317,10 @@ ___
|
|||
```markdown
|
||||
إليك سطر لنبدأ به.
|
||||
|
||||
هذا السطر مفصول عن سابقه بسطرين جديدين، لذا فإنه يكون *فقرة منفصلة*.
|
||||
هذا السطر مفصول عن سابقه بسطرين جديدين، لذا فإنه يكون _فقرة منفصلة_.
|
||||
|
||||
وأيضا هذا السطر يبدأ فقرة منفصلة، لكن...
|
||||
هذا السطر مفصول فقط بمسافتين وسطر جديد واحد، لذا فإنه سطر منفصل في *نفس الفقرة*.
|
||||
هذا السطر مفصول فقط بمسافتين وسطر جديد واحد، لذا فإنه سطر منفصل في _نفس الفقرة_.
|
||||
```
|
||||
|
||||
::: tip
|
||||
|
@ -323,7 +332,7 @@ ___
|
|||
لا تظهر التعليقات في المعاينة.
|
||||
|
||||
```markdown
|
||||
[comment]: # (لن يظهر هذا التعليق في المعاينة)
|
||||
[comment]: # "لن يظهر هذا التعليق في المعاينة"
|
||||
|
||||
<!-- تعليقات هتمل مخفية أيضا -->
|
||||
```
|
||||
|
|
|
@ -154,6 +154,7 @@
|
|||
[نظرة على مفاهيم QOwnNotes](concept.md)
|
||||
|
||||
## الخصائص
|
||||
|
||||
- يمكنك استخدام **ملفاتك الحالية، النصية أو التي بصيغة ماركداون**؛ لا تحتاج إلى استيرادها
|
||||
- QOwnNotes مكتوب بلغة سي++ ومحسَّن **لتقليل استهلاك الموارد** (ليس تطبيق Electron متعطش للذاكرة والمعالج)
|
||||
- **استيراد من Evernote و Joplin**
|
||||
|
@ -176,8 +177,8 @@
|
|||
- **وضع Vim**
|
||||
- **[تطبيق ويب](web-app.md)** ليمكنك **إضافة صور من محمولك** إلى الملاحظة الحالية في QOwnNotes على حاسوبك
|
||||
|
||||
|
||||
## المظهر
|
||||
|
||||
- **تلوين ماركداون** للملاحظات **ووضع معاينة لماركداون**
|
||||
- **دعم سِمة الوضع المظلم**
|
||||
- **دعم السمات** في **تلوين ماركداون**
|
||||
|
@ -188,6 +189,7 @@
|
|||
- **الفروقات** بين الملاحظة الحالية والملاحظة المعدّلة خارج التطبيق **تظهر** في صندوق حوار
|
||||
|
||||
## اللغات
|
||||
|
||||
- **متاح بأكثر من ٦٠ لغة مختلفة** مثل العربية والإنجليزية والفرنسية والألمانية والإسبانية والبولندية والصينية واليابانية والروسية والبرتغالية والمجرية والهولندية
|
||||
- [مساعدتك](../contributing/translation.md) مرحب بها جدا لتحسين هذه الترجمات أو لترجمة QOwnNotes إلى لغات أخرى
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
# QOwnNotesAPI Nextcloud App
|
||||
|
||||
|
||||

|
||||
|
||||
يتيح [**QOwnNotesAPI**](https://github.com/pbek/qownnotesapi) لك **الوصول** إلى **الملاحظات المهملة** و**نسخ الملاحظات**.
|
||||
|
@ -10,7 +9,7 @@
|
|||
|
||||
- [صفحة تطبيقات Nextcloud](https://apps.nextcloud.com/apps/qownnotesapi)
|
||||
- [صفحة تطبيقات ownCloud](https://marketplace.owncloud.com/apps/qownnotesapi)
|
||||
:::
|
||||
:::
|
||||
|
||||
تتم مشاركة الملاحظات عبر API الذي يوفره Nextcloud / ownCloud. يتم الوصول إلى المهام مباشرةً عبر CalDAV.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# البحث عن الملاحظات
|
||||
|
||||
للبحث عن ملاحظات أو عن نص داخل الملاحظات، يمكنك استخدام الاختصار <kbd>Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>F</kbd> (أو <kbd>⌘ Cmd</kbd> + <kbd>⇧ Shift</kbd> + <kbd>F</kbd> على أنظمة ماك) للانتقال إلى *لوحة البحث عن الملاحظات*.
|
||||
للبحث عن ملاحظات أو عن نص داخل الملاحظات، يمكنك استخدام الاختصار <kbd>Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>F</kbd> (أو <kbd>⌘ Cmd</kbd> + <kbd>⇧ Shift</kbd> + <kbd>F</kbd> على أنظمة ماك) للانتقال إلى _لوحة البحث عن الملاحظات_.
|
||||
|
||||
توجد عدة طرق مختلفة للبحث عن الملاحظات:
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
- <kbd>Alt</kbd> + <kbd>PageDown</kbd> ينتقل إلى علامة تبويب الملاحظة التالية
|
||||
- <kbd>Ctrl</kbd> + <kbd>W</kbd> يُغلق علامة التبويب الحالية
|
||||
- <kbd>Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>D</kbd> يُبدّل الوضع الخالي من المشوشات
|
||||
- يمكنك أيضا مغادرته بزر <kbd>Esc</kbd>
|
||||
- يمكنك أيضا مغادرته بزر <kbd>Esc</kbd>
|
||||
- <kbd>Ctrl</kbd> + <kbd>P</kbd> يطبع نص الملاحظة الحالية
|
||||
- <kbd>Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>P</kbd> يطبع معاينة الملاحظة الحالية
|
||||
- <kbd>Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>V</kbd> يلصق ملاحظات أو صور أو HTML من الحافظة
|
||||
|
@ -60,11 +60,11 @@
|
|||
|
||||
- <kbd>Ctrl</kbd> + <kbd>النقر</kbd> على رابط لفتحه
|
||||
- <kbd>Ctrl</kbd> + <kbd>F</kbd> يتيح لك البحث في الملاحظة الحالية
|
||||
- استخدم زرّي الأسهم <kbd>الأعلى</kbd> و<kbd>الأسفل</kbd> أو الأزرار <kbd>F3</kbd> و <kbd>⇧ Shift</kbd> + <kbd>F3</kbd> للانتقال إلى المطابقات السابقة والتالية
|
||||
- <kbd>Esc</kbd> يُغلق شريط البحث
|
||||
- استخدم زرّي الأسهم <kbd>الأعلى</kbd> و<kbd>الأسفل</kbd> أو الأزرار <kbd>F3</kbd> و <kbd>⇧ Shift</kbd> + <kbd>F3</kbd> للانتقال إلى المطابقات السابقة والتالية
|
||||
- <kbd>Esc</kbd> يُغلق شريط البحث
|
||||
- <kbd>Ctrl</kbd> + <kbd>R</kbd> يتيح لك البحث والاستبدال في الملاحظة الحالية
|
||||
- <kbd>Ctrl</kbd> + <kbd>D</kbd> يكرر السطر الحالي أو النص المحدد
|
||||
- <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>الأسفل</kbd> يفعل نفس الشيء
|
||||
- <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>الأسفل</kbd> يفعل نفس الشيء
|
||||
- <kbd>Alt</kbd> + <kbd>Backspace</kbd> يمسح السطر الحالي
|
||||
- <kbd>Ctrl</kbd> + <kbd>Backspace</kbd> يمسح الكلمة الحالية
|
||||
- <kbd>Ctrl</kbd> + <kbd>L</kbd> يفتح حوارًا لإضافة رابط نصي (يعمل أيضا على النص المحدد)
|
||||
|
@ -81,18 +81,18 @@
|
|||
- <kbd>Alt</kbd> + <kbd>⇧ Shift</kbd> + <kbd>S</kbd> يشطب النص المحدد
|
||||
- <kbd>Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>U</kbd> تبديل حالة حروف النص المحدد
|
||||
- <kbd>Tab</kbd> يزيد المسافة البادئة للنص المحدد (يعمل أيضا على سطور متعددة)
|
||||
- <kbd>⇧ Shift</kbd> + <kbd>Tab</kbd> يقلل المسافة البادئة للنص المحدد
|
||||
- <kbd>⇧ Shift</kbd> + <kbd>Tab</kbd> يقلل المسافة البادئة للنص المحدد
|
||||
- <kbd>Tab</kbd> بعد محرف قائمة منقوطة يُزيد المسافة البادئة للعنصر
|
||||
- <kbd>⇧ Shift</kbd> + <kbd>Tab</kbd> بعد محرف قائمة منقوطة يُنقص المسافة البادئة للعنصر
|
||||
- <kbd>⇧ Shift</kbd> + <kbd>Tab</kbd> بعد محرف قائمة منقوطة يُنقص المسافة البادئة للعنصر
|
||||
- <kbd>Enter</kbd> في القوائم ينشئ عنصر قائمة جديد
|
||||
- <kbd>Alt</kbd> + <kbd>Left</kbd> للرجوع في تاريخ الملاحظة
|
||||
- <kbd>Alt</kbd> + <kbd>Right</kbd> للتقدم في تاريخ الملاحظة
|
||||
- <kbd>Alt</kbd> + <kbd>Right</kbd> للتقدم في تاريخ الملاحظة
|
||||
- <kbd>Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>1..9</kbd> يضيف إشارة مرجعية إلى موقع الملاحظة في الفتحة رقم ١..٩ (نفس رقم الزر)
|
||||
- <kbd>Ctrl</kbd> + <kbd>1..9</kbd> ينتقل إلى موضع الإشارة المرجعية في الفتحة رقم ١..٩ (نفس رقم الزر)
|
||||
- <kbd>Ctrl</kbd> + <kbd>+</kbd> يُزيد حجم خط نص الملاحظة بنقطة واحدة
|
||||
- <kbd>Ctrl</kbd> + <kbd>-</kbd> يُنقص حجم خط نص الملاحظة بنقطة واحدة
|
||||
- <kbd>Ctrl</kbd> + <kbd>0</kbd> يعيد تعيين حجم خط نص الملاحظة
|
||||
- <kbd>Ctrl</kbd> + <kbd>Space</kbd> يحاول حل معادلات بسيطة مثل <code dir="ltr">(4+5)*3=</code> أمام المؤشر، أو يكمل النص تلقائيا، أو يفتح الرابط
|
||||
- <kbd>Ctrl</kbd> + <kbd>Space</kbd> يحاول حل معادلات بسيطة مثل <code dir="ltr">(4+5)\*3=</code> أمام المؤشر، أو يكمل النص تلقائيا، أو يفتح الرابط
|
||||
- <kbd>Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>H</kbd> يصنع عنوانًا رئيسيًّا من اسم ملف الملاحظة ويضيفه في بدايتها
|
||||
- <kbd>Alt</kbd> + <kbd>⇧ Shift</kbd> + <kbd>X</kbd> يقسم الملاحظة الحالية إلى ملاحظتين عند موضع المؤشر
|
||||
- <kbd>Alt</kbd> + <kbd>⇧ Shift</kbd> + <kbd>W</kbd> يبحث في الويب عن النص المحدد
|
||||
|
@ -105,8 +105,8 @@
|
|||
### في لوحة معاينة الملاحظة
|
||||
|
||||
- <kbd>Ctrl</kbd> + <kbd>F</kbd> يتيح لك البحث في الملاحظة الحالية
|
||||
- استخدم زرّي الأسهم <kbd>الأعلى</kbd> و<kbd>الأسفل</kbd> أو الأزرار <kbd>F3</kbd> و <kbd>⇧ Shift</kbd> + <kbd>F3</kbd> للانتقال إلى المطابقات السابقة والتالية
|
||||
- <kbd>Esc</kbd> يُغلق شريط البحث
|
||||
- استخدم زرّي الأسهم <kbd>الأعلى</kbd> و<kbd>الأسفل</kbd> أو الأزرار <kbd>F3</kbd> و <kbd>⇧ Shift</kbd> + <kbd>F3</kbd> للانتقال إلى المطابقات السابقة والتالية
|
||||
- <kbd>Esc</kbd> يُغلق شريط البحث
|
||||
|
||||
### في قائمة المهام
|
||||
|
||||
|
@ -114,7 +114,6 @@
|
|||
- <kbd>Ctrl</kbd> + <kbd>I</kbd> يحفظ عنصر قائمة المهام الحالي ويضيفه إلى الملاحظة الحالية
|
||||
- <kbd>Ctrl</kbd> + <kbd>R</kbd> يزيل عنصر قائمة المهام الحالي
|
||||
|
||||
|
||||
## ماك أو إس
|
||||
|
||||
### في النافذة الرئيسية
|
||||
|
@ -138,7 +137,7 @@
|
|||
- <kbd>⌥ Alt</kbd> + <kbd>Page Down</kbd> ينتقل إلى علامة تبويب الملاحظة التالية
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>W</kbd> يُغلق علامة التبويب الحالية
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⇧ Shift</kbd> + <kbd>D</kbd> يُبدّل الوضع الخالي من المشوشات
|
||||
- يمكنك أيضا مغادرته بزر <kbd>Esc</kbd>
|
||||
- يمكنك أيضا مغادرته بزر <kbd>Esc</kbd>
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>P</kbd> يطبع نص الملاحظة الحالية
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⇧ Shift</kbd> + <kbd>P</kbd> يطبع معاينة الملاحظة الحالية
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⌃ Ctrl</kbd> + <kbd>V</kbd> يلصق ملاحظات أو صور أو HTML من الحافظة
|
||||
|
@ -175,11 +174,11 @@
|
|||
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>النقر</kbd> على رابط لفتحه
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>F</kbd> يتيح لك البحث في الملاحظة الحالية
|
||||
- استخدم زرّي الأسهم <kbd>الأعلى</kbd> و<kbd>الأسفل</kbd> أو الأزرار <kbd>F3</kbd> و <kbd>Shift</kbd> + <kbd>F3</kbd> للانتقال إلى المطابقات السابقة والتالية
|
||||
- <kbd>Esc</kbd> يُغلق شريط البحث
|
||||
- استخدم زرّي الأسهم <kbd>الأعلى</kbd> و<kbd>الأسفل</kbd> أو الأزرار <kbd>F3</kbd> و <kbd>Shift</kbd> + <kbd>F3</kbd> للانتقال إلى المطابقات السابقة والتالية
|
||||
- <kbd>Esc</kbd> يُغلق شريط البحث
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>R</kbd> يتيح لك البحث والاستبدال في الملاحظة الحالية
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>D</kbd> يكرر السطر الحالي أو النص المحدد
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⌃ Ctrl</kbd> + <kbd>الأسفل</kbd> يفعل نفس الشيء
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⌃ Ctrl</kbd> + <kbd>الأسفل</kbd> يفعل نفس الشيء
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>Backspace</kbd> يمسح السطر الحالي
|
||||
- <kbd>⌃ Ctrl</kbd> + <kbd>Backspace</kbd> يمسح الكلمة الحالية
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>L</kbd> يفتح حوارًا لإضافة رابط نصي (يعمل أيضا على النص المحدد)
|
||||
|
@ -196,18 +195,18 @@
|
|||
- <kbd>⌃ Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>S</kbd> يشطب النص المحدد
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⇧ Shift</kbd> + <kbd>U</kbd> تبديل حالة حروف النص المحدد
|
||||
- <kbd>Tab</kbd> يزيد المسافة البادئة للنص المحدد (يعمل أيضا على سطور متعددة)
|
||||
- <kbd>⇧ Shift</kbd> + <kbd>Tab</kbd> يقلل المسافة البادئة للنص المحدد
|
||||
- <kbd>⇧ Shift</kbd> + <kbd>Tab</kbd> يقلل المسافة البادئة للنص المحدد
|
||||
- <kbd>Tab</kbd> بعد محرف قائمة منقوطة يُزيد المسافة البادئة للعنصر
|
||||
- <kbd>⇧ Shift</kbd> + <kbd>Tab</kbd> بعد محرف قائمة منقوطة يُنقص المسافة البادئة للعنصر
|
||||
- <kbd>⇧ Shift</kbd> + <kbd>Tab</kbd> بعد محرف قائمة منقوطة يُنقص المسافة البادئة للعنصر
|
||||
- <kbd>Enter</kbd> في القوائم ينشئ عنصر قائمة جديد
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⌃ Ctrl</kbd> + <kbd>Left</kbd> للرجوع في تاريخ الملاحظة
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⌃ Ctrl</kbd> + <kbd>Right</kbd> للتقدم في تاريخ الملاحظة
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⌃ Ctrl</kbd> + <kbd>Right</kbd> للتقدم في تاريخ الملاحظة
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⇧ Shift</kbd> + <kbd>1..9</kbd> يضيف إشارة مرجعية إلى موقع الملاحظة في الفتحة رقم ١..٩ (نفس رقم الزر)
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>1..9</kbd> ينتقل إلى موضع الإشارة المرجعية في الفتحة رقم ١..٩ (نفس رقم الزر)
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>+</kbd> يُزيد حجم خط نص الملاحظة بنقطة واحدة
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>-</kbd> يُنقص حجم خط نص الملاحظة بنقطة واحدة
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>0</kbd> يعيد تعيين حجم خط نص الملاحظة
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>Space</kbd> يحاول حل معادلات بسيطة مثل <code dir="ltr">(4+5)*3=</code> أمام المؤشر، أو يكمل النص تلقائيا، أو يفتح الرابط
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>Space</kbd> يحاول حل معادلات بسيطة مثل <code dir="ltr">(4+5)\*3=</code> أمام المؤشر، أو يكمل النص تلقائيا، أو يفتح الرابط
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>⇧ Shift</kbd> + <kbd>H</kbd> يصنع عنوانًا رئيسيًّا من اسم ملف الملاحظة ويضيفه في بدايتها
|
||||
- <kbd>⌃ Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>X</kbd> يقسم الملاحظة الحالية إلى ملاحظتين عند موضع المؤشر
|
||||
- <kbd>⌃ Ctrl</kbd> + <kbd>⇧ Shift</kbd> + <kbd>W</kbd> يبحث في الويب عن النص المحدد
|
||||
|
@ -220,8 +219,8 @@
|
|||
### في لوحة معاينة الملاحظة
|
||||
|
||||
- <kbd>⌘ Cmd</kbd> + <kbd>F</kbd> يتيح لك البحث في الملاحظة الحالية
|
||||
- استخدم زرّي الأسهم <kbd>الأعلى</kbd> و<kbd>الأسفل</kbd> أو الأزرار <kbd>F3</kbd> و <kbd>⇧ Shift</kbd> + <kbd>F3</kbd> للانتقال إلى المطابقات السابقة والتالية
|
||||
- <kbd>Esc</kbd> يُغلق شريط البحث
|
||||
- استخدم زرّي الأسهم <kbd>الأعلى</kbd> و<kbd>الأسفل</kbd> أو الأزرار <kbd>F3</kbd> و <kbd>⇧ Shift</kbd> + <kbd>F3</kbd> للانتقال إلى المطابقات السابقة والتالية
|
||||
- <kbd>Esc</kbd> يُغلق شريط البحث
|
||||
|
||||
### في قائمة المهام
|
||||
|
||||
|
|
|
@ -7,14 +7,11 @@ tagline: تطبيق حر ومفتوح المصدر لتدوين الملاحظا
|
|||
actionText: بداية سريعة ←
|
||||
actionLink: getting-started/overview
|
||||
features:
|
||||
-
|
||||
title: امتلك ملاحظاتك
|
||||
- title: امتلك ملاحظاتك
|
||||
details: يتم تخزين جميع الملاحظات كملفات نصية مجردة بصيغة ماركداون على حاسوبك؛ لا يوجد «تقيد ببائع». استخدم خدمات المزامنة مثل Nextcloud لمزامنة ملاحظاتك عبر الأجهزة.
|
||||
-
|
||||
title: خفيف الأثر
|
||||
- title: خفيف الأثر
|
||||
details: تطبيق أصيل، مُحسَّن لتحقيق أفضل سرعة تشغيل وأقل استهلاك للمعالج والذاكرة.
|
||||
-
|
||||
title: تخصيص
|
||||
- title: تخصيص
|
||||
details: قابل للتخصيص والبرمجة لدرجة كبيرة؛ يمكنك ضبط كيف تحب العمل مع ملاحظاتك.
|
||||
footer: صنعه Patrizio Bekerle بكل حب ❤️
|
||||
---
|
||||
|
|
|
@ -10,4 +10,3 @@
|
|||
معلومة
|
||||
ألقِ نظرة على القائمة لمعرفة جميع الطرق المختلفة لتثبيت QOwnNotes
|
||||
:::
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue