The Linux From Scratch Desktop Project
Having upgraded to xfce 4.12 I have found that yet again stuff has been broken, apparently by inclusion of dependencies ( runtime or otherwise ) on systemd/gtk3 and I'm fed up with it.
See here: http://www.linuxquestions.org/questi...vt-4175538803/ http://www.linuxquestions.org/questi...it-4175540203/ And so on! So I decided to start this little project to get a working desktop just with packages from LFS/BLFS avoiding as much as possible packages that rely on stuff that is constantly broken by the likes of systemd/gtk3, so no polkit/consolekit etc, where possible (B)LFS packages are used, this is not set in stone s there are some glaring omissions from the BLFS book. If you are NOT using (B)LFS this project will almost certainly not work. This for a GUI desktop only, NOT the underlying system ( xorg/udev etc ). Other distributions have their own customised desktop so why not LFS, so the LFSDesktopProject was born! This software is VERY much alpha software and may not work 'as is' on your set up, so if your computer explodes or the wife runs off with the milkman it's not my fault, you have been warned! The first objective was to find a replacement composite manager from the one supplied by xfce, I chose compton, there doesn't seem to be a compositing manager in BLFS, compton can be found here: https://github.com/chjj/compton/rele...3-10-21.tar.xz It needs libconfig from here: http://www.hyperrealm.com/libconfig/...g-1.4.9.tar.gz Building libconfig: Code:
./configure --prefix=/usr Code:
make Code:
compton -cC -r15 -o.6 -l5 -t5 --backend glx --glx-no-rebind-pixmap -z A compositor of some sort is ESSENTIAL for this desktop. The first job was to set the the wallpaper for the desktop, I have twin monitors and like to have different images on both, so I wrote the setwallpaper app this can be used as is without any desktop ( even from the basic twm installed with xorg ), if you are using another desktop manager like xfce's xfdesktop you need to quit it BEFORE setwallpaper Code:
xfdesktop --quit Download SetWallpaper from here: https://dl.dropboxusercontent.com/s/...r-0.0.4.tar.gz Unpack and build: Code:
./autogen --prefix=/usr Code:
setwallpaper -h Code:
setwallpaper --monitor=1 --monitormode=0 --wallpaper=/home/keithhedger/Wallpapers/311917.jpg --monitor=0 --monitormode=1 --wallpaper=/home/keithhedger/Wallpapers/red.jpg --multimode=1 The second bit was to make the actual desktop app which can be downloaded from here: https://dl.dropboxusercontent.com/s/...p-0.0.6.tar.gz Unpack and build: Code:
./autogen --prefix=/usr https://nodeload.github.com/Ignorant...vil/zip/master This is not the place to go into all it's details however, but to use udevil add --disable-suidhelper to configure/autogen.sh To run lfsdesktop use Code:
lfsdesktop Code:
lfsdesktop --theme gnome Disk icons initially appear in a grid, but can be dragged to new positions on the grid these positions are remembered until you use the --clean switch. Dragging an icon will show a white square as you move the mouse ( click and hold obviously ) snapping to the nearest grid position, just release to move the icon to a new position , you can't drop an icon on another icon. Double clicking the disk icon will mount the disk and open it in the default app set by xdg-open, this was the easy bit, why does xfce still have so many problems detecting and mounting disks! All prefs are set via a simple text file in keeping with the UNIX philosophy, they are stored at '~/.config/LFS' The setwallpaper prefs are updated when the app exits, if something mucks up your root window wallpaper, for instance running xfdesktop and then quiting it will result in a grey screen, just issue the setwallpaper command with no arguments and all the previous settings will be used. The prefs for lfsdesktop ( such as the are ) are at '~/.config/LFS/lfsdesktop.rc' where you can manually set the icon size etc, these prefs will be folded into the lfsdesktop code as switches later on. That's about all for now as I said still very alpha software but lot's to add, suggestions welcome, the main one being what toolkit I should use for a settings editor, right click menu etc, I won't use gtk, qt5 is nice but is a BIG compile and a bit of overkill, wxWidgets, well I just don't like them, lesstif seems OK but not a lot of documentation, any thoughts? Not urgent yet. At the moment I am using a hybrid of xfce with xfwm4, xfce4-panel and lfsdesktop/setwallpaper. Couple of screen shots etc: https://dl.dropboxusercontent.com/s/...booy/scrn1.jpg https://dl.dropboxusercontent.com/s/...aard/desk1.mp4 TO DO Add right click on disk icon to bring up menu for mounting, unmounting and ejecting. Add Icons from files in ~/Desktop. - DONE. Improve event handling. - DONE. Add Settings manager. Add other backends for mounting disks sudo/pmount, will need a gui for getting password. Add WM menu if available to right click. Add SetWallpaper code into LFSDesktop code as an option. Long way off. Add session manager. Add window manager. Add panels. Add panel plugins, minimum logout/shutdown/restart/application menu/page switch/clock/notification area, probably more. Add dock. Add floating widgets? |
Quote:
I'm looking forward to trying out Compton with Xfce. I've previously tried using compiz with Xfce but it just doesn't integrate too well. |
I don't use handbrake, too limiting, I do all my CD/DVD ripping with mplayer/ffmpeg.
The other problem I found with xfce 4.12 is that although it is supposed to be gtk2 one of the main parts needs gtk3 ( garcon if I remember ) I downgraded to 4.10, and as soon as I can I shall get rid of that too. |
Great idea! I use i3 and a handfull of gtk2 apps so I can keep dependency issues to a minimum.
Perhaps not completely on topic but ch6 of the LFS-book contains libcap and gperf. Only coreutils can use libcap (compiles fine with --without-libcap) and nothing I know of needs gperf (introduced in LFS 7.6). Then I also build MesaLib without llvm. A stripped LFS might become useful as it only gets bigger lately. |
Hey Keith have you tried using the loginkit systemd shim kit along with ConsoleKit2? I have sources for loginkit-0.1 up in my Slackworks repo that can be easily downloaded. The install process is in the SlackBuild if you need it. Not sure if it will help, but it might.
As far as GTK3 stuff for Xfce, yes, some of it works, but not all of it. Garcon should still work with GTK2 (version 0.5.0 should anyway). Also, loginkit does need Linux-PAM, but there is a patch I have if you don't have PAM. You also MIGHT want to consider drafting a ConsoleKit boot script for sysvinit as well. |
The whole idea of this is to get away from anything systemd'iefied, and console kit although it works relies on other stuff to work properly, you cant for instance use consolekit with xfce-session without dbus and you still get no disk icons without gnomes gvfs even though xfce has its own version of gvfs ( thunarvfs or whatever ) which doesn't seem to do anything.
I want to get away from all these dependencies especially the ones tied to gnome and hence ultimatly to systemd and its ilk. And yes the blfs book says xfce can be built without gtk3 but that is just not true, garcon ( I think its garcon, I'm not at my mavchine at the moment, so I could be mistaken ) is configured to use gtk3 only I'm happy to accept suggestions and even code ( anyone fancy writing the window manager :) ), but not if it involes adding anything to do gtk3/systemd/gnome. |
That might be a challenge. I know a lot of stuff now is all intertwined with DBus and such.
Getting systemd stuff out is painful, often a headache, but the shims are one way of working around systemd. Unfortunately, systemd-shim itself requires systemd to even build, so that went off the table on my end also. I ended up with Devuan's Loginkit out of curiosity and necessity. Using hald anymore requires extreme patching to glib's files, and tons of roll up patches to hald itself to build at all. I know FreeBSD is trying to move more onto devd and some various new internals as well. That might be one route for some functionality, but its a God awful damn bloody mess regardless how you look at it. |
Well so far I have a 45% working desktop only using some commandline apps from util-linux, xdg for opening and eudev for device stuff.
I will do another release in a day or so, but so far all disks, fixed and removable usb and dvd/cdrom etc are detected and can be mounted, files in the~/Destktop folder are also shown, with the corrrect icon ( mostly ) and can be double clicked to open them with the default app. Repositioned icons are remembered and in the case of ejectable disks position is remembered on re-insertion. Watch this space! |
New update to LFSDesktop here:
https://dl.dropboxusercontent.com/s/...p-0.0.5.tar.gz Files from ~/Desktop now shown, double clicking them opens in default app. MUCH less thrashing of the harddrive, everything now kept in memory. Icons change to reflect a new mimetype, for instance adding '#!/bin/bash' to the top of a text file turns the icon from a text file icon to a shell script icon. Cache data has changed format so use Code:
lfsdesktop -c Next bit to do add context menu, decide to go for lesstif but got to learn it first! |
New update to LFSDesktop here:
https://dl.dropboxusercontent.com/s/...p-0.0.6.tar.gz Screenshot: https://dl.dropboxusercontent.com/s/...xd8u/scrn2.jpg 0.0.6 Now shows 'Computer' icon for root system, and no longer mountable/unmountable from right click. Uses kernel 'getmntent' routines for determining mounted disks and mount point instead of external command. More stuff in memory instead of thrashing hardrive. Folded Desktop files into disk arrays. Major code clean. Symlinks handled properly in ~/Desktop. Pop up menu disappears if you move pointer out of window. Fixed Segfault trying to eject some disks. Added right click on disk to mount/unmount/eject. |
I'm using 4.12 with my lfs/blfs and it works fine. For me it seemed to work better if I deleted all the .config, .cache etc and boot up into it fresh where it asks if you want to start with the default layout. I know it's a pain to re-setup your desktop but that seemed to work for me.
|
I don't deny that xfec 4.12 can be made to work, I just objet to the path xfce is taking, hence this project, I'm not saying that other desktops don't work or are no good, just want to add an option for people that feel they don't want to have to be dictated to by the likes of the systemd/gtk/gnome devs. Xfce I assume gets some income from marketing, donatations etc and so have vested ( monetary ) interest in the status quo, this is just another option.
|
on my gentoo system i tried to use xfce4 again and i have systemd and its still a broken mess. I think ill have to abandon them again... I used to use it all the time before they adopted dbus and went off the deep end.
|
Hence this project, watch this space as I will be updating the desktop in a day or two, with custom icons for files and disks and an application menu ...
|
For some odd reason the 'Edit' button for the original post has dissapeared so I'll put the update here.
New LFSDesktop here: https://dl.dropboxusercontent.com/s/...p-0.0.7.tar.gz Quite a few improvements in this one: 0.0.7 Custom icon path dialog now pops up in centre of window. .desktop files now show proper icon for theme. Added 'Open' option to right click menu. Added remove custom icons. Added set custom icons. Added 'appmenu' resources file to /etc/X11/app-defaults. Application menu now pops up at mouse and dissapears if mouse is moved out of window. Added 'Applications' menu. Extra screen shots here: https://dl.dropboxusercontent.com/s/...xjp3/scrn3.jpg https://dl.dropboxusercontent.com/s/...4m8w/scrn4.jpg https://dl.dropboxusercontent.com/s/...r5sw/scrn5.jpg https://dl.dropboxusercontent.com/s/...huup/scrn6.jpg https://dl.dropboxusercontent.com/s/...jnx8/scrn7.jpg https://dl.dropboxusercontent.com/s/...ipp9/scrn8.jpg Right clicking in the root window will now pop up an applications menu built from the desktop files in /usr/share/applications, there is no need for any fancy configs for this menu as it is built dynamically. There is an xresources file now installed in /etc/X11/app-defaults called appmenu which will allow you to set colours etc of the pop-ups, have a look at the screen shots. You can set a custom icon on any of the desktop files but be aware it must be an absolute path to the icon. To get rid of the pop-ups just move the mouse out of the window ( except for the custom icon dialog, you have to either click Ok or Cancel ). Also be aware that if you rebuild the desktop cache with the '-c' option you will will lose and custom icons, .desktop files will of course go back to displaying their own icon. Mostly adding/removing custom icons has an immediate visual effect except for removing the custom icon on a .desktop file this will change the files to the generic icon until you restart the desktop. I am now using lfsdesktop as my default and so far it seems prety stable, so this will be the last update for a little while while I work on the other bits, WM etc. Enjoy! |
Update to version 0.0.8 here:
https://dl.dropboxusercontent.com/s/...p-0.0.8.tar.gz 0.0.8 Added basic manpage. Added 'tidy' option to clean stale files from cache, custom positions/icons unnaffected. Selection from 'Applications' popup now obeys 'Terminal=..' option in desktop file. Added 'showextension' to config options Added "show-extension" command opt to show file extensions ( default no show ). Added 'termcommand' to config options Added "term-command" command opt to set the command to use when opening desktop file in terminal. Fix for some window mangers not respecting 'keep below' and bringing the desktop to the front (openbox), now stays underneath. You can now hide/show the file extensions from files in the desktop, fixed an annoying bug where the desktop was being brought to the front by some window managers, using the -t option will delete all cache files except those in use, probably should do this every once in a while. Both the Application menu selections and desktop selections either via double clicking or 'Open' on a .desktop file now honors the use of the 'Terminal' option to launch the application in the user specified terminal which defaults to 'xterm -e' but can be set in the prefs or on the command line. Definitely the last update for a bit as I have now started work on a window manager, based on 'wind' from sourceforge, but its slow going, also the wife wants me to decorate :( |
I'll have to give this a try. Looks awesome!
|
I am using it myself all the time seems fairly stable, I think it can now be considered at least beta software as it's mostly fully functional, couple of minor annoyances but I'll let you find them :)
|
2 Attachment(s)
Must stop procrastinating over this window manager! Anyway another update here:
https://dl.dropboxusercontent.com/s/...p-0.0.9.tar.gz Changelog: 0.0.9 Added "--enable-3dwidgets" to configure script to allow linking against Xaw3D ( default is link against Xaw7 ). Updated manpage. Added 'ignore' to command options. Added 'ignores' list to prefs to not show disk who's label is in the ';' delimited list. Added fontface/forecolour/backcolour to command line args. Added backcolour option to prefs. Added forecolour option to prefs. Added fontface option to prefs. Icon labels now use cairo text for rendering anti alias text. If you have installed Xaw3d you can use '3d' widgets as in the screen shots: Attachment 18773 Attachment 18774 You can now either via the command line or the prefs file choose to not display the icon for a specific disk ( via label ) Cairo text is now used for the icon labels which is much nicer. Really, REALLY must start on the WM! |
1 Attachment(s)
Very first release of the window manager here:
https://dl.dropboxusercontent.com/s/...r-0.0.4.tar.gz Attachment 18797 0.0.4 Drag window off of left/right edge cycles desktop. Desktop windows now stay below and don't get raised. Removed x11font code, now only xft fonts used. Code clean. 0.0.0-0.0.3 First commits. Lots to do on this, no iconize/maximize buttons yet, though you can do some stuff via the keyboard, see the man page for that. Want to make the window borders compatable with ( at least ) xfwm4, mainly as I've got a lot of wm themes in that format and I'd like to keep them. Only deps are X11 etc no gtk or other crud. Build: Code:
./autogen.sh --prefix=/usr http://sourceforge.net/projects/windwm/?source=navbar |
Minor ( but important ) update to LFSDesktop here:
https://dl.dropboxusercontent.com/s/...-0.0.10.tar.gz 0.0.10 Fixed default terminal command not being set if not specified on command line ( defaults to "xterm -e" ). Update to LFSWManager here: https://dl.dropboxusercontent.com/s/...r-0.0.5.tar.gz 0.0.5 All windows of type desktop now stay below windows with below state set regardless of creation time. Fixed putting windows below. Fixed default cursor not being set. Made windows of type NET_WM_WINDOW_TYPE_DESKTOP 'sticky'. Also this: https://dl.dropboxusercontent.com/s/...3d/xinitrc.lfs Is a simple xinitrc script tha I use to start everything up, use it as a spring board for your own startup. More to come! |
LFSWManager update here:
https://dl.dropboxusercontent.com/s/...r-0.0.6.tar.gz 0.0.6 Fixed widows above all otheres changing state. Fixed 'sticky' windows changing state. Fixed dragging certain application windows to new desktop pulling all other windows of the app there. Added 'ALT-!' key binding to group all application windows of focused application into current desktop. Removed some redundant code. Redone man page. Redone printing help. Added '-?' and '-h' to commandline options. Added '-p' option to command line to set window placement, 0=Smart( Screen ), 1=Under mouse ,2=Centre on monitor with mouse( default ), 3=Screen centre, 4=Smart( Monitor with mouse ). Added multi monitor support for window placement. Behaving much more like a window manager now, stick windows and having multiple windows 'above' or 'below' others now works properly even when the state is 'toggled' back and forth. Time to start on iconize/full screen buttons etc. |
LFSWManager update here:
https://dl.dropboxusercontent.com/s/...r-0.0.7.tar.gz 0.0.7 Started handling MOTIF_WM_HINTS properly. Added 'maximize' button. Added number of desktops to prefs file. Added font and size to prefs. Added placement to prefs file. Added prefs file, for fore/back colours. Improved 'dock' type window handling but still needs tweeking. Mouse wheel now moves between desktops. Above/Below code tightened up. Started adding the window decorations, decided to get functionality before worring about the eye candy, but that will be comming soon. You can now use a prefs file instead of setting everything on the command line, the prefs file is ~/.config/LFS/lfswmanager.rc, here's mine: Code:
focusedfore white The window manager is slowly getting there and so far with both the desktop and window manager no gnome/gtk stuff just X11 libs and cairo. When the WM is a bit more 'every day' usable I will be moving the application popup menu from the desktop to the window manager. |
Update to LFSWManager here:
https://dl.dropboxusercontent.com/s/...r-0.0.8.tar.gz 0.0.8 Added 'Shade' window button, bit of a kludge needs improving. More compliance with extended window manager hints standard. Code clean and simplify. Plays better with pagers etc, ie cairo-dock/xfce-panel can now min/max/close/show window from popup menu and shows iconized thumbnail. Added 'Minimize' button. Windows now have a ( almost ) full complement of buttons, shade, minimize, maximize and close, never really used the right hand menu button but I will probably put it in next. Functionality is now pretty much how I want it got some tweaking to do and then the eye candy. |
New update to LFSWManager here:
https://dl.dropboxusercontent.com/s/...r-0.0.9.tar.gz 0.0.9 Added -l option to command line to set number of updates to window when resizing, 0=no updates until mouse button released, >0 number of updates defaults to 5. Updated man page. Fixed dragging windows to new desktop on multiple monitors of different widths. Dragging windows to next/previous desktop now works properly. Code clean. Fixed button spacing when not all buttons are used. Dragging windows off of the left or right edge to flip to new desktop now works much better, flip occurs when pointer reaches edge instead of when window left/right reaches edge, you can also continue dragging the window without having to re-grab the window. Resizing updates can now be set on the command line or prefs file, a larger value means less updates but more responsivness, defaults to 5 which is about right, a value of 0 will not update the window until the mouse button is released. Screen shot with all the new butons: https://dl.dropboxusercontent.com/s/...v4o/scrn12.jpg Can't embed the image as I seem to have run out of alloted attachment space :( Any idea how I can up this anyone? Minor mistake with the archive, if you window doesn't update you need to redown load and recompile - sorry. |
New update to the window manager here:
https://dl.dropboxusercontent.com/s/...-0.0.10.tar.gz Screen shot here: https://dl.dropboxusercontent.com/s/...409/scrn13.jpg Now added themes to LFSWmanager, I have decided to use xfwm4 themes as they are one of the easiest to use as they consist mostly of images with very little in the way of configuration files although there is some I haven't yet implementd them, ie no setting the button spacing, title alignment etc. But watch this space! Also as I have been using xfce for some years I have a large collection of themes and I didn't want to have to redo them all. One caveat with the xfce themes, some old themes use an xpm image with a png overlay, this isn't supported as most recent xfce themes use either just pngs or just xpms, so if you try a theme and it doesn't display you have been told! ;) You can set the theme in the prefs or on the command line, see the manpage. If no theme is set on the command line or in the prefs file then the old style is used. To do: Take into account the theme resource file contents. Find theme path from name rather than having to use full path to theme. Move application menu from LFSDesktop to LFSWManager. Add app icon to title bar? Add 'Menu' button to title bar? Install a default theme? Change log: 0.0.10 Added 'theme' option to prefs. Added '-T' option to command line to set path to theme. Fixed incomplete button definitions on some themes. Adjusted window theme parts. Added themed buttons. Added xfwm4 themes ( still needs tweaking but mostly works ). Added '-w' option to write out prefsfile. Removed old debug code ( assert's ). Maximize now maximizes to monitor of window. |
|
Update to LFSWManager here:
https://dl.dropboxusercontent.com/s/...-0.0.12.tar.gz Added left/right/bottom/botom left/bottom right resizers. Started to add the themerc file data when using a theme. Usual code clean, update manpage etc. 0.0.12 Added left edge resize. Added right edge resize. Added bottom edge resize. Added bottom left corner resize. Added bottom right corner resize. Removed useless non-fatal xlib complaints when not in debug mode. Fixed trying to draw border/buttons on undecorated windows. Fixed minor visual bug placing buttons when themerc button_offset=0. Added debug checkpoints to most functions ( not used unless --with-debug-level=1 ). Added beter debug code. Removed some unwanted traps. Added '--with-debug-level' to configure 0 - No debug, 1 - write to stderr and logfile ( default 0 ). Shaded windows can now only be stretched horizontally. Tweaked shade function, to not unnecessarily draw sides/bottom when shaded. Redone button updates, now uses shaped windows. 0.0.11.1 Critical bug fix. 0.0.11 Done button_offset, active_text_color, inactive_text_color. Adding options from themerc. |
New updates to the project!
First off there is a small library that needs to be installed first as this will provide the various widgets for the desktop, window manager and the soon to come panel and dock, I have decided to drop thje use of the athena widget set as although they are always available and pretty lightweight they are awkward to theme and don't look very good. At the momenty the toolkit only includes three widgets and some general routines, this toolkit is in noway meant to be a full fleged widget set, just the ones you need to run the desktop. Download the tool kit here: https://dl.dropboxusercontent.com/s/...t-0.0.5.tar.gz Build and install the same as the other bits with Code:
./autogen.sh --prefix=/usr 0.0.5 Fixed double free of line edit data. Added keep above and sicky windows. Fixed window gravity not working. Fixed pager not showing window. Now supplies relevent event to class event handlers. Event hanlers now return a bool - true=event handled, false=pass it along. Callbacks now return a bool. Labels now default to centre. Removed linking to unused libs. 0.0.4 Line edit now scolls correctly. Added paste ( ctl-v ) to line edit. Added cursor keys to line edit. All button clases now inherit from base gadget class. Added line edit class. Added base gadget class. 0.0.3 Fixed not setting proper colours. Added menuitem font and colours. Fixed random setting font segfault. Fixed font not being set. Added setting global colours previously loaded from prefs file to button classes. Added setting global colours from prefs file to window class. 0.0.2 Removed setting colours on create button class. Added set colours for menuitems. Added init buttons to set default colours. Added buttons inherit colours from main window. Added menu button. Added general purpose button. Added mainwindow. This MUST be installed first, you may also need to run the 'ldconfig' command. N.B. When using the entry box in the custom icon dialog please note that full editing is not available, ie you cant copy/paste with the mouse but you can use ctrl-v to paste the clipboard, home/end work as expected, line edit functioanlity will be expanded on later. Update to LFSDesktop here: https://dl.dropboxusercontent.com/s/...-0.0.11.tar.gz Changelog 0.0.11 Updated licence stuff at top of file. Removed externel icon dialog box. Removed unneeded libs. Dialog boxes use the new toolkit. Added LFSToolKit library. Added Xft lib. Made showing 'Appmenu' on right click on desktop optional, default=noshow, now moved to the window manager as it should be. Update to LFSWindowManager here: https://dl.dropboxusercontent.com/s/...-0.0.13.tar.gz Changelog 0.0.13 Command line can overide ( some ) theme settings. Added -k option to prevent reading of options from ~/.config/LFS/lfstoolkit.rc. Added -X option to command line to set text/button colour. Text colour and menu buttons now use the same colours. Can now set the menu button colour when not using theme. Butons on inactive windows now use inactive colours. Window name now in white same as buttons. Redone non-themed window name. Removed unneeded creation/deletion of GC's. Redone non-themed buttons. Redone non-themed window borders. Fixed minor refresh bug in appmenu. Appmenu now uses global colours from ~/.config/LFS/lfstoolkit.rc Added 'Appmenu'. Added linking to LFS Tool Kit library. N.B. Some of the naming of the configs have changed so please alter your config file, example: Code:
placement 2 Code:
window_normal #5E3300 Screen shots of the new widgets here: https://dl.dropboxusercontent.com/s/...ncn/scrn14.jpg https://dl.dropboxusercontent.com/s/...o5m/scrn15.jpg Enjoy! |
|
Quote:
|
I don't know why anybody wants GTK anyway. Bloated now, it is a classic example of a house that's never done. At some point you have to stop adding features and put software in maintenance mode.
|
Quote:
|
qt5 does take a looooonnnngggg time to compile I admit but it is worth it I am slowly swapping to qt5 apps but again they also take a bit longer to compile
|
QT written in C++, GTK written in standard C, that's why the massively different compile times. The OO paradigm is as conceptually far away from how processors actually work as Pluto. C, on the other hand, is more like Mars. It's different, but at least procedural/imperative, just like machine language. I read a quote from Torvolds once where he explained what happened when he tried C++ and he couldn't get predictable assembly of any kind out of the compiler.
I'm not saying C++ doesn't have uses. But, I do like to point out that all that structure costs a great deal to implement. |
Quote:
You pay your money an takes your choice, c++ has advantages over c, c has advantages over c++, I tend to use a mix, c for speed c++ for eass of use. |
Quote:
|
Quote:
|
Lots of updates this time!
To start off with the Setwallpaper has been renamed to LFSSetWallpaper to keep in line with the other parts of this project, which means the config files have changed name too, to, yes you guessed, lfsmonitors.rc and lfssetwallpaper.rc, other than the name change no changes to the actual code but it still needs to be reinstalled, make sure you uninstall the old version first. Just a reminder if you have come to this thread without reading the start, all modules are compiled/installed the same ie ( after untaring the source and CD'ing to the extracted folder ) Code:
./autogen.sh --prefix=/usr https://dl.dropboxusercontent.com/s/...r-0.0.5.tar.gz Next install the LFSToolkit, please uninstall the old version first, here: https://dl.dropboxusercontent.com/s/...t-0.0.7.tar.gz Quite a lot of changes here, please note you MUST install the toolkit before the rest of the modules, you may have to manually run ldconfig if you have installed to a non standard location Code:
sudo ldconfig Added reload colours to gadget class. Added hide window. Fixed race condition if mouse is in line edit gadget on start up. Added getgeom to gadget class. Fixed getgeom in window class not getting global values. Added get buffer to line edit class. Moved load font to lib class. Added show window to window class. Added get/set label to base gadget class. Added get stick state to window class. Fixed not setting window active in constructor. Added Label class. Added auto colour for button labels chhoses black/white depending on ( guessed ) brightness. Fixed manual window resize event loop. Fixed not getting font colours from loaded vars. Added load vars from default rc file when creating window, defaults true. Minor revision bump. Made global names in lib class private. Added default colour/font names. Added set/get active to window class. Fixed is Active not being set on window class constructor. Removed redundant init routines. Code clean. Added LFSTK_lib class. Cursor set to end of line in line edit when first shown. Added inactive states to prefs file. Added 'inactive' state to gadgets. Fixed too many refreshes in line edit. Now install the rest. LFSDesktop here: https://dl.dropboxusercontent.com/s/...-0.0.12.tar.gz 0.0.12 Added '--back-alpha' or '-A' option to command line. Colour specs now the same as the wm and tool kit ie use #RGB insatead of 0xRGBA. Added 'labelalpha' to prefs to set alpha of label indepenent of colour. Removed lfstooolkit prefs code. Updated to use new tool kit. LFSWManager here: https://dl.dropboxusercontent.com/s/...-0.0.14.tar.gz 0.0.14 Theme now uses just a theme name OR a full path to theme. Removed 'k' option. Removed manual load of prefs file from appmenu. Code clean. Updated for new tool kit. NEW STUFF! LFSApplications here: https://dl.dropboxusercontent.com/s/...s-0.0.7.tar.gz 0.0.2 Dialogs now reflect changes in toolkti prefs. Renamed lfsprefsgroup. Renamed lfstkappearance. Added lfsdesktopprefs.desktop Added lfsprefsgroup.desktop Added lfstkappearance.desktop Added lfswallpaperprefs.desktop Added lfswmprefs.desktop Added lfsprefsgroup. Exit from lfsdesktopprefs prints settings to stdout. Apply in lfsdesktopprefs now restarts desktop. Exit from lfstkappearance prints settings to stdout. Apply in lfstkappearance now writes tool kit prefs. Exit from lfswmprefs prints settings to stdout. Apply in lfswmprefs now restarts window manager. Fixed keep above in all prefs dialogs. Added desktop prefs. Added window manager prefs. Added labels. Apply prints config to stdout. Save save to ~/.config/LFS/lfstooltik.rc. Added LFS Toolkit prefs. 0.0.1 First commit of lfs toolkit apps. The above applications at the moment just contain some GUI's for setting the various prefs, .desktop files are installed in /usr/share/applications so you can launch the prefs from athe appmenu, the main one lfsappearance will allow you to launch the others, you can from here create a 'set' which can be quickly loaded allowing you to set all the prefs at one go, just enter a set name in the edit box click 'New Set' and a new set will be created with all the current prefs, to select a different set click the 'Load Set' button and you will get a drop down selection just select what set you want and click 'Apply' to load it, after selecting a set and making changes you need to click update to update the settings in the new set. As you can see the wallpaper settings is greyed out 'cos I haven't doen that one yet! Be aware that there is no check for overwiting an old set with a new set, that will change later, also to delete a set you need to remove it manually from ~/.config/LFS/lfsgroupsprefs, again this is to be done. Some screenshots of the prefs dialogs are here: https://dl.dropboxusercontent.com/s/...groupprefs.png https://dl.dropboxusercontent.com/s/.../deskprefs.png https://dl.dropboxusercontent.com/s/...2a/tkprefs.png https://dl.dropboxusercontent.com/s/...kw/wmprefs.png Still to come: Panels. Dock. Etc. |
|
Why? Trust me I'm a doctor ;)
Ok I'll do some and post them in a day or so. |
As requested
Code:
0d9df7f628c2c1bf8f9f51bad13492f5 LFSApplications-0.0.7.tar.gz |
Oh cool, I'm going to have to look at your code... particularly the WM. My next project is to start playing around with Wayland.
|
From what I gather the internals of wayland are completly different from X so Xlib code probably won't do you a lot of good, but let me know how it goes, I haven't even looked at wayland so don't know how eay/difficult it would be to make a WM for it, also I believe ( but I may be wrong ) that wayland depends on systemd, if so I wont touch it with a 10' battle lance.
|
Quote:
As for Wayland, the reference implementation with the Weston compositor does require systemdik, but people have it running on android and raspberry pi without the Cthulhu tendrils of certain systemd developers being involved. I say that tongue-in-cheek because I don't think systemd is actually malicious. I think some of the people involved in it have ego issues and that the project suffers from the kind of feature-creep that a carpenter's house does. The good part about that is feature creep introduces more and more bugs, which the developers have already shown they are disinclined to fix, and at some point those bugs are going to be exploited. Finally, when that news ends up on cnet, pcworld, arstechnica, etc. it will be all over for the systemd developers who think it should be free to absorb any subsystem in it's path. Just look what happened to OpenSSL. :p As far as libwayland.server, I think its only requirements are KMS in the kernel and udev, which can obviously be eudev on non-systemd builds. |
Oh, and if Wayland will replace X, what better time to start on components that don't require needless integration.
|
I hope you are right about the demise of systemd but I dont think it will be gone anytime soon and though it may not be maliciuos code the devs certainly act that way and I have a certain moral objection to the whole mindset of the systemd/gtk/ubuntu/redhat bunch but this is not the place for a systemd angel or demon ( daemon? ) flame war, it certainly wont be part of any code I write.
|
As a P.S. the window manager is based on this code:
http://sourceforge.net/projects/windwm/?source=navbar But pretty heavily changed now. |
New updates and additions to the the project, it may be a good idea to redownload all the parts and compile install just to make sure you have all the right versions, for convenience I have now uploaded a complete project archive so you can just download this:
https://dl.dropboxusercontent.com/s/...ect-507.tar.gz All the other archives are in this one. Update to lfstoolkit here: https://dl.dropboxusercontent.com/s/...t-0.0.8.tar.gz 0.0.8 Fixed gravity bug in LFSLabelClass. Code clean. Line edit class always draws black on white. XftColours now created on start. Made get listener in gadgets private. Made draw label public. Removed unnecessary overrides of drawlabel. Added move window to window class. Added get monitor count/monitor geom to window class. Added loading monitor data to window class. Added Xinerama dependency. Added 'purge' Makefile target to remove old libs. Added different indicators to toggle button. Added align right to gadget class. Added toggle button. Version bump. The toolkit must be built and installed first. Update to lfssetwallpaper: https://dl.dropboxusercontent.com/s/...r-0.0.6.tar.gz 0.0.6 Added 'Zoomed' (4) to modes. Added 'Scaled' (3) to modes. Fixed tiling overrun problem. Fixed buffer overrun error Zoomed mode will fill the screen by scaling the image to fill the screen keeping the aspect ratio. Scaled mode will do a 'best fit' scale so depending on the proportions of the image you may have borders at the top/bottom or sides, agin the aspect ratio is kept. No changes to lfsdesktop here: https://dl.dropboxusercontent.com/s/...-0.0.12.tar.gz Update to lfswmanager here: https://dl.dropboxusercontent.com/s/...-0.0.15.tar.gz 0.0.15 Updated manpage. Updated to new toolkit. Minor stuff. Update to lfsapplications here: https://dl.dropboxusercontent.com/s/...s-0.0.3.tar.gz 0.0.3 Added extra modes to wallpaperprefs. Fixxed memory alloc segfault. Added wallpaper prefs. Desktop prefs now uses check box for show/hide suffix. Window placement selection in wmprefs now uses drop down. Current set saved at exit. Current set now set in edit box. Redone lfstk dialog. Added set label auto colour to lfstk dialog. Now contains the prefs for setting the wallpaper, bit of a mix up with the version numbers of the older archives this version is correct and is the latest. **NEW** Added lfspanel to project here: https://dl.dropboxusercontent.com/s/...l-0.0.3.tar.gz 0.0.3 Trapped X errors. Added Window list gadget. Added panel positions left/right/centre and fixed. Added panel modes shrink and fixed size. Added multiple panels, use 'lfspanel-1.rc' for panel 1 and call with 'lfspanel 1' etc, lfspanel.rc is main panel call with 'lfspanel'. Made panel gadgets positionable from prefs. Added left/right gadget layout. Added setting position of gadegets on panel via prefs. 0.0.2 Added cpu stats. Added disk i/o stats. Panel now stays above all other windows. Added clock. Updated for new toolkit/. Added logout commands to prefs. Added logout menu. Added appmenu. Added place on monitor number. 0.0.1 First commit of lfs panel. Panel width can be set in the prefs and can be, -1 for full width of monitor, -2 shrink to fit or >0 for absolute size. Panel position can also be set in the prefs and can be, -1 for left position, -2 for centre position, -3 for right position or >0 for absolute position. Panels can be on different monitors, as yet only at the top of the monitor, placement on sides/bottom is to come. Panel height can be set in the prefs. The logout commands are set in the prefs and default to a simple xterm, you will definitely need to set these to suit your own system, an example is in the manpage. Multiple panels can be used just set up a new prefs file for it, see the manpage for details, no prefs app for this yet ( I hate doing prefs gui's! ), Placement of inbuilt gadgets is customizable from the prefs file, gadgets that can be added include: logout menu, clock, disk usage, cpu load, applications menu and window selector. No plugins yet or customizable launchers, to be done! Screenshots of the panel in operation can be seen here: https://dl.dropboxusercontent.com/s/.../panelapps.png https://dl.dropboxusercontent.com/s/...anellogout.png https://dl.dropboxusercontent.com/s/...nelwindows.png All the applications have had their manpages updated ( except for the prefs gui's which don't require them ), please read them first they also contain my email address for bug reports. Hash's Code:
ad1e72cc4723a0655e249a1b8b26cffa LFSApplications-0.0.3.tar.gz |
2 Attachment(s)
New Stuff!!
First update the new toolkit here: https://dl.dropboxusercontent.com/s/...t-0.0.9.tar.gz 0.0.9 Fixed menu button popups appearing on wrong monitor. Added LFSTK_gadgetOnMonitor to gadget class. Improved themed icon search. Adde icon size to menuitemstruct - must be set if adding icon. Added search in /usr/share/icons/gnome when searching for themed icon. Fixed menu button with sub menus not showing icon. Massive speed up looking up themed icon in libclass. Added execute one line command to lib class. Added find themed icon to lib class. Stopped menu going off screen to top/bottom. Stopped menu going off screen to left/right. Speed and resource improvements to menu button class. Menu winow created in menuButton constructor. Cached menuitem lists. Added create pixmaps from file to lib class. Added icons to buttons. Next the desktop here: https://dl.dropboxusercontent.com/s/...-0.0.13.tar.gz 0.0.13 Label is centred in popups if no icon available. Get themed icons for popups from lib class. Made popup button icons themed. Added icons to popup buttons. No longer creates/deletes popup windows every time. Construct popups at start up. Next the panel here: https://dl.dropboxusercontent.com/s/...l-0.0.4.tar.gz 0.0.4 Panels can now be on any edge - 'panelgrav' in prefs PANELNORTH=1,PANELEAST=2,PANELSOUTH=3,PANELWEST=4. Entries now sorted. Added icons to submenus. Added icons to catagorys. Redone appmenu to build window at startup. Added window list on current desktop, 'w' in prefs gadget string. Removed unnecessary strdups. Icons use icons from desktop theme if possible. Refuse to run an empty panel. Updated manpage. Added spacer gadget 'S' ( multiple spacers ARE allowed ). Duplicate gadgets disallowed. Right gadgets now ordered left to right as expected from config string. Fixed segfault when not displaying clock. Removed forced extra spacing. Added Icons to panel buttons. Or the whole thing here: https://dl.dropboxusercontent.com/s/...ect-544.tar.gz Screen shot of the new panel: Attachment 19890 And themed icons in the desktop popups: Attachment 19892 md5sum's a93077afb214aab667658bfc1e19a612 LFSApplications-0.0.3.tar.gz bad642e43f12ed830e8cad7c7968686a LFSDesktop-0.0.13.tar.gz cab087f6c42c8e3607c18847681b53cc LFSDesktopProject-544.tar.gz d7da2f714e3aad18be46d8c883a036f4 LFSPanel-0.0.4.tar.gz 206adcb57eac7636488532c436dfea1c LFSSetWallpaper-0.0.6.tar.gz 5cfacfea858ff8cc9af5feb9479967f5 LFSToolKit-0.0.9.tar.gz 603ca03d5db9fb355ecc8e605ff473e4 LFSWManager-0.0.15.tar.gz As usual after updating the tool kit you MUST recompile all the parts, so best to download the 'LFSDesktopProject' archive. Lots of changes to the panel, you can now have it/them against any edge of any monitor orientaion is adjusted to suit, see the man page for details. Themed icons in buttons on the desktop and from the panel as you can see from the screen shot. TODO: Custom launchers for the panels. Redo the icons with Cairo as XLibs drawing doesn't do semi transparent very well. Pref's GUI for the panels. |
All times are GMT -5. The time now is 07:02 AM. |