Here you'll find some of my projects that I've been working on in the past years.
Some are stale, some are still active projects, however I also do have a lot of unrealized ideas I could not fully pursue yet.
A multi-platform, Qt-based frontend for systemd's journalctl command. Accepting local as well as remote (SSH) data sources.
License: GNU General Public License v3.0
Possibility to do a full text search on the (displayed) journal
When compiling with ./autogen.sh && make
, it fails to compile because of:
./ui_mainwindow.h: In member function ‘void Ui_MainWindow::setupUi(QMainWindow*)’:
./ui_mainwindow.h:114:20: error: ‘class QTableView’ has no member named ‘setSizeAdjustPolicy’; did you mean ‘setSizePolicy’?
tableView->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
^~~~~~~~~~~~~~~~~~~
setSizePolicy
./ui_mainwindow.h:114:61: error: ‘AdjustToContents’ is not a member of ‘QAbstractScrollArea’
tableView->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
However I believe it's because it tries to use qt4 compiler instead of qt5. It should not use qt4 compiler at any moment I guess.
when i try to start qjournalctl it exits with:
./qjournalctl: /usr/lib/x86_64-linux-gnu/libssh.so.4: no version information available (required by ./qjournalctl) ./qjournalctl: relocation error: ./qjournalctl: symbol ssh_session_is_known_server version LIBSSH_4_5_0 not defined in file libssh.so.4 with link time reference
for installation i used this script:
https://raw.githubusercontent.com/freddii/program_installers/master/install_qjournalctl.sh
OS: Windows
Steps:
The problem seems to be related to how the pointer is being released. I don't know if this is a memory leak or if actually the object is being used by another instance. This kind of behaviours are exactly the reason to exist for the c++11 smart pointers. Maybe with them this can be easier managed.
Make sure to make it possible to supply the remote host from bash
Originally posted by @pentix in #17 (comment)
Often too small to display the user@host
-text
"Started from beginning"-note might easily be missed on quickly going through the results
... as we keep receiving data from the server
When you click on priority bar near a item, for instance just above "error", this toggles the priority to the minimum/maximum. If you click multiple times, the bar changes from min to max to min etc.
This does not change the actual priority however, since the level of logs displayed is always the same. To make an actual change, you have to slide the bar manually.
I can produce a video record if needed.
Seems not to be the case in systemd 215
Using Windows, it is not currently possible to access to the logging. All the buttons are disabled
Click on one existing connection and establish the connection. Then, the panel is displayed as follows
Click on List all available boots
. They are displayed
➡️ Check that no entry is selectable and if you click on show boot log
, nothing happens
See #41 (comment)
Check journalctl
output for restrictions/permission problems, etc.
As a Linux User, I want to have the QJournalctl
application ready to be used without needing to compile it.
So far, it is already integrated such feature at appveyor for windows. It is now possible to get it from https://ci.appveyor.com/project/pentix/qjournalctl/builds/31801115 > artifacts > release.zip. (i.e. https://ci.appveyor.com/api/buildjobs/mo40lkrya80svedb/artifacts/release.zip)
It is possible to configure appveyor to have both, the release for Linux and for Windows. Also, it is possible to connect it with Github to release them into the released at Github, but probaby this step is better to handle manualy until #47 is solved
Add a 💾 [save] button to export the filtered entries.
...instead of failing silently
Implement the possibility to connect to a server and view its journal instead of the local machine
Include short GIFs in the README?
Point out to use Qt 5, and explain compilation, etc.
Outsource non-UI code from showbootlog.cpp
This has become really unclear...
It would be a lot better to have a dialog box showing a list of all identifiers in the current log, with checkboxes to show/hide, instead of the text field we have now.
It turns out the Linux build of the windows-build branch currently fails, since qmake adds the VCPKG_Folder path to the linker libraries...
The else branch in the project file is somehow not linked to the CONFIG(x86_64)
section but rather to the win32:
option, adding the libraries to the linker.
Could you have a look at this? @alacasta
The reason this hadn't been detected earlier is because the CI was actually quite painful to setup and I limited myself to running CI always on the master branch 🙄
I'm running debian testing with libqt4-dev version 4.8.7+dfsg-11.
There are several compilation errors which I don't find easy to solve and since I havn't done any qt development for years, I'm a bit stuck:
./ui_mainwindow.h:108:20: error: ‘class QTableView’ has no member named ‘setSizeAdjustPolicy’; did you mean ‘setSizePolicy’?
tableView->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
^~~~~~~~~~~~~~~~~~~
setSizePolicy
./ui_mainwindow.h:108:61: error: ‘AdjustToContents’ is not a member of ‘QAbstractScrollArea’
tableView->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents);
and:
In file included from src/showbootlog.cpp:9:0:
./src/showbootlog.h:36:53: error: ‘QDateTime’ does not name a type; did you mean ‘QTime’?
void on_sinceDateTimeEdit_dateTimeChanged(const QDateTime &dateTime);
^~~~~~~~~
QTime
./src/showbootlog.h:38:53: error: ‘QDateTime’ does not name a type; did you mean ‘QTime’?
void on_untilDateTimeEdit_dateTimeChanged(const QDateTime &dateTime);
^~~~~~~~~
QTime
src/showbootlog.cpp:159:6: error: prototype for ‘void ShowBootLog::on_sinceDateTimeEdit_dateTimeChanged(const QDateTime&)’ does not match any in class ‘ShowBootLog’
void ShowBootLog::on_sinceDateTimeEdit_dateTimeChanged(const QDateTime &dateTime)
^~~~~~~~~~~
In file included from src/showbootlog.cpp:9:0:
./src/showbootlog.h:36:10: error: candidate is: void ShowBootLog::on_sinceDateTimeEdit_dateTimeChanged(const int&)
void on_sinceDateTimeEdit_dateTimeChanged(const QDateTime &dateTime);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/showbootlog.cpp:164:6: error: prototype for ‘void ShowBootLog::on_untilDateTimeEdit_dateTimeChanged(const QDateTime&)’ does not match any in class ‘ShowBootLog’
void ShowBootLog::on_untilDateTimeEdit_dateTimeChanged(const QDateTime &dateTime)
^~~~~~~~~~~
In file included from src/showbootlog.cpp:9:0:
./src/showbootlog.h:38:10: error: candidate is: void ShowBootLog::on_untilDateTimeEdit_dateTimeChanged(const int&)
void on_untilDateTimeEdit_dateTimeChanged(const QDateTime &dateTime);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Remove up to x
GB or preserve the last n
days
E.g. point out required libssh version, copy "script" from CI configs
I am attempting to build the app on Debian 9 ARM64 with 4 GB of memory and am getting these "out of memory" errors. Any suggestions?
$ make
/usr/lib/aarch64-linux-gnu/qt5/bin/qmake -spec linux-g++ CONFIG+=release -o Makefile qjournalctl.pro
In file /build/qtbase-opensource-src-8BZmR5/qtbase-opensource-src-5.7.1+dfsg/include/QtCore/../../src/corelib/tools/qvector.h, line 544: Out of memory
Makefile:207: recipe for target 'Makefile' failed
make: *** [Makefile] Aborted
It's wrong and annoying
Fix Channel Multiplexing issues
Thanks for publishing on the AUR. Would you consider adding a desktop file for use with DE/WMs?
Thanks!
I have installed all needed dependencies:
sudo apt-get install qt5-default cmake gcc g++ build-essential git
Cloned your repository and started compilation
git clone https://github.com/pentix/qjournalctl.git
cd qjournalctl
./autogen.sh
make
and got the following error:
xenial@xenial-vb:~/Downloads/qjournalctl$ make
/usr/lib/x86_64-linux-gnu/qt5/bin/uic ui/mainwindow.ui -o ui_mainwindow.h
/usr/lib/x86_64-linux-gnu/qt5/bin/uic ui/aboutdialog.ui -o ui_aboutdialog.h
/usr/lib/x86_64-linux-gnu/qt5/bin/uic ui/showbootlog.ui -o ui_showbootlog.h
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o main.o src/main.cpp
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o mainwindow.o src/mainwindow.cpp
src/mainwindow.cpp:61:3: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
message_box.critical(nullptr, "Error", "No boots have been found :\n"+process.readAllStandardError());
^
In file included from src/mainwindow.cpp:12:0:
src/showbootlog.h:53:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
bool sinceFlag=false, untilFlag=false;
^
src/showbootlog.h:53:34: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
bool sinceFlag=false, untilFlag=false;
^
src/showbootlog.h:54:23: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
bool completeJournal=false;
^
src/showbootlog.h:55:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
bool realtime=false;
^
src/showbootlog.h:56:15: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
bool reverse=false;
^
src/showbootlog.h:57:18: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
int maxPriority=3;
^
src/showbootlog.h:58:24: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
int numberOfBytesRead=0;
^
src/showbootlog.h:59:26: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11
QString identifierFlags="";
^
src/mainwindow.cpp: In member function ‘void MainWindow::on_listBootsButton_clicked()’:
src/mainwindow.cpp:61:24: error: ‘nullptr’ was not declared in this scope
message_box.critical(nullptr, "Error", "No boots have been found :\n"+process.readAllStandardError());
^
src/mainwindow.cpp: At global scope:
src/mainwindow.cpp:141:64: warning: unused parameter ‘index’ [-Wunused-parameter]
void MainWindow::on_tableView_doubleClicked(const QModelIndex &index)
^
src/mainwindow.cpp:172:58: warning: unused parameter ‘index’ [-Wunused-parameter]
void MainWindow::on_tableView_clicked(const QModelIndex &index)
^
Makefile:371: recipe for target 'mainwindow.o' failed
make: *** [mainwindow.o] Error 1
So your great program does not compile on LTS Ubuntu version.
Only previous v.0.21 version compiles normally on Ubuntu.
IMHO creating software only for bleeding-edge Arch is not good idea.
Note: first seen on AskUbuntu.
As a user, I want to highlight with some unique color each row that matches some regular expression to be able to make a diagnosis faster.
The proposal would be
Mostly "todos"
Not sure if I am going to fix this, as we only lose a few hundred bytes per Connection and
it's a real pain to ensure the absence of double-free errors. The typical user might not care, even after years...
See for example:
qjournalctl/src/connectiondialog.cpp
Line 127 in 89eb501
I would like to see a Show current boot
button on the main window, since this is usually what I do (I think most people tend to look a the current boot), so as to avoid the boot listing.
If you believe it is a good idea, I can work on implementing it.
E.g. parse output from journalctl -o json
and think of a nice way to display the detailed information
I tried to build qjournalctl on Fedora 31.
$ ./autogen.sh
./autogen.sh: line 3: qmake: command not found
Then I edit autogen.sh and change qmake
with qmake-qt5
. Now I can build.
So qjournalctl should check qmake on system and correct qmake name before building.
Should we open an issue to effectivelly setup appveyor? I have mine ready, but i'd prefer to assciate to your account since you are the owner of the codebase. I can provide you some support when setting it up to avoid this "fix CI" commits btw :) In fact, it would be nice if we coul have automated the release process for both, linux and windows and also connect this with #47 for a better versioning. If you agree
Originally posted by @alacasta in #45 (comment)
Prefix/Squash all "fix CI" commits together to keep the commit history somewhat structured
It would be super convenient if qjournalctl could be launched without having to build it first. There are (too?) many solutions for that:
.deb
etc. packagesThanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.