Commit Graph

165 Commits

Author SHA1 Message Date
11af6e530e gui: sandbox: Add 'error' to vow_promises to avoid getting killed on ioctl() with TIOCSTI 2022-06-04 17:09:26 +02:00
1108a138f4 gui: mainwindow: Also resize mtime column to fit content 2022-06-04 17:09:26 +02:00
aeafa9560e mainwindow: Disable page switcher while generation is running
This prevents 'spam'. User may have scrolled 10 pages forward, while
we are still generating old pages. Then the user wonders why
they arrive so late.

So disable switching pages while the generation is still running

It is unlikely that a user will have to quickly go through search
results like that.
2022-05-29 11:20:28 +02:00
a82818dc43 gui: init previewProcessBar with 0 on start 2022-05-29 11:20:28 +02:00
c867652b6f gui: IPCPreviewWorker(): Don't allocate mapfunctor on heap 2022-05-29 11:20:28 +02:00
f8fe21d50b gui: Add label showing total number of preview pages 2022-05-29 11:20:28 +02:00
1e97f8dd26 gui: mainwindow: Fix preview page number calculation
The paging now works on the actual pages to be rendered.
2022-05-29 11:20:28 +02:00
ad0fc74439 ipc: Place socket in /tmp/.looqs/, remove ipc path settings 2022-05-29 11:20:28 +02:00
e44fb1a942 gui: main: Enable exile.h for IPC preview generation 2022-05-29 11:20:28 +02:00
472661bff6 gui: Begin simple IPC error reporting 2022-05-29 11:20:28 +02:00
4aa6d43674 gui: Open files/previews directly without IPC again
Since the main GUI process is not sandboxed again
2022-05-29 11:20:28 +02:00
2591a4ccba gui: ipc: Support cancellation of preview generation 2022-05-29 11:20:28 +02:00
d66e395fda gui: main: Kill IPCServer process on exit 2022-05-29 11:20:28 +02:00
0d6fb1d482 gui: mainwindow: Use new IPCPreviewClient 2022-05-29 11:20:28 +02:00
8f2e77b152 gui: Introduce IPCPreviewClient 2022-05-29 10:44:19 +02:00
3bdcb76d8e gui: PreviewResult: Add serialization() methods for IPC 2022-05-27 09:29:28 +02:00
ee18142e36 gui: PreviewGenerator*: Wrap PreviewResult in QSharedPointer 2022-05-27 09:28:21 +02:00
3e03fed1a2 gui: IpcServer: Use IPCPreviewWorker 2022-05-27 09:26:37 +02:00
6439adffc6 gui: Begin IPCPreviewWorker 2022-05-27 09:26:03 +02:00
02642a147a gui: Retire IPCClient and PreviewWorker 2022-05-27 09:24:42 +02:00
fe29641d0a IpcServer: Remove docOpen(), fileOpen(). MainWindow will do it
As it is no longer subject to sandboxing as a whole, it is not
restricted and thus, should call these functions itself
2022-05-17 19:23:03 +02:00
830226ae59 RenderConfig: Add serialization, basically for IPC 2022-05-17 19:20:06 +02:00
6a5cb69e27 gui: Add RenderTarget struct, an IPC helper class 2022-05-17 19:19:02 +02:00
b137dec434 gui: indexer tab: Show filepicker dialog when corresponding button clicked 2022-05-03 16:20:06 +02:00
f67a37bc21 GUI: Disable general sandbox due to inpracticability
Qt is usually built with Accessibility and D-Bus. If D-Bus
connections work, a bypass should be considered trivial.
If we block D-Bus, we experience quite some slowdowns in
certain contexts. That's because Qt makes D-Bus connections
for accessibility features etc. They appear to run into timeouts,
but this slows down things. Sandboxing also makes things
like showing (native) file picker dialogs harder.

Sandboxing efforts will focus on the critical paths such as
the existing Indexer sandbox and the to be implemented sandboxing
for preview generation.

We keep no_new_privs for now as chances are that this shouldn't hurt.
2022-05-03 15:56:08 +02:00
9d160ed7a0 gui: Add icon
Not the best on dark themes, better than nothing for now.
2022-04-28 09:13:34 +02:00
a132485924 gui: enableSandbox: Don't unshare network due to slowdowns
The indexer is quite slow with unshared network namespaces. It appears something in
Qt needs it as IPC or whatever. Seeing also dbus-related errors:

Issue: #33

So disable it for now.
2022-04-24 19:40:43 +02:00
d2d576e617 gui: Call enableSandboxing() after ensureConfigured() so all paths are guaranteed to exist 2022-04-24 19:40:43 +02:00
08da6b4349 gui: main: Remove vows from exile policy
SandboxedProcessor is not launched via IPCServer at this point.
The vow set is already very big and SandboxedProcessor
would require exec too.

So use exile default policy and add some path permisisons.

Once SandboxedProcessor is handled by IPC and preview generation
is also exiled separately, it has to be reevaluated whether
it makes sense for vows to return.
2022-04-24 19:40:43 +02:00
629c1efba5 IpcServer: Add addFile() 2022-04-24 15:52:20 +02:00
d73674937d gui: Begin support to also preview results in plain text files 2022-04-24 15:52:20 +02:00
59aa02f0cd gui: MainWindow: handleSearchResults: Use PreviewGenerator::get 2022-04-24 15:52:20 +02:00
1536781bda gui: PreviewGeneratorMapFunctor: Use PreviewGenerator::get() 2022-04-24 15:52:20 +02:00
57bb5c48c8 gui: PreviewGenerator: Add get() 2022-04-24 15:52:20 +02:00
4d0d9ba9c6 main: sandbox: Add clone vow, Use exile_vows_from_str()
Fresh ubuntu 22.04 uses clone3(). thread vow is not enough anymore.

Maybe Qt uses it now, who knows, let's just allow it for the time being.
2022-04-24 15:52:20 +02:00
2a024a9b40 gui: Improve conditions where progressbar visible, minor useability improvemnets 2022-04-24 15:52:20 +02:00
0503325c47 gui: Indexer tab: Save/Restore paths to/from settings 2022-04-24 15:52:20 +02:00
62d3eac498 gui: Properly restore other widgets after index has finished 2022-04-24 15:52:20 +02:00
45de97d8fb gui: Begin cancellation of Indexer 2022-04-24 15:52:20 +02:00
622916db04 gui: Implement 'Delete' button in Indexer tab 2022-04-15 21:06:56 +02:00
ef3f7bc72a gui: Check whether path exists before adding 2022-04-15 21:06:56 +02:00
0af7d4a3dc GUI: Begin new 'Indexer' tab 2022-04-15 21:06:56 +02:00
56414ee5e2 shared: Begin basic ConcurrentQueue 2022-04-15 21:06:56 +02:00
2e3b008207 gui: main: Add --no-sandbox 2022-01-04 23:44:37 +01:00
ea1d027621 gui: main: Enable sandbox post call to Common::setupAppInfo()
Move sandboxing code to own function
2022-01-04 23:27:45 +01:00
b10c2edf05 MainWindow: Avoid potential double path searches 2022-01-04 11:24:37 +01:00
404ce22ce6 Generalize previews: Mainwindow: Do necessary renames 2022-01-04 11:24:37 +01:00
0cbd0dd9eb Generalize previews: Retire PdfWorker, Add PreviewWorker 2022-01-03 23:14:55 +01:00
d816603a1c Generalize previews: Add PreviewGenerator* 2022-01-03 23:14:55 +01:00
95b3d1fce2 Generalize previews: Add PreviewResult,PreviewResultPdf, remove PdfPreview 2022-01-03 23:14:55 +01:00
32286cae4b Add RenderConfig, combining common parameters 2022-01-03 23:14:55 +01:00
c51487c4b2 gui: Call setupAppinfo() also for the IPC server 2022-01-03 23:14:55 +01:00
407ee1210c gui: Perform content search and path search by default
Search for content and paths. Merge lone words for content search.

This behaviour is much more natural than typing "c:()".
2022-01-03 23:14:55 +01:00
bb5a793300 gui: Add vow_promises to exile policy 2022-01-03 23:14:55 +01:00
ba636bf0fc IpcServer: Fix off-by-one 2022-01-01 17:58:52 +01:00
88ee2383f7 Switch to exile.h 2022-01-01 17:58:52 +01:00
890925929a GUI: Begin IPC mechanism to open files despite sandboxing 2022-01-01 17:58:52 +01:00
530ad9c334 pdfworker: Remove dead code 2022-01-01 17:58:52 +01:00
ebea074fcb gui: Begin basic sandboxing 2022-01-01 17:58:52 +01:00
95d4a12005 MainWindow: Fix Qt deprication 2021-06-12 23:01:14 +02:00
aac027fa16 gui.pro: Change target to looqs-gui 2021-06-12 15:06:41 +02:00
e97551be97 Rename all symbols to new project name 2021-06-12 14:59:58 +02:00
576b884574 mainwindow: warn if deleted files in search results 2021-03-27 18:18:19 +01:00
9ced0ec742 mainwindow: add right click menu to preview labels 2021-03-27 17:58:38 +01:00
e225fdad21 gui: pdfworker: Explicitly unlock mutex, don't wait for destructor 2021-03-07 22:27:27 +01:00
d3fe08b64b clicklabel: Add right button click signal 2021-03-07 22:26:59 +01:00
3fd4e47196 mainwindow: set window title 2021-03-07 21:09:38 +01:00
09aaf1da04 mainwindow: pdfPreviewReceived(): Don't capture whole preview object in lambda 2021-03-05 21:24:49 +01:00
9990ad7895 gui: Clarify what 'Results' means in statusbar 2020-08-24 22:08:31 +02:00
ef78e74cdd Detect first run and initialize database and config
Relates to #1
2020-08-24 21:36:45 +02:00
8b298fb85b gui: move page switcher next to scale 2020-06-06 23:35:00 +02:00
a46ecf9bff gui: disable searchbar when search is running
avoids waiting in the gui thread. does not try to cancel
the QFuture that actually cannot be cancelled anyway.

sidesteps a strange bug which rethrows already caught exception.
2020-06-06 23:18:33 +02:00
8de07b703c Add Common::databasePath which also allows overriding it 2020-05-24 15:36:27 +02:00
13fb901044 added Common namespace. cli: use settings instead of env for db path 2020-05-23 22:52:42 +02:00
de04264eb5 pdfworker: don't use deprecated search overload 2019-08-26 09:41:03 +02:00
a979eb1f51 remove max previewimage memory usage 2019-08-26 09:35:39 +02:00
fa8e351859 paging for pdfpreviews 2019-08-26 09:20:21 +02:00
014a31fa3c gui: fix passing args to pdfviewer (paths with spaces work now) 2019-08-19 20:02:28 +02:00
bdf235f21b pdf preview: proper highlighting for quoted (inside ") queries 2019-08-19 19:43:05 +02:00
22bcc888b9 new future: highlight searched words in pdf preview 2019-08-18 23:23:11 +02:00
cff481a57e Refactor search queries: Introduced QSSQuery
Purpose is to seperate certain logic from SQLite and generalize it more.
Even though we only have Sqlite atm, in general the database layers
must be stupid as possible, while QSSQuery should do most of the hard work.

Fixes in Tokenizer logic.
Switched to C++17.
2019-08-18 00:25:21 +02:00
05a5bac22f mainwindow: show size of files 2019-08-18 00:23:42 +02:00
5e983049f5 mainwindow: wait till search is completed before launching new one 2019-08-12 22:59:05 +02:00
0528e9067a pdfworker: Renderer copy constructor missed max mem field 2019-08-12 10:26:16 +02:00
55da974558 gui: executable name set to qss-gui instead of qss 2019-04-30 14:15:50 +02:00
330a9e5870 gui: stop generating preview images after a memory limit has been reached. 2019-04-30 14:13:10 +02:00
5deb64cd28 ClickLabel: rename clicked to leftClicked and only fire when left mouse button clicked 2019-04-30 12:40:28 +02:00
88a6152b52 pdf previews: set tooltip showing documents path 2019-04-30 12:30:29 +02:00
b319edea15 gui: mainwindow: remove dead code and unused members 2019-04-29 23:09:23 +02:00
09804a83cc gui: handle search exception (again after refactoring) 2019-04-29 23:05:51 +02:00
500fc13070 PdfWorker: generatePreviews: take const ref to container with search results 2019-04-29 23:01:11 +02:00
78fb075739 Add destructor for pdfworker renderer 2019-04-29 22:44:39 +02:00
4c8d201f81 pdf preview generation: Use QtConcurrent::mapped + QFutureWatcher instead of own single-thread solution 2019-04-29 20:50:52 +02:00
2cf26a17e1 gui: remove searchworker 2019-04-27 21:24:53 +02:00
098cd96dd2 searchworker: emit searchError on exception 2019-04-26 21:48:07 +02:00
8c027566e3 search: Avoid redundant results by placing pages into vector instead of returning searchresult for each page 2019-04-26 15:31:42 +02:00
569d8c4138 Begin sort: statement implementation, use bindvalues in all search filters, gui: save current scale 2019-04-25 10:27:54 +02:00
326c12ca80 move more files to shared project ; searchresultt.h: use filedata.h 2019-04-22 21:07:41 +02:00
6b94b8f619 Begin 'shared' project to share code between cli and gui 2019-04-20 23:31:14 +02:00
b717587d26 rename gui/qss.pro to gui/gui.pro 2019-04-06 17:28:27 +02:00